Windows 10: BCM43xx S3 resume firmware initialization problem (MacBook Pro 15 mid 2014)

Hel!o!

Seems to be there is a serious bug in BCM43xx adapter firmware (MacBook Pro 15 mid 2014) resulting in failed S3 resume initialization (wake-up from Sleep) under Windows 10.

Detection algorithm:

1. Using Device Manager completely uninstall Broadcom 802.11ac network driver with option "Delete the driver software for the device".

2. Press "Scan for hardware changes" button to detect device instance named as "Network Adapter" and select "View" -> "Show hidden devices" from menu, so you can see only one "Network Adapter" device.

3. Put your computer into sleep mode by selecting "Power" -> "Sleep" from start menu and some times later resume it by pressing space bar for eg. Now you can see another detected (duplicated) "Network Adapter" device instance as active, but the first one becomes inactive. This is because failed adapter firmware initialization on S3 resume.

4. Reboot your computer, open Device Manager again with "View" -> "Show hidden devices" option to see (vice versa) the first "Network Adapter" device instance as active, but another one (duplicated) becomes inactive. As a result you always have annoying problem with wi-fi network connection after sleep mode until reboot.


Of course you can repeat steps with Broadcom 802.11ac network driver installed, it doesn't matter, because the Apple should provide us with firmware update to solve this hardware problem.


Any other ideas?

Best Regards.

MacBook Pro with Retina display, Windows 10

Posted on Jan 12, 2016 1:33 PM

Reply
46 replies

Jan 28, 2016 5:38 AM in response to softhive

1. If you disable sleep/hibernate in Windows, do you get a single instance, after you close/re-open the lid of the MBP? W7/W8.1+ have a lot of bugs in Sleep/Hibernate area. I have seen PnP Failures. There is a very long thread about SD Cards being lost after Sleep/Wake.

2. The second set of links are related to speed, not really a wake-sleep/issue. These issues could stem from environmental issues, they could be hardware issues, they could also be related to OS protocols. For example, AWDL in El Capitan makes the WiFi connection instantiation slower than Mavericks or lower version of OS X, on the same hardware.

3. This does not necessarily imply the situation is perfect. OS X seems to exhibit fewer such issues than Windows on a Mac. Windows on a PC also seems to be different. One option to test would be to run in Windows Safe Mode with Networking and see if changes the behavior.

Jan 29, 2016 5:09 AM in response to Loner T

1. Resume after Sleep (S3 resume) duplicates device instance for Broadcom 802.11ac adapter in Device Manager when I close then open the lid. Resume after Hibernate works fine as I have already described above. But I need Sleep mode working perfect to save SSD resource.

2. jdoupe wrote: "I have an MBP (Retina, 15", early 2013), now with 10.10.4, and I still experience this issue (slow wifi after waking from sleep - wifi speed is fine after full shutdown / re-start)."

Probably after walking from sleep both identical duplicated device instances were initialized simultaneously (main and phantom) that resulted in traffic interference and speed reduce. Could you tell me the exact model name and firmware version for Wi-Fi Airport Card of:MBP Retina, 15" early 2013 and MBP Retina 15" mid 2014 (A1398)?

3. Common speaking about everything is speaking about nothing. So I have provided exact explanation with 100% reproducible test, and pictures. I just need certain solution for certain hardware problem from Apple. By the way, I have one more laptop from Toshiba with Qualcomm Atheros Wi-Fi adapter that works fine after Sleep (S3 resume) without device duplication in Windows 10. Probably the problem is not in Windows, but in wireless adapter firmware, isn't it?

Jan 29, 2016 7:48 AM in response to softhive

softhive wrote:


1. Resume after Sleep (S3 resume) duplicates device instance for Broadcom 802.11ac adapter in Device Manager when I close then open the lid. Resume after Hibernate works fine as I have already described above. But I need Sleep mode working perfect to save SSD resource.

As a test, delete both instances of the adapter after you come out of sleep, scan for hardware changes, and check if you get only one instance and whether it work properly. What SSD resource are you trying to 'save' in Sleep mode?


2. jdoupe wrote: "I have an MBP (Retina, 15", early 2013), now with 10.10.4, and I still experience this issue (slow wifi after waking from sleep - wifi speed is fine after full shutdown / re-start)."

Probably after walking from sleep both identical duplicated device instances were initialized simultaneously (main and phantom) that resulted in traffic interference and speed reduce. Could you tell me the exact model name and firmware version for Wi-Fi Airport Card of:MBP Retina, 15" early 2013 and MBP Retina 15" mid 2014 (A1398)?

