Contribute
Register

BrcmPatchRAM - Upload firmware into Broadcom Bluetooth USB devices

Status
Not open for further replies.
My Bluetooth dongle is a GMYLE. According to OSX's System Information the Vendor ID is: 0x0A5C, Product ID: 0x21E8 and chipset: 20702A3

When I install BrcmPatchRAM2 and BrcmFirmwareRepo.kext in S/L/E I end up with a black screen (the computer is still active), after a reset (and thus a reboot) I consult console and this is the report:

Code:
10-03-16 22:14:16,000 kernel[0]: BrcmPatchRAM2: Version 2.2.3 starting on OS X Darwin 15.3.
10-03-16 22:14:16,000 kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
10-03-16 22:14:19,000 kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: BrcmPatchRAMResidency does not appear to be available.
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: BrcmFirmwareStore does not appear to be available.
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: USB [5CF370778C6D v274] "BCM20702A0" by "Broadcom Corp"
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: unable to find disabled BrcmFirmwareStore personality.
10-03-16 22:14:22,000 kernel[0]: BrcmPatchRAM: Loaded compressed embedded firmware for key "BCM20702A1_001.002.014.1502.1764_v5860".
10-03-16 22:14:22,000 kernel[0]: BrcmPatchRAM: Decompressed firmware (30360 bytes --> 71148 bytes).
10-03-16 22:14:22,000 kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
I'm using the latest download from bitbucket: RehabMan-BrcmPatchRAM-2016-0205.zip
Any ideas how to fix this?

Thanks,
ed
 
My Bluetooth dongle is a GMYLE. According to OSX's System Information the Vendor ID is: 0x0A5C, Product ID: 0x21E8 and chipset: 20702A3

When I install BrcmPatchRAM2 and BrcmFirmwareRepo.kext in S/L/E I end up with a black screen (the computer is still active), after a reset (and thus a reboot) I consult console and this is the report:

Code:
10-03-16 22:14:16,000 kernel[0]: BrcmPatchRAM2: Version 2.2.3 starting on OS X Darwin 15.3.
10-03-16 22:14:16,000 kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
10-03-16 22:14:19,000 kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: BrcmPatchRAMResidency does not appear to be available.
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: BrcmFirmwareStore does not appear to be available.
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: USB [5CF370778C6D v274] "BCM20702A0" by "Broadcom Corp"
10-03-16 22:14:20,000 kernel[0]: BrcmPatchRAM2: unable to find disabled BrcmFirmwareStore personality.
10-03-16 22:14:22,000 kernel[0]: BrcmPatchRAM: Loaded compressed embedded firmware for key "BCM20702A1_001.002.014.1502.1764_v5860".
10-03-16 22:14:22,000 kernel[0]: BrcmPatchRAM: Decompressed firmware (30360 bytes --> 71148 bytes).
10-03-16 22:14:22,000 kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
I'm using the latest download from bitbucket: RehabMan-BrcmPatchRAM-2016-0205.zip
Any ideas how to fix this?

Thanks,
ed

Your logs indicate BrcmFirmwareRepo.kext is installed incorrectly...

You should check for kernel cache problems:
Code:
sudo touch /System/Library/Extensions && sudo kextcache -u /
 
Your logs indicate BrcmFirmwareRepo.kext is installed incorrectly...

You should check for kernel cache problems:
Code:
sudo touch /System/Library/Extensions && sudo kextcache -u /

Code:
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Trackpad.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Mouse.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Keyboard.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Controller.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LPCSensors.kext
kext file:///System/Library/Extensions/JMicronATA.kext/ is in hash exception list, allowing to load
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext IOAHCIBlockStorageInjector.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext GPUSensors.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext FakeSMC.kext
kext file:///System/Library/Extensions/fabio.kext/ is in hash exception list, allowing to load
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext CPUSensors.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext AttansicL1eEthernet.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext ApplePCIIDE.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleHDA.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext ACPISensors.kext
Ok, done. But now I don't have a bluetooth device, while the dongle is inserted (both at boot and now)...

Edit: after I plugged the device in a different port I can report the following:
Firmware Version: v14 c5860

So that's working :)
Now getting Handoff to work, because:
Code:
Bluetooth Low Energy Supported:    Yes
  Handoff Supported:    No
  Instant Hot Spot Supported:    No
In clover I have:
Code:
<dict>
                <key>Comment</key>
                <string>10.11.dp1+ BT4LE-Handoff-Hotspot, credit RehabMan based on Dokterdok original</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                SIX/dEdIiwc=
                </data>
                <key>Name</key>
                <string>IOBluetoothFamily</string>
                <key>Replace</key>
                <data>
                Qb4PAAAA60Q=
                </data>
            </dict>
Or.... is this not possible because my BCM4322 is loaded by AirPortBrcm4331 and not AirPortBrcm4360?
 
