Contribute
Register

BrcmPatchRAM - Upload firmware into Broadcom Bluetooth USB devices

Status
Not open for further replies.
Hi, RehabMan, my bluetooth USB card can be recognised, and every function shows yes, but i can't connect with my iphone5 and my bluetooth keyboard, it can connect for a moment, about 1 or 2 seconds, then can't connect, so is there any problem? Thanks a lot.

my bluetooth id:
Vendor ID:0x0A5C
Product ID:0x21EC
Version 2.2.1

and this is the log:
Nov 9 22:25:32 MacBook-Air com.apple.kextd[46]: kext-dev-mode allowing invalid signature -67062 0xFFFFFFFFFFFEFA0A for kext "/System/Library/Extensions/BrcmPatchRAM2.kext"
Nov 9 22:25:32 MacBook-Air kernel[0]: BrcmPatchRAM2: Version 2.2.1 starting on OS X Darwin 15.0.
Nov 9 22:25:32 MacBook-Air kernel[0]: BrcmPatchRAM2: [0a5c:21ec]: USB [001986000D55 v274] "BCM20702A0" by "Broadcom Corp"
Nov 9 22:25:33 MacBook-Air kernel[0]: BrcmPatchRAM2: [0a5c:21ec]: Firmware upgrade completed successfully.
Nov 9 22:25:33 MacBook-Air kernel[0]: BrcmPatchRAM2: [0a5c:21ec]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov 9 22:25:33 MacBook-Air kernel[0]: BrcmPatchRAM2: Processing time 0.514 seconds.