There is a single physical device, even if there are two instances of the adapter/driver. It is unlikely that the new instance created has credential information for the same wireless access points as the phantom. This can be confirmed by attempting a connection which should result in a failure from the new instance. The only case it may work is if you connect to open SSIDs without any security/keys. I have a 2013 15-in rMBP and a 13-in 2012 MBP. Are you looking for my information?

3. Common speaking about everything is speaking about nothing. So I have provided exact explanation with 100% reproducible test, and pictures. I just need certain solution for certain hardware problem from Apple. By the way, I have one more laptop from Toshiba with Qualcomm Atheros Wi-Fi adapter that works fine after Sleep (S3 resume) without device duplication in Windows 10. Probably the problem is not in Windows, but in wireless adapter firmware, isn't it?

Is the W10 installation on Toshiba using BIOS or UEFI? Atheros and Broadcom are not the same. I have seen sleep work on many PCs without any issues, and it works on OS X side, without any issues. EFI issues would cause a failure overtime, but that is not the case either. It is the interaction between the S3 Resume and the Windows Kernel. The only real solution is to debug the driver and kernel, and find out why this interaction creates a second instance. On my 2012 MBP, I do not see this behavior under W8.1.

Jan 31, 2016 3:24 AM in response to Loner T

"As a test, delete both instances of the adapter after you come out of sleep, scan for hardware changes, and check if you get only one instance and whether it work properly. What SSD resource are you trying to 'save' in Sleep mode?"

I did that and got duplicated device instance after reboot/poweron, so it's not a solution. It looks like after Sleep mode device initialized differently then after reboot or power on (firmware bug). On Hibernate mode the SSD writes whole 16Gb DRAM data each time that reduces its write cycles resource significantly.


"There is a single physical device, even if there are two instances of the adapter/driver. It is unlikely that the new instance created has credential information for the same wireless access points as the phantom. This can be confirmed by attempting a connection which should result in a failure from the new instance. The only case it may work is if you connect to open SSIDs without any security/keys. I have a 2013 15-in rMBP and a 13-in 2012 MBP. Are you looking for my information?"

As the jdoupe wrote, the problem occures after Sleep mode and disappears after Reboot/Poweron that points to the same behavior as I detected in my case. I'd like to test the same Broadcom wireless adapter in Toshiba laptop to get confirmed evidences of firmware bug, so I need the exact model name and firmware version for Wi-Fi Airport Card of:MBP Retina, 15" early 2013 and MBP Retina 15" mid 2014 (A1398).


"Is the W10 installation on Toshiba using BIOS or UEFI? Atheros and Broadcom are not the same. I have seen sleep work on many PCs without any issues, and it works on OS X side, without any issues. EFI issues would cause a failure overtime, but that is not the case either. It is the interaction between the S3 Resume and the Windows Kernel. The only real solution is to debug the driver and kernel, and find out why this interaction creates a second instance. On my 2012 MBP, I do not see this behavior under W8.1."

Who is responsible for development and bugs of the Apple EFI, the Apple or a customer? In this case the Atheros and the Broadcom are both using the same PCIe interface. My model of Apple Airport adapter has a bug in firmware implementation, but yours probably hasn't. Who must provide corrected firmware update, the Apple or a customer?

Jan 31, 2016 9:53 AM in response to softhive

softhive wrote:


"As a test, delete both instances of the adapter after you come out of sleep, scan for hardware changes, and check if you get only one instance and whether it work properly. What SSD resource are you trying to 'save' in Sleep mode?"

I did that and got duplicated device instance after reboot/poweron, so it's not a solution. It looks like after Sleep mode device initialized differently then after reboot or power on (firmware bug). On Hibernate mode the SSD writes whole 16Gb DRAM data each time that reduces its write cycles resource significantly.

What is the model/controllers of your SSD? If you do not want your SSD to be used, there is a very simple solution. Move the Hiberfil.sys, Pagefil.sys to an external HDD with a fast enough interface. Modern SSDs handle wear-leveling better than older generation SSDs. Page file read/writes are much more taxing on the SSD.



"There is a single physical device, even if there are two instances of the adapter/driver. It is unlikely that the new instance created has credential information for the same wireless access points as the phantom. This can be confirmed by attempting a connection which should result in a failure from the new instance. The only case it may work is if you connect to open SSIDs without any security/keys. I have a 2013 15-in rMBP and a 13-in 2012 MBP. Are you looking for my information?"

As the jdoupe wrote, the problem occures after Sleep mode and disappears after Reboot/Poweron that points to the same behavior as I detected in my case. I'd like to test the same Broadcom wireless adapter in Toshiba laptop to get confirmed evidences of firmware bug, so I need the exact model name and firmware version for Wi-Fi Airport Card of:MBP Retina, 15" early 2013 and MBP Retina 15" mid 2014 (A1398).

The Broadcom may not work in a regular PC due to differences.