Code:
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Trackpad.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Mouse.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Keyboard.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Controller.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LPCSensors.kext
kext file:///System/Library/Extensions/JMicronATA.kext/ is in hash exception list, allowing to load
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext IOAHCIBlockStorageInjector.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext GPUSensors.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext FakeSMC.kext
kext file:///System/Library/Extensions/fabio.kext/ is in hash exception list, allowing to load
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext CPUSensors.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext AttansicL1eEthernet.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext ApplePCIIDE.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleHDA.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext ACPISensors.kext
Ok, done.

The output shows that neither BrcmPatchRAM2 nor BrcmFirmwareRepo are installed. Or the device itself is not active on the USB bus (so no reason for the kexts to load... and therefore, no reason for them to be included in kextcache).
 
Now getting Handoff to work, because:
Code:
Bluetooth Low Energy Supported:    Yes
  Handoff Supported:    No
  Instant Hot Spot Supported:    No
In clover I have:
Code:
<dict>
                <key>Comment</key>
                <string>10.11.dp1+ BT4LE-Handoff-Hotspot, credit RehabMan based on Dokterdok original</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                SIX/dEdIiwc=
                </data>
                <key>Name</key>
                <string>IOBluetoothFamily</string>
                <key>Replace</key>
                <data>
                Qb4PAAAA60Q=
                </data>
            </dict>
Or.... is this not possible because my BCM4322 is loaded by AirPortBrcm4331 and not AirPortBrcm4360?

Handoff requires a patch to IOBluetoothFamily. I can't verify you entered the patch correctly in your config.plist without seeing the entire file.

Make sure you boot without caches and rebuild cache (Clover can only patch kexts it loads).

See here: http://www.tonymacx86.com/network/104850-guide-airport-pcie-half-mini-v2.html
 
The output shows that neither BrcmPatchRAM2 nor BrcmFirmwareRepo are installed. Or the device itself is not active on the USB bus (so no reason for the kexts to load... and therefore, no reason for them to be included in kextcache).
My bad, I posted that after the bluetooth had disappeared. My edit comments below was after I plugged it in a USB3 port and started working again. Somehow I cannot get it to boot without caches (-f) and not get a black screen if the device is in a USB2 port.
Anyway, the results of the command entered in terminal:
Code:
mchack:~ admin$ sudo touch /System/Library/Extensions && sudo kextcache -u /
Password:
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Trackpad.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Mouse.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Keyboard.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext VoodooPS2Controller.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext LPCSensors.kext
kext file:///System/Library/Extensions/JMicronATA.kext/ is in hash exception list, allowing to load
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext IOAHCIBlockStorageInjector.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext GPUSensors.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext FakeSMC.kext
kext file:///System/Library/Extensions/fabio.kext/ is in hash exception list, allowing to load
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext CPUSensors.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext BrcmPatchRAM2.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext BrcmFirmwareRepo.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext AttansicL1eEthernet.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext ApplePCIIDE.kext
kext-dev-mode allowing invalid signature -67061 0xFFFFFFFFFFFEFA0B for kext AppleHDA.kext
kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext ACPISensors.kext
mchack:~ admin$
Results from console (after filtering on 'brcmpatch')
Code:
12-03-16 22:19:51,000 kernel[0]: BrcmPatchRAM2: Version 2.2.3 starting on OS X Darwin 15.3.
12-03-16 22:19:51,000 kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
12-03-16 22:19:53,000 kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: BrcmFirmwareStore does not appear to be available.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: USB [5CF370654CC3 v274] "BCM20702A0" by "Broadcom Corp"
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM: Loaded firmware "BCM20702A1_001.002.014.1502.1764_v5860.zhx" from resources.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM: Decompressed firmware (30360 bytes --> 71148 bytes).
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: Firmware upgrade completed successfully.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: Processing time 3.838 seconds.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: Version 2.2.3 starting on OS X Darwin 15.3.
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: uploadFirmware could not open the device!
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: Processing time 0.1 seconds.
Results from console (after filtering on 'bluet')
Code:
12-03-16 22:19:52,124 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the IOKit user-client class RootDomainUserClient.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the IOKit user-client class IOHIDLibUserClient.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the IOKit user-client class IOBluetoothL2CAPChannelUserClient.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the IOKit user-client class IOBluetoothHCIUserClient.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the IOKit user-client class IOBluetoothDeviceUserClient.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the IOKit user-client class IOHIDResourceDeviceUserClient.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the mach service named com.apple.blued.
12-03-16 22:19:52,125 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the mach service named com.apple.bluetoothaudiod.
12-03-16 22:19:52,126 com.apple.audio.DriverHelper[311]: The plug-in named BluetoothAudioPlugIn.driver requires extending the sandbox for the mach service named com.apple.BluetoothDOServer.
12-03-16 22:19:54,000 kernel[0]: [IOBluetoothFamily][start] -- completed
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
12-03-16 22:19:54,000 kernel[0]: **** [IOBluetoothHostControllerUSBTransport][start] -- completed -- result = TRUE -- 0xc000 ****
12-03-16 22:19:54,000 kernel[0]: **** [BroadcomBluetoothHostControllerUSBTransport][start] -- Completed (matched on Device) -- 0xc000 ****
12-03-16 22:19:54,000 kernel[0]: [IOBluetoothFamily][staticBluetoothTransportShowsUp] -- Received Bluetooth Controller register service notification -- 0xc000 
12-03-16 22:19:54,000 kernel[0]: [IOBluetoothHostController][start] -- completed
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: [0a5c:21e8]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
12-03-16 22:19:54,000 kernel[0]: [IOBluetoothHostController::setConfigState] calling registerService
12-03-16 22:19:54,000 kernel[0]: **** [IOBluetoothFamily][ProcessBluetoothTransportShowsUpActionWL] -- calling IOBluetoothFamily's registerService() -- 0x4b80 -- 0xd400 -- 0xc000 ****
12-03-16 22:19:54,000 kernel[0]: **** [IOBluetoothFamily][ProcessBluetoothTransportShowsUpActionWL] -- Connected to the transport successfully -- 0x4b80 -- 0xd400 -- 0xc000 ****
12-03-16 22:19:54,994 blued[98]: [BluetoothHIDDeviceController] EventServiceConnectedCallback
12-03-16 22:19:54,994 blued[98]: [BluetoothHIDDeviceController] EventServiceDisconnectedCallback
12-03-16 22:19:54,994 blued[98]: [BluetoothHIDDeviceController] EventServiceConnectedCallback
12-03-16 22:19:54,994 blued[98]: [BluetoothHIDDeviceController] EventServiceDisconnectedCallback
12-03-16 22:20:15,934 SystemUIServer[1506]: [BluetoothHIDDeviceController] EventServiceConnectedCallback
12-03-16 22:20:15,934 SystemUIServer[1506]: [BluetoothHIDDeviceController] EventServiceDisconnectedCallback