this is the console log when
attempt to connect with my iPhone:
11/9/15 11:08:09.058 PM sandboxd[320]: ([860]) bnepd(860) deny mach-lookup com.apple.blued
11/9/15 11:08:10.000 PM kernel[0]: IOBluetoothDevice::setProperties() -- calling mHCIController->CallCreateDeviceReporter() -- this = 0x0c00
11/9/15 11:08:10.000 PM kernel[0]: IOBluetoothHostController::CallCreateDeviceReporter -- calling enqueueAction() -- device = 0x0c00
11/9/15 11:08:10.000 PM kernel[0]: IOBluetoothHostController::CreateDeviceReporterAction -- device = = 0x0c00
11/9/15 11:08:10.000 PM kernel[0]: IOBluetoothHostController::CreateDeviceReporterAction -- calling CreateDeviceReporter() device = = 0x0c00
11/9/15 11:08:10.000 PM kernel[0]: IOBluetoothHostController::CreateDeviceReporter -- device = = 0x0c00
11/9/15 11:08:10.660 PM blued[83]: Device Connected with address: 88-cb-87-62-e3-3e and classOfDevice 0x7a020c and connectionHandle 0x000c
11/9/15 11:08:10.791 PM symptomsd[200]: nw_interface_create_with_name netutil_ifname_to_ifindex(en2) failed, dumping backtrace:
[x86_64] libnetcore-582.1.4
0 libsystem_network.dylib 0x00007fff9d4c5a05 __nw_create_backtrace_string + 123
1 libsystem_network.dylib 0x00007fff9d4e68c7 nw_interface_create_with_name + 179
2 Network 0x00007fff95ef5130 -[NWInterface initWithInterfaceName:] + 120
3 SymptomEvaluator 0x00007fff92205024 config_callback + 874
4 SystemConfiguration 0x00007fff99370e0f rlsPerform + 184
5 SystemConfiguration 0x00007fff9938414f __SCDynamicStoreSetDispatchQueue_block_invoke_2 + 52
6 libdispatch.dylib 0x00007fff90d458f5 _dispatch_call_block_and_release + 12
7 libdispatch.dylib 0x00007fff90d3a3c3 _dispatch_client_callout + 8
8 libdispatch.dylib 0x00007fff90d3eff3 _dispatch_queue_drain + 754
9 libdispatch.dylib 0x00007fff90d456bf _dispatch_queue_invoke + 549
10 libdispatch.dylib 0x00007fff90d3dd0b _dispatch_root_queue_drain + 538
11 libdispatch.dylib 0x00007fff90d3dab8 _dispatch_worker_thread3 + 91
12 libsystem_pthread.dylib 0x00007fff9b10e4f2 _pthread_wqthread + 1129
13 libsystem_pthread.dylib 0x00007fff9b10c375 start_wqthread + 13
11/9/15 11:08:10.791 PM symptomsd[200]: -[NWInterface initWithInterfaceName:] nw_interface_create_with_name(en2) failed, dumping backtrace:
[x86_64] libnetcore-582.1.4
0 libsystem_network.dylib 0x00007fff9d4c5a05 __nw_create_backtrace_string + 123
1 Network 0x00007fff95ef519a -[NWInterface initWithInterfaceName:] + 226
2 SymptomEvaluator 0x00007fff92205024 config_callback + 874
3 SystemConfiguration 0x00007fff99370e0f rlsPerform + 184
4 SystemConfiguration 0x00007fff9938414f __SCDynamicStoreSetDispatchQueue_block_invoke_2 + 52
5 libdispatch.dylib 0x00007fff90d458f5 _dispatch_call_block_and_release + 12
6 libdispatch.dylib 0x00007fff90d3a3c3 _dispatch_client_callout + 8
7 libdispatch.dylib 0x00007fff90d3eff3 _dispatch_queue_drain + 754
8 libdispatch.dylib 0x00007fff90d456bf _dispatch_queue_invoke + 549
9 libdispatch.dylib 0x00007fff90d3dd0b _dispatch_root_queue_drain + 538
10 libdispatch.dylib 0x00007fff90d3dab8 _dispatch_worker_thread3 + 91
11 libsystem_pthread.dylib 0x00007fff9b10e4f2 _pthread_wqthread + 1129
12 libsystem_pthread.dylib 0x00007fff9b10c375 start_wqthread + 13
11/9/15 11:08:11.000 PM kernel[0]: in6_unlink_ifa: IPv6 address 0x3c4bc082c1ee100d has no prefix
11/9/15 11:08:16.005 PM symptomsd[200]: nw_interface_get_agents SIOCGIFAGENTIDS failed for interface "en2" (index 8, type other): [6] Device not configured
11/9/15 11:08:16.008 PM symptomsd[200]: nw_interface_get_agents SIOCGIFAGENTIDS failed for interface "en2" (index 8, type other): [6] Device not configured
11/9/15 11:08:23.949 PM networkd[193]: -[NETProxyLookup url] invalid URL scheme '8090'
 
Hi, RehabMan, my bluetooth USB card can be recognised, and every function shows yes, but i can't connect with my iphone5 and my bluetooth keyboard, it can connect for a moment, about 1 or 2 seconds, then can't connect, so is there any problem? Thanks a lot.


That is normal for the iPhone. The iPhone doesn't really pair. Same result with my real Apple MacBookAir6,2. Apple uses BT4LE for handoff/connection to iPhone.
 
That is normal for the iPhone. The iPhone doesn't really pair. Same result with my real Apple MacBookAir6,2. Apple uses BT4LE for handoff/connection to iPhone.
Thanks for your answer, RehabMan. So, system report shows Bluetooth low energy supported, I don't really get why they can't connected, maybe I understand wrong. So we can't use handoff and airdrop in hackintosh now? Thank you again.

sundd
 
After spending the evening playing around with my AzureWave Broadcom BCM94352HMB and the-darkvoid/rehabman kexts to get my modem working under 10.11.1 thought this might help others... Hope this doesn't clutter too much!

