Contribute
Register

<< Solved >> Bluetooth stopped working after updating to 10.15.1 (BCM943602CS)

Status
Not open for further replies.
Yes, so I'm guessing Apple's BT firmware is not uploaded again on each boot like our Broadcom firmware is using BrcmPatchRAM3. It happens during an update so if it fails your BT hardware is bricked until you flash it again manually.

EDIT: But ultimately a bug in 10.15.1 because a firmware upload failure should not brick your hardware like that. Most likely already fixed in 10.15.2.

Well we all need exceptions to a perceived rule - in this case that 90% of BT adapter problems are USB related. Quite good really, to come across the other 10% and see a successful resolution. Big thanks @headkaze :thumbup:

(@Kittciokas - you still need to look at that USB port configuration! ;) )
 
Well we all need exceptions to a perceived rule - in this case that 90% of BT adapter problems are USB related. Quite good really, to come across the other 10% and see a successful resolution. Big thanks @headkaze :thumbup:

(@Kittciokas - you still need to look at that USB port configuration! ;) )
Yeah, i might do that later (or today, if i'll have mood for it), it's not a major issue, as everything that i need now works. I already spent 5 or 6 days with this Bluetooth issue, it may sound crazy, but all those days were primarily spent to fix this issue - testing USB's, reinstalling OS (and then apps), googling, discussing.
At this time i don't even really know where to start with my SSDT. You suggested to remove FakePCIID_XHCIMux.kext, but as i wrote before, my Keyboard doesn't work without it in Recovery mode. I'm not sure about mouse, it didn't work without FakePCIID_XHCIMux.kext or FakePCIID.kext. So i'm not sure about removing it. (EDIT: of course i might not need it when i'd have correctly edited SSDT, and i always can boot with macOS USB flash drive).
I didn't fully understood this part also:
Your "port-count" values for the EH01, EH02 and 8086:8xxx might be causing problems =

You have 0x08 for EH01 and 0x06 for EH02, but each only has 0x01 port.
You have 0x15 for 8086_8xxx but it only has 0x14 port as max.
What do you really mean by "port-count". As i have 6 port on each - EH01 and EH02. Or do you mean, that there are just 1 PR, so PR counts as port?

Continuing about port count, if we count USB2 and USB3 ports as separate, i have 12 USB2 ports and 5 USB3 ports. So it would be 17 ports total. As i understood, i should count USB3/USB2 ports as a single port.

Some IORegistry screenshots:

Screenshot 2019-11-11 at 23.57.27.png

Screenshot 2019-11-11 at 23.46.12.png


Screenshot 2019-11-11 at 23.56.19.png


I'm also not sure if it's good to discuss USB issues on a topic about Bluetooth, especially since Bluetooth problem wasn't connected to USBs, and it has been resolved.
 
Last edited:
Yeah, i might do that later (or today, if i'll have mood for it), it's not a major issue, as everything that i need now works. I already spent 5 or 6 days with this Bluetooth issue, it may sound crazy, but all those days were primarily spent to fix this issue - testing USB's, reinstalling OS (and then apps), googling, discussing.
At this time i don't even really know where to start with my SSDT. You suggested to remove FakePCIID_XHCIMux.kext, but as i wrote before, my Keyboard doesn't work without it in Recovery mode. I'm not sure about mouse, it didn't work without FakePCIID_XHCIMux.kext or FakePCIID.kext. So i'm not sure about removing it. (EDIT: of course i might not need it when i'd have correctly edited SSDT, and i always can boot with macOS USB flash drive).
I didn't fully understood this part also:

What do you really mean by "port-count". As i have 6 port on each - EH01 and EH02. Or do you mean, that there are just 1 PR, so PR counts as port?

Continuing about port count, if we count USB2 and USB3 ports as separate, i have 12 USB2 ports and 5 USB3 ports. So it would be 17 ports total. As i understood, i should count USB3/USB2 ports as a single port.

Some IORegistry screenshots:

View attachment 435531
View attachment 435529

View attachment 435530

I'm also not sure if it's good to discuss USB issues on a topic about Bluetooth, especially since Bluetooth problem wasn't connected to USBs, and it has been resolved.

