Contribute
Register

BrcmPatchRAM - Upload firmware into Broadcom Bluetooth USB devices

Status
Not open for further replies.
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?
 
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?
 
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
 
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.
 
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?
 
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.
 
Verified all existing BrcmPatchRAM devices against latest Windows driver, no new firmware updates as of now.
 
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
 
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')
 
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.
Back
Top