With the two BrcmPatchRAM files linked from the-darkvoid/rehabman github repo (BrcmFirmwareRepo.kext and BrcmPatchRAM2.kext from RehabMan-BrcmPatchRAM-2015-1101.zip) installed for an AzureWave Broadcom BCM94352HMB in /S/L/E/ on my 10.11.1 system:
Code:
$ unzip ./RehabMan-BrcmPatchRAM-2015-1101.zip
$ sudo cp -a ./Release/BrcmPatchRAM2.kext /System/Library/Extensions/
$ sudo cp -a ./Release/BrcmFirmwareRepo.kext /System/Library/Extensions/
$ sudo chown -R root:wheel /System/Library/Extensions/Brcm*
$ sudo rm -f /System/Library/PrelinkedKernels/prelinkedkernel
$ sudo touch /System/Library/Extensions
$ sudo kextcache -u /

$ sudo reboot

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 18:16:33 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:16:33 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 18:16:33 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 18:16:39 Hackintosh kernel[0]: BrcmPatchRAM: Loaded firmware "BCM20702A1_001.002.014.1502.1766_v5862.zhx" from resources.
Nov  9 18:16:39 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 18:16:39 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 18:16:39 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
[B]Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade completed successfully.[/B]
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 6.6 seconds.
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 18:16:40 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.26 seconds.

$ sudo reboot

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 18:20:20 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:20:20 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 18:20:20 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM: Loaded firmware "BCM20702A1_001.002.014.1502.1766_v5862.zhx" from resources.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 5.373 seconds.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 18:20:27 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.5 seconds.

$ sudo shutdown -h now

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 18:30:09 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:30:09 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 18:30:09 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM: Loaded firmware "BCM20702A1_001.002.014.1502.1766_v5862.zhx" from resources.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 5.388 seconds.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 18:30:15 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.5 seconds.

$ sudo shutdown -h now
Following system shutdown, the system was fully powered down for ~2mins (removed from utility power)

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 18:40:58 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:40:58 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 18:40:58 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM: Loaded firmware "BCM20702A1_001.002.014.1502.1766_v5862.zhx" from resources.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
[B]Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade completed successfully.[/B]
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 5.961 seconds.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 18:41:04 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.26 seconds.

$ sudo pmset sleepnow

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 18:48:36 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:48:36 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 18:48:36 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM: Loaded firmware "BCM20702A1_001.002.014.1502.1766_v5862.zhx" from resources.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 5.419 seconds.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 18:48:41 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.6 seconds.
So it appears like the /S/L/E uploaded firmware file on the AzureWave Broadcom BCM94352HMB (AzureWave AW-CE123H) survives not only sleep (hibernate mode 0 on this desktop) but system reboots and shutdowns? Only the initial install and a loss of power to the modem requires a reload of the firmware? In any case, it looks quite safe as the kext seems to trigger and checks it's list twice! Oh, and System Information shows:
Code:
  Apple Bluetooth Software Version:   4.4.2f1 16391
  Hardware, Features, and Settings:
  Bluetooth Low Energy Supported:     Yes
  Handoff Supported:                  Yes
  Instant Hot Spot Supported:         Yes
  Manufacturer:                       Broadcom
  Transport:                          USB
  Chipset:                            20702A3
  Firmware Version:                   v14 c5862
  Bluetooth Power:                    On
  Discoverable:                       Off
  Connectable:                        Yes
  Auto Seek Pointing:                 On
  Remote wake:                        On
  Vendor ID:                          0x0A5C
  Product ID:                         0x21FB
  HCI Version:                        0x7
  HCI Revision:                       0x16E6
  LMP Version:                        0x7
  LMP Subversion:                     0x220E
  Device Type (Major):                Computer
  Device Type (Complete):             Mac Desktop
  Composite Class Of Device:          0x380104
  Device Class (Major):               0x01
  Device Class (Minor):               0x01
  Service Class:                      0x1C0
  Auto Seek Keyboard:                 On
Nice!

As I actually prefer to keep my addon kexts in /EFI/EFI/Clover I tried the second method; both the BrcmFirmwareRepo.kext and BrcmPatchRAM2.kext were removed from /S/L/E/ to check out how /EFI/EFI/Clover kext injects worked:
Code:
$ sudo mkdir /Volumes/EFI
$ sudo mount -t msdos /dev/disk0s1 /Volumes/EFI/