Talking about the USB aspect was originally part and parcel of the Bluetooth problem. Now that we've moved on, and that has been resolved, you are right, we should start a new thread. However I see no harm in wrapping-up this "Solved" thread, with me tying-up loose ends. If a problem occurs going forward, then yes, just start a new thread and we can move over to it :thumbup:

So to clarify:

I didn't have access to IOReg' exports as you have privacy concerns (and that's fine) so was unable to see the full picture. I still can't quite see enough to be certain, so I'll just have to go with what I can see.

1) "port-count" - look in your SSDT-UIAC.aml and then check what I said. That's where the mis-matches are. IORegistryExplorer does paint a more complicated picture, I understand that, but that is what we are trying to remedy. Remember "port-count" is actually a bad name because what it really means is the location of the highest port on the controller.

2) Number of configurable ports - A single USB3.0/3.1 port counts as 2x virtual ports because it can be both USB3 AND USB2 depending on which type of device is plugged-in. A USB2.0 port is only 1x port.

According to their web-site, your Gigabyte board has:
4x USB3.0 ports (2x back-panel, 2x internal) on the Intel controller = 8x ports (4x USB2 and 4x USB3)
8x USB2.0 ports (4x back-panel, 4x internal) on the Intel controller = 8x ports

Total 16x Intel ports.

There are also 4x USB3.0/2.0 ports provided by the Renesas chip. These do not figure in the XHC/EHC.

Total 4x ports on PR** or RP** which may work unconfigued or need a kext. Sadly the kext used hasn't been updated for 4-years.

FakePCIID_XHCIMux.kext is often used when there are a lot of USB3.0 ports. Using it will move the USB2.0 element of the USB3.0 ports away from the XHC controller, allowing more USB3.0 ports to be used within the 15-ports. They often appear on 'hubs'.

I have no idea why USB does not work without it in Recovery mode, except to suggest that it is an old kext and simply may not work from within that environment. This happens too with GenericUSBXHCI.kext, used to activate those 3rd-party USB chips like Renasas and ASMedia. It was last updated many years ago. Things have changed.

:)
 
Last edited:
@UtterDisbelief Thank you, didn't have time to fix it yet. I'll look into it in the upcoming days.

Back on the topic: Just a thought i had yesterday - if it's true, and Bluetooth firmware is being updated/flashed on every boot (as i quoted someone before) - wouldn't it brick Bluetooth if you shut down/restart computer during the boot? That's why i doubt that firmware is updated/flashed on every boot.

EDIT:
1. I deleted FakePCIID_XHCIMux.kext and restarted - mouse and keyboard not working.
2. I booted with my Catalina USB flash, deleted my SSDT files in ACPI/patched and added Port Limit Removal Patch and restarted - USB worked, but when i connected Samsung T5 USB3 drive to USB3 port, it connected as USB2.

It seems that FakePCIID_XHCIMux.kext is necessary:
1. For any ports (USB2 and USB3) to work with SSDT.
2. For USB3 ports to work with Port Limit Removal Patch (USB2 works).

So i added my SSDT files and FakePCIID_XHCImux.kext back and removed patch. Everything is back to normal. I'll deal with "port-count" in my SSDT file later.

EDIT 2:
I should have tried disabling HP (USB2) ports, maybe then USB3 would have worked. But i somehow doubt it, as i have 16 ports and i tried two USB3 ports, at least one of them should have been under 15 port limit. And if that Port Limit Removal Patch does indeed remove 15 port limit, it should have worked either way. Besides, if i disabled USB2 ports, my mouse and my keyboard might not have been worked, so i wouldn't even be able to login to check IORegistry.

Either way, i do have a question regarding Port Limit Removal Patch. As i understand, it lets use more than 15 ports on a system. Then why even @RehabMan in his SSDT guide suggests to use this patch for port discovery and then to disable some of the ports in order to be able to check if there isn't more ports (over 15 port limit).
It should be EITHER:
1. Use Port Limit Removal Patch which, in theory, should allow discover all ports, OR...
2. If you do not use the patch - disable already discovered ports in order to discover if there is more ports.