"Is the W10 installation on Toshiba using BIOS or UEFI? Atheros and Broadcom are not the same. I have seen sleep work on many PCs without any issues, and it works on OS X side, without any issues. EFI issues would cause a failure overtime, but that is not the case either. It is the interaction between the S3 Resume and the Windows Kernel. The only real solution is to debug the driver and kernel, and find out why this interaction creates a second instance. On my 2012 MBP, I do not see this behavior under W8.1."

Who is responsible for development and bugs of the Apple EFI, the Apple or a customer? In this case the Atheros and the Broadcom are both using the same PCIe interface. My model of Apple Airport adapter has a bug in firmware implementation, but yours probably hasn't. Who must provide corrected firmware update, the Apple or a customer?

This is not EFI, but the interaction between EFI and a Driver, and a specific state transition. Your suggestion that it is an EFI issue, is not quite right. The same EFI works as designed on the OS X side, so why is the EFI an issue?

Feb 2, 2016 11:45 AM in response to Loner T

I have found the bug! Have a look at device instance path before and after Sleep, especially the SUBSYS value.


Device instance path before Sleep:

PCI\VEN_14E4&DEV_43A0&SUBSYS_0134106B&REV_03\60F800FFFF00000100


Device instance path after Sleep:

PCI\VEN_14E4&DEV_43A0&SUBSYS_0112106B&REV_03\60F800FFFF00000100


As far as I have already told it is the S3 resume firmware initialization bug of built-in Apple Airport Adapter. 😎

How long should we wait for a firmware update to correct this issue?

Feb 3, 2016 4:05 AM in response to Loner T

Having decoded the Hardware IDs before and after Sleep we can get more information.


Hardware ID before Sleep (PCI\VEN_14E4&DEV_43A0&SUBSYS_0134106B&REV_03) reported:

Network controller [0280]: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)

Subsystem: Apple Inc. Device [106b:0134]


Hardware ID after Sleep (PCI\VEN_14E4&DEV_43A0&SUBSYS_0112106B&REV_03) reported:

Network controller [0280]: Broadcom Corporation BCM4360 802.11ac Wireless Network Adapter [14e4:43a0] (rev 03)

Subsystem: Apple Inc. Device [106b:0112]


As you can see the Broadcom OEM specific data is correct, but the Apple specific data (SUBSYS) is changed after Sleep (incorrect behavior). The SSID and SVID can be changed either from network controller firmware (most often and correct way), or from S3 bootscript (that probably keeps wrong value). Your OS X ioreg test probably checked only main pair of VID:DID. My Windows 10 test checked complete data and determined the device state as not connected. If you provide me with exact ioreg command line parameters then I will make the test to you also.


I made my clean Windows 10 installation by using the OS X BootCamp Assistance utility. For more information let me know what exactly should I check and where.


PS: As you can see it's certainly the Apple bug.

Feb 3, 2016 10:56 AM in response to softhive

On the second Mac with W8.1, the SubSys does not change across Sleep/Wake, yet there are two instances of the same card. This is an EFI installation of W8.1, not a BIOS W7 installation. The EFI installation has W8.1 OS communicating with the EFI layer directly. If the SubSys does not change on W8.1, it is interesting that it does change on W10. This is why I asked if your W10 installation is UEFI or BIOS. It may be a CSM-BIOS bug, not necessarily an EFI bug.


Ioreg (ioreg -lw0) only returns one instance of the Device, with the 0x134 (board-id) which stays the same across multiple sleep/wake events on the OSX side, which is using the same EFI layer as used by W8.1. The SybSys id does not change. I will check the ioreg on the W8.1 to confirm it matches the board-id.


The S3 boot script using the incorrect value may also be an issue, as you indicate.

Feb 3, 2016 3:08 PM in response to Loner T

"This is why I asked if your W10 installation is UEFI or BIOS. It may be a CSM-BIOS bug, not necessarily an EFI bug."

I hadh't saw an option to select EFI or CSM installation in BootCamp Assistance, and I used MS Windows Media Creation Tool image on USB Flash. Is there a way to check it from installed Windows 10? I don't see blinking cursor in the upper-left corner of display before Windows startup screen, so probably it's EFI mode.


Here is my ioreg test before and after Sleep:

deviceid: 0x43a0

radiorev: 0x42069

chipnum: 0x4360

chiprev: 0x3

corerev: 0x2a

boardid: 0x134

boardvendor: 0x106b

boardrev: 0x2420

driverrev: 0x7155e88

ucoderev: 0x0

bus: 0x1

This thread has been closed by the system or the community team. You may vote for any posts you find helpful, or search the Community for additional answers.

Windows 10: BCM43xx S3 resume firmware initialization problem (MacBook Pro 15 mid 2014)

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.