- Joined
- Jul 3, 2014
- Messages
- 931
- Motherboard
- Dell XPS 9360 (KabyLake R)
- CPU
- Intel i7 8550U
- Graphics
- Intel UHD 620
- Mac
- Mobile Phone
ATM, I have no idea where the firmwares are stored in 10.11... If you have some idea about it, let me know...
Firmware uploads are done by a user-mode process (at least they were up to Yosemite), I can still see this present in El Capitan. Though I haven't verified if its still actively used, it does look like.
The kext which takes care of this is IOBluetoothUSBDFU.kext which kicks in on boot, verifies if the device needs a firmware update.
The firmware update itself is done through /System/Library/Extensions/IOBluetoothFamily.kext/Contents/PlugIns/IOBluetoothUSBDFU.kext/Contents/Resources/IOBluetoothUSBDFUTool.
Each firmware is stored in the DFU files (you can find the matching devices in the associated plist).
The DFU format is simply a binary format of the normal HEX firmware format stored as USB upgrade instructions. Additionally there is a trailing data record which indicates the size, firmware version and device / vendor ID details.
Apple devices however are not PatchRAM devices, so any firmware update done on an Apple Bluetooth is persistent and stays across reboots. So Apple merely patches firmware into its bluetooth dongles when OS X is upgraded and provides a new firmware upgrade.
So ideally BrcmPatchRAM should still be applicable for El Capitan, in order to provide non-persistent (PatchRAM) firmware updates.
As you mentioned this might require a new branch of BrcmPatchRAM to accommodate the new USB structure, if its not possible to handle this within the existing code-base.
Or we could tap into the user-mode upgrade process Apple uses and add additional firmwares.
I wrote equivalent code for it before... (https://github.com/the-darkvoid/dfu-util-osx - use with care)