Contribute
Register

BrcmPatchRAM - Upload firmware into Broadcom Bluetooth USB devices

Status
Not open for further replies.
Joined
Jul 3, 2014
Messages
934
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
  1. MacBook
  2. MacBook Pro
Mobile Phone
  1. Android
I have 0x0930 / 0x0223 running fine on v5434 for quite a long time now.

Other attributes of my card:


  • Chipset: 20702A3
  • HCI Version: 0x6
  • HCI Revision: 0x153A
  • LMP Version: 0x6
  • LMP Subversion: 0x220E

In IOReg it shows as:
Code:
    +-o BCM20702A0@14900000  <class IOUSBDevice, id 0x1000002c2, registered, matched, active, busy 0 (802 ms), retain 16>
    |   {
    |     "sessionID" = 3079243649
    |     "idProduct" = 547
    |     "bNumConfigurations" = 1
    |     "iManufacturer" = 1
    |     "bcdDevice" = 274
    |     "Bus Power Available" = 250
    |     "bMaxPacketSize0" = 64
    |     "USB Product Name" = "Toshiba NGFF (4352/20702A1)"
    |     "iProduct" = 2
    |     "iSerialNumber" = 3
    |     "bDeviceClass" = 255
    |     "IOUserClientClass" = "IOUSBDeviceUserClientV2"
    |     "bDeviceSubClass" = 1
    |     "USB Address" = 10
    |     "bcdUSB" = 512
    |     "locationID" = 344981504
    |     "PortNum" = 9
    |     "IOCFPlugInTypes" = {"9dc7b780-9ec0-11d4-a54f-000a27052861"="IOUSBFamily.kext/Contents/PlugIns/IOUSBLib.bundle"}
    |     "RM,FirmwareLoaded" = Yes
    |     "bDeviceProtocol" = 1
    |     "USB Vendor Name" = "Broadcom Corp"
    |     "Device Speed" = 1
    |     "idVendor" = 2352
    |     "PortNumberOffset" = 0
    |     "USB Serial Number" = "XXXXXXXXXXXX"
    |     "Requested Power" = 0
    |     "IOGeneralInterest" = "IOCommand is not serializable"
    |     "Low Power Displayed" = No
    |   }

As per Apple: https://developer.apple.com/library/mac/qa/qa1076/_index.html, we could use the "bcdDevice" to define a more precise match between our devices?

nuudles & Rehabman, whats are your bcdDevice values?
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,624
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
I have 0x0930 / 0x0223 running fine on v5434 for quite a long time now.

...
nuudles & Rehabman, whats are your bcdDevice values?

I have a different device as far as vid/pid: 0a5c:21fb.

My bcdDevice is 0x112 (274), so same as yours.

Can you use the v5744 firmware?
 
Joined
Jan 25, 2014
Messages
81
Motherboard
XPS12
CPU
Haswell i7
Graphics
HD4400
Mac
Classic Mac
Mobile Phone
I have a different device as far as vid/pid: 0a5c:21fb.

My bcdDevice is 0x112 (274), so same as yours.

Can you use the v5744 firmware?

My bcdDevice is also 0x112
 
Joined
Jul 3, 2014
Messages
934
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
  1. MacBook
  2. MacBook Pro
Mobile Phone
  1. Android
Rehabman,

So far my device has been extremely forgiving regarding what firmware is loaded.
Everything I've thrown at it loaded fine, including v5744.

Since the bcdDevice is the same between you, me and nuudles we cannot use that to discern between firmwares.

So not sure what to do, other then finding the using the exact firmware from the Windows version, which is exactly what we are doing at the moment.
 
Joined
Jul 3, 2014
Messages
934
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
  1. MacBook
  2. MacBook Pro
Mobile Phone
  1. Android
Just checked latest Windows driver (12.0.1.650), it has v5770 as the firmware for 0930:0223.
I will see about updating the firmware store with the latest firmwares.

Rehabman,

I am confused regarding BrcmBluetoothInjector.kext. Isn't it enough to update the personality publishing switch statement in BrcmPatchRAM::initBrcmStrings() to support the change in bundle name?
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,624
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Just checked latest Windows driver (12.0.1.650), it has v5770 as the firmware for 0930:0223.
I will see about updating the firmware store with the latest firmwares.