Handoff requires a patch to IOBluetoothFamily. I can't verify you entered the patch correctly in your config.plist without seeing the entire file.

Make sure you boot without caches and rebuild cache (Clover can only patch kexts it loads).

See here: http://www.tonymacx86.com/network/104850-guide-airport-pcie-half-mini-v2.html
I booted without cache (I've added -f as boot argument, rebuild cache with KCPM utility pro) and then rebooted. However: "Handoff Supported: No" :(
Please find attached my config.plist View attachment config.plist.zip

The continuity activation tool cannot detect the bluetooth device btw.

Just a few thoughts:
1) in that script I read that the BCM4322 ("pci14e4,432b") is a legacy device that can be injected to the AirPortBrcm4360.kext, is that worth a try?
2) Is the imac10,1 too old and should the board-id be injected?
3) is Devices/FakeID/0x0 a way too use?

Thanks for your help,
ed
 
My bad, I posted that after the bluetooth had disappeared. My edit comments below was after I plugged it in a USB3 port and started working again. Somehow I cannot get it to boot without caches (-f) and not get a black screen if the device is in a USB2 port.

You have some sort of USB problem...

Note:
Code:
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: uploadFirmware could not open the device!
 
...

I booted without cache (I've added -f as boot argument, rebuild cache with KCPM utility pro) and then rebooted. However: "Handoff Supported: No" :(
Please find attached my config.plist View attachment 180755

The continuity activation tool cannot detect the bluetooth device btw.

Just a few thoughts:
1) in that script I read that the BCM4322 ("pci14e4,432b") is a legacy device that can be injected to the AirPortBrcm4360.kext, is that worth a try?
2) Is the imac10,1 too old and should the board-id be injected?
3) is Devices/FakeID/0x0 a way too use?

Thanks for your help,
ed

Handoff requires BT4LE. Did you check that BCM4322 is BT4LE capable?
 
You have some sort of USB problem...

Note:
Code:
12-03-16 22:19:54,000 kernel[0]: BrcmPatchRAM2: uploadFirmware could not open the device!
Yes, I noticed that too.

So we have these symptoms:
* when I boot with the GMYLE bluetooth in any USB2 port, my screen goes black. When I go blind, I can type my password, hit enter and it continues the boot. I press Command-Ctrl-EjectMedia and it closes the apps, logs off and restarts the computer - clearly it's not frozen.
* when I boot with the GMYLE in any USB3 port it boots and I have display. The PC can go to sleep and when it wakes bluetooth device is still found.
* when I boot without the GMYLE, I have display. When I insert the GMYLE in the USB2 port, it's not discovered/enabled in the menubar (I can open the system preferences but cannot switch it on), neither is it when I then insert it in a USB3 port. However, after a reboot and I insert it in the USB3 port first, then the GMYLE is discovered (but as soon as it's been in a USB2 port it's not working anymore).

The USB3 ports are provided by this board, Inatek with a FL1100 chipset. The USB2 ports are from the motherboard and are ICH10

I never experienced any problems with USB before this and haven't got a clue why it won't accept the GMYLE...

Handoff requires BT4LE. Did you check that BCM4322 is BT4LE capable?
How can I check that? It's this board, in the description they write "Package include: 2x Dupand Cable(Connect Bluetooth)". In a linux forum I read someone confirming t
As you know, the GMYLE is BT4LE.
 
Status
Not open for further replies.
Back
Top