EDIT 3: I don't know if i remembered correctly, but Port Limit Removal Patch should Inject all ports. I guess, inject as many, as possible, inside a 15 port limit. Then why is it called "Port Limit Removal Patch"? It should be "USB Port Injector Patch" or something like this.
 
Last edited:
So i partially fixed my SSDT file - changed HUB1 port-count to 6 (it was 8 before, i mistakenly entered 8, because highest number port there was HP18 (i thought there were 11-18 ports which would be = 8 ports), but there were no HP16 and HP17).

I kept HUB2 port count of 6.

I changed EH01 and EH02 port counts to 1.

I tried changing 8086_8d31 count to 16 and 17 (Renesas hub has it's own HP15/SS05, which makes it 17 ports), but then USB3 devices would not be detected. When i entered port count to 21 - USB3 devices successfully shows up. I didn't try 18-20 numbers, but it doesn't matter. Now i have such configuration (i attached to the post), and my USB ports under Hackintool looks even worse. I don't know how to hide all those HS* ports.

Screenshot 2019-11-15 at 00.21.13.png


I tried numbering ports 1-6 (in EH01 and EH02). And 1-5 under 8086_8d31. When i changed HP18 port number to 6 - it stopped working, when i named it back to 8 - bluetooth came back.

I also attached *.dsl file separately.
 

Attachments

  • patched.zip
    2.1 KB · Views: 74
  • SSDT-UIAC-ALL.dsl
    6 KB · Views: 80
You get that when you run (note the addition of -R)?:
Code:
sudo dfu-util -R -U backup.dfu
If so then I don't know why it's stuck in DFU mode like that and we shouldn't attempt to flash the firmware again unless we know the Product ID of your hardware.

EDIT: BCM943602CS is Product ID 0x8290 so run the following:
Code:
sudo dfu-util -R -D /System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothUSBDFU.kext/Contents/Resources/20703_8290.dfu

Any help please for my issue?

Product ID: 0xf007
Vendor ID: 0x05ac (Apple Inc.)
Version: 1.68
Manufacturer: Broadcom Corp
Location ID: 0x14510000

Sorry, solved issue but don’t know how to.
 
Last edited:
Sorry, solved issue but don’t know how to.
If you need to reflash then you need to know the actual Product ID (0xF007 is DFU mode).
 
for what its worth, this is what I have and no issues, mine is from a 2015 Mac Book Pro.

Product ID: 0x828f
Vendor ID: 0x05ac (Apple Inc.)
Version: 1.50
Manufacturer: Apple Inc.
Location ID: 0x14530000

Looks like your Product ID is the problem
 
dfu-util not working with 10.15.3?
# sudo dfu-util -U backup.dfu
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/

dfu-util: No DFU capable USB device available

sudo dfu-util -l
dfu-util 0.9

Copyright 2005-2009 Weston Schmidt, Harald Welte and OpenMoko Inc.
Copyright 2010-2016 Tormod Volden and Stefan Schmidt
This program is Free Software and has ABSOLUTELY NO WARRANTY
Please report bugs to http://sourceforge.net/p/dfu-util/tickets/
 
I got it to work

I have my kexts installed in /L/E, not in EFI/kexts/Other

I made several different attempts:
  1. Removed all Brcm*kexts and rebooted - >no Bluetooth device recognized
  2. Removed AirportBrcmFixup.kext -> Bluetooth not working
  3. Restored all Brcm*kexts, and AirportBrcmFixup.kext - EXCEPT BrcmPatchRAM2.kext - Bluetooth device seen, turned it on, all all devices connect.
So let me summarize. In /L/E I have:

AirportBrcmFixup.kext
BrcmBluetoothInjector.kext
BrcmFirmwareRepo.kext
BrcmPatchRAM3.kext

I do NOT have BrcmPatchRAM[1,2].kext. I do NOT have BrcmNonPatchRam*.kext.

In the end this makes sense to me as Catalina needs BrcmBluetoothInjector.kext, and ONLY one, the latest, PatchRAM3.


Thanks for your help! works like a charm .....running 10.15.3.
 
Status
Not open for further replies.
Back
Top