I guess I can try v5770 with my device just for grins...

Rehabman,

I am confused regarding BrcmBluetoothInjector.kext. Isn't it enough to update the personality publishing switch statement in BrcmPatchRAM::initBrcmStrings() to support the change in bundle name?

No. BrcmPatchRAM residency causes issues. I think because it connects to the legacy tree(IOUSB*), not the new host tree (IOUSBHost*) and that causes conflict with new bt drivers that are on the new tree.

Since there is a BT firmware uploader already present, all you need is the personalities, hence BrcmBluetoothInjector.kext.

I have an almost complete rewrite of BrcmPatchRAM that uses IOUSBHost* (I've created a little shim class that handles the diffs between IOUSB* and IOUSBHost*. Haven't tested it yet as I've been busy with other things and BrcmBluetoothInjector.kext works, but I'll eventually make my way back to it.
 
Joined
Jul 3, 2014
Messages
934
Motherboard
Dell XPS 9360 (KabyLake R)
CPU
Intel i7 8550U
Graphics
Intel UHD 620
Mac
  1. MacBook
  2. MacBook Pro
Mobile Phone
  1. Android
Verified all existing BrcmPatchRAM devices against latest Windows driver, no new firmware updates as of now.
 
Joined
Oct 4, 2012
Messages
98
Motherboard
Z75 Pr3
CPU
i7 3770 3.4GHZ
Graphics
MSI G4 970 GTX
Mac
  1. MacBook Pro
Classic Mac
Mobile Phone
  1. iOS
Hey all i have a slight problem. 1 out of 5 boots the bluetooth is really long to come online, maybe 40 or more secs it feels painfully long atleast. because i only have BT keyboard and password on this is really annoying. is there any ways to make it come online faster and more persistent?

kind regards
 

RehabMan

Moderator
Joined
May 3, 2012
Messages
184,624
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
Hey all i have a slight problem. 1 out of 5 boots the bluetooth is really long to come online, maybe 40 or more secs it feels painfully long atleast. because i only have BT keyboard and password on this is really annoying. is there any ways to make it come online faster and more persistent?

kind regards

After long BT initiation, post related logs from system.log. (eg. 'grep -y brcmpatchram /var/log/system.log')
 
Joined
Oct 4, 2012
Messages
98
Motherboard
Z75 Pr3
CPU
i7 3770 3.4GHZ
Graphics
MSI G4 970 GTX
Mac
  1. MacBook Pro
Classic Mac
Mobile Phone
  1. iOS
After long BT initiation, post related logs from system.log. (eg. 'grep -y brcmpatchram /var/log/system.log')


i think this is what you need ?

Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: Version 1.7 starting on OS X Darwin 14.4.
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: Retrieved firmware for firmware key "BCM20702A1_001.002.014.1443.1612_v5708".
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: Decompressed firmware (29714 bytes --> 70016 bytes).
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: Firmware is valid IntelHex firmware.
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: [04ca:200b]: USB [2016D890BE72 v274] "BCM20702A0" by "Broadcom Corp"
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: [04ca:200b]: Firmware upgrade completed successfully.
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: [04ca:200b]: Published new IOKit personality.
Jul 15 07:35:50 localhost kernel[0]: BrcmPatchRAM: Processing time 0.23 seconds.
Jul 15 07:36:26 Kaspers-iMac kernel[0]: BrcmPatchRAM: Time since wake 35.605 seconds.
Jul 15 07:36:26 Kaspers-iMac kernel[0]: BrcmPatchRAM: Version 1.7 starting on OS X Darwin 14.4.
Jul 15 07:36:26 Kaspers-iMac kernel[0]: BrcmPatchRAM: [04ca:200b]: USB [2016D890BE72 v274] "BCM20702A0" by "Broadcom Corp"
Jul 15 07:36:26 Kaspers-iMac kernel[0]: BrcmPatchRAM: [04ca:200b]: Firmware upgrade completed successfully.
Jul 15 07:36:26 Kaspers-iMac kernel[0]: BrcmPatchRAM: [04ca:200b]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Jul 15 07:36:26 Kaspers-iMac kernel[0]: BrcmPatchRAM: Processing time 0.58 seconds.
 
Status
Not open for further replies.
Top