$ unzip ./RehabMan-BrcmPatchRAM-2015-1101.zip
$ cp -a ./Release/BrcmPatchRAM2.kext /Volumes/EFI/EFI/CLOVER/kexts/10.11/
$ cp -a ./Release/BrcmFirmwareData.kext /Volumes/EFI/EFI/CLOVER/kexts/10.11/

$ sudo umount -t msdos /dev/disk0s1

$ sudo shutdown -h now
Following system shutdown, the system was fully powered down for ~2mins to let those previously /S/L/E loaded firmware bytes seep back out of the modem...

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 19:12:30 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 19:12:30 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 19:12:30 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 19:12:32 Hackintosh com.apple.kextd[43]: Can't open CFBundle for /EFI\CLOVER\kexts\10.11\BrcmFirmwareData.kext.
Nov  9 19:12:38 Hackintosh com.apple.kextd[43]: Can't open CFBundle for /EFI\CLOVER\kexts\10.11\BrcmFirmwareData.kext.
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM: Loaded compressed embedded firmware for key "BCM20702A1_001.002.014.1502.1766_v5862".
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
[B]Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade completed successfully.[/B]
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 8.309 seconds.
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 19:12:38 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.27 seconds.

$ sudo pmset sleepnow

$ sudo cat /var/log/system.log | grep -i brcm[fp]
Nov  9 19:17:30 localhost kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 19:17:30 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmFirmwareStore.
Nov  9 19:17:30 localhost kernel[0]: BrcmPatchRAM2: Published new IOKit personality for BrcmPatchRAMResidency.
Nov  9 19:17:32 Hackintosh com.apple.kextd[43]: Can't open CFBundle for /EFI\CLOVER\kexts\10.11\BrcmFirmwareData.kext.
Nov  9 19:17:38 Hackintosh com.apple.kextd[43]: Can't open CFBundle for /EFI\CLOVER\kexts\10.11\BrcmFirmwareData.kext.
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM: Loaded compressed embedded firmware for key "BCM20702A1_001.002.014.1502.1766_v5862".
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM: Decompressed firmware (30399 bytes --> 71248 bytes).
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
[B]Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade completed successfully.[/B]
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Published new IOKit personality.
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 8.309 seconds.
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: Version 2.2.2 starting on OS X Darwin 15.0.
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: USB [240A6403AAC1 v274] "BCM20702A0" by "Broadcom Corp"
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Firmware upgrade not needed.
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: [0a5c:21fb]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov  9 19:17:38 Hackintosh kernel[0]: BrcmPatchRAM2: Processing time 0.27 seconds.
I don't know why the errors about "Can't open CFBundle for /EFI\CLOVER\kexts\10.11\BrcmFirmwareData.kext", perhaps because my EFI partition isn't auto-mounted (or mounted to /EFI) under OSX? Also noticed that when the Bluetooth devices are paired/on/connected to the AzureWave AW-CE123H the poor machine will fall asleep correctly, but then within one second of full snooze, it wakes up (display stays nicely asleep until a key/button is actually pressed) - sounds like a USB polling issue though - this bluetooth modem is on the USB2 bus, so when the BT keyboard/mouse polls/talks to the modem it wakes up the bus/system. With just my wired USB keyboard/mouse (all BT devices turned off) however, sleep works exactly as advertised - lovely! And the System Information still shows the same BT configuration info/version data.

And since I was having so much fun already, I also tried out the third approach using the BrcmBluetoothInjector.kext (from RehabMan-BrcmPatchRAM-2015-1016.zip as it wasn't included in the latest RehabMan-BrcmPatchRAM-2015-1101.zip) and dumped it in the Clover folder:
Code:
$ sudo mkdir /Volumes/EFI
$ sudo mount -t msdos /dev/disk0s1 /Volumes/EFI/

$ rm /Volumes/EFI/EFI/CLOVER/kexts/10.11/Brcm*

$ unzip ./RehabMan-BrcmPatchRAM-2015-1016.zip
$ cp -a ./Release/BrcmBluetoothInjector.kext /Volumes/EFI/EFI/CLOVER/kexts/10.11/

$ sudo umount -t msdos /dev/disk0s1

$ sudo shutdown -h now
Following system shutdown, the system was again fully powered down for ~2mins to ensure that the firmware wasn't retained by the AzureWave AW-CE123H BT modem.

Sadly, without RehabMan's dandy firmware loading kexts installed, there was nobody to log those "firmware sucessfully loaded" messages to /var/log/system.log! However, the OSX System Information utility still shows similar BT success information:
Code:
  Apple Bluetooth Software Version:   4.4.2f1 16391
  Hardware, Features, and Settings:
  Bluetooth Low Energy Supported:     Yes
  Handoff Supported:                  Yes
  Instant Hot Spot Supported:         Yes
  Manufacturer:                       Broadcom
  Transport:                          USB
  Chipset:                            20702A3
  Firmware Version:                   v14 c4096
  Bluetooth Power:                    On
  Discoverable:                       Off
  Connectable:                        Yes
  Auto Seek Pointing:                 On
  Remote wake:                        On
  Vendor ID:                          0x0A5C
  Product ID:                         0x21FB
  HCI Version:                        0x6
  HCI Revision:                       0x1000
  LMP Version:                        0x6
  LMP Subversion:                     0x220E
  Device Type (Major):                Computer
  Device Type (Complete):             Mac Desktop
  Composite Class Of Device:          0x380104
  Device Class (Major):               0x01
  Device Class (Minor):               0x01
  Service Class:                      0x1C0
  Auto Seek Keyboard:                 On
It's noteworthy that now my AzureWave AW-CE123H BT modem is now showing it's true older firmware version of "v14 c4096" and not the newer firmware version of "v14 c5862" that was uploaded from the BrcmFirmwareRepo.kext or BrcmFirmwareData.kext files. Also the BT Host Contoller and Link Manager (HCI & LMP) version/revision data is different too...

I like all the tasty newnesses, so my money is on using the later versions of firmware with my BT modem - I'll be putting those two kexts back into /S/L/E/ - although, I really prefer the vanilla approach of putting them in /EFI/EFI/CLOVER/kexts/10.11/ instead. Is memory efficiency the only reason that /S/L/E is preferred over Clover injecting - is it a significant/measureable inefficiency?

Three easy ways to make my ~$20 WiFi & BT modem work! Thank you to both the-darkvoid and RehabMan for these great kexts! Now both my bluetooth keyboard and mouse just work magically!
 
Thanks for your answer, RehabMan. So, system report shows Bluetooth low energy supported, I don't really get why they can't connected, maybe I understand wrong. So we can't use handoff and airdrop in hackintosh now? Thank you again.

sundd

Handoff/airdrop should work. They do not depend on "pairing".
 
So it appears like the /S/L/E uploaded firmware file on the AzureWave Broadcom BCM94352HMB (AzureWave AW-CE123H) survives not only sleep (hibernate mode 0 on this desktop) but system reboots and shutdowns? Only the initial install and a loss of power to the modem requires a reload of the firmware?

The device will only lose firmware when power is cut to the device. BrcmPatchRAM only loads firmware when firmware is not present.

In any case, it looks quite safe as the kext seems to trigger and checks it's list twice!

The "double probe" is normal.

As I actually prefer to keep my addon kexts in /EFI/EFI/Clover I tried the second method; both the BrcmFirmwareRepo.kext and BrcmPatchRAM2.kext were removed from /S/L/E/ to check out how /EFI/EFI/Clover kext injects worked:
...
I don't know why the errors about "Can't open CFBundle for /EFI\CLOVER\kexts\10.11\BrcmFirmwareData.kext",

Makes sure you read the README carefully. Info.plist edits required.

Also noticed that when the Bluetooth devices are paired/on/connected to the AzureWave AW-CE123H the poor machine will fall asleep correctly, but then within one second of full snooze, it wakes up (display stays nicely asleep until a key/button is actually pressed) - sounds like a USB polling issue though

You try disabling the ability of bluetooth devices to wake. In SysPrefs->Bluetooth.

And since I was having so much fun already, I also tried out the third approach using the BrcmBluetoothInjector.kext (from RehabMan-BrcmPatchRAM-2015-1016.zip as it wasn't included in the latest RehabMan-BrcmPatchRAM-2015-1101.zip) and dumped it in the Clover folder:

Not recommended. And why it was removed from the build...
 
Makes sure you read the README carefully. Info.plist edits required.
Ahhh... It was getting late, and I tired! I totally skipped that part!

I've extracted the Windows 10 BT driver (version 12.0.1.720) for my "AzureWave Broadcom BCM94352HMB (AzureWave AW-CE123H)" - well, that's what the sticker says is underneath it!

$ system_profiler SPUSBDataType | grep -A 11 "BCM" reports that it's a BCM20702A0 with a PID of 0x21fb and a VID of 0x0a5c.

A look through the windows driver's "bcbtums-win8x64-brcm.inf" file says that particular PID & VID combo is actually a "HP Supra 4352 20702A1 combo"! Never mind, my HP20702A1.DeviceDesc appears to be a "RAMUSB21FB" which has an associated firmware file of "BCM20702A1_001.002.014.1502.1766.hex".

I've compressed that .hex firmware file with zlib.pl, and then dumped it as BCM20702A1_001.002.014.1502.1766.dmp. Then using the naming/versioning convention of that firmware, the last four of the filename "1766" is added to the base version number of "4096", so, "c14 v5862" will be my OSX firmware version.

Since I'm using Clover to inject BrcmPatchRAM2.kext and BrcmFirmwareData.kext from /EFI, I need to modify a Info.plist and "create a new firmware key under the BcmFirmwareStore/Firmwares dictionary"...

I've hit a speedbump - the BrcmFirmwareData.kext indeed has an Info.plist, and there's a "BrcmFirmwareStore" key under "IOKitPersonalities"... Should I add a "Firmwares" key as a child to "BrcmFirmwareStore" and then add a child key to "Firmwares" for BCM20702A1_001.002.014.1502.1766.dmp (or is to be BCM20702A1_001.002.014.1502.1766.zhx)?

I looked at the BrcmFirmwareRepo.kext for /S/L/E to see if I could align my understanding of the ReadMe.MD with that Info.plist, but my IQ dropped further. The kext's Info.plist and "Resources" folder indicate that the firmware version for my PID & VID combo of 0a5c_21fb already has a "FirmwareKey" of BCM20702A1_001.002.014.1502.1766_v5862...

Almost there - and I'm tired again!
 
No firmware extraction from Windows drivers needed... BrcmPatchRAM is up-to-date...

But you do need to change the disabled_IOResources to IOResources as described in the README.
 
No firmware extraction from Windows drivers needed... BrcmPatchRAM is up-to-date...
Yes, it certainly appeared so!


But you do need to change the disabled_IOResources to IOResources as described in the README.
Ahhhh... We do not appear to be using the same README! I've been using https://github.com/the-darkvoid/BrcmPatchRAM/blob/master/README.md. Where is the README documenting changing the disabled_IOResources to IOResources?
 
Oh, my Airdrop finally worked, i guess handoff need more restriction, doesn't work now, but not a big problem. thanks your help.

RehabMan, there is one more little problem, maybe is not related to this topic, i googled it, did not have a good solution. my os is 10.11.1, my laptop is hp 9470m, i used prebook installer to post install drivers. everything works good. but when i inserted a USB 3.0 disk, there would be a kernel panic and then laptop reboot. so, is there any advice to be avoid this? thanks a lot.

sundd
 
Status
Not open for further replies.
Back
Top