It appears that bluetooth will still sometimes fail to upload the RAM, even though the USB seems correct (it's always loading up on HS07 under XHCI and is always present, even after sleep/wake cycle).
Do I have any other alternatives other than using the 2 kexts in this post? Are there other methods of injecting the firmware? Could I need further changes to my DSDT?
Here's what the log looks like from BcrmPatchRAM when it "fails"
Code:
Nov 18 07:47:02 Josh-Lenovo kernel[0]: BrcmPatchRAM2: Version 2.2.7 starting on OS X Darwin 15.6.
Nov 18 07:47:02 Josh-Lenovo kernel[0]: BrcmPatchRAM2: [0a5c:216f]: USB [C48E8FF8AA1A v274] "BCM20702A0" by "Broadcom Corp"
Nov 18 07:51:02 Josh-Lenovo kernel[0]: BrcmPatchRAM2: [0a5c:216f]: Firmware upgrade completed successfully.
Nov 18 07:51:02 Josh-Lenovo kernel[0]: BrcmPatchRAM2: [0a5c:216f]: Found existing IOKit personality "com.apple.iokit.BroadcomBluetoothHostControllerUSBTransport".
Nov 18 07:51:02 Josh-Lenovo kernel[0]: BrcmPatchRAM2: Processing time 240.24 seconds.
In these cases when it fails, it always takes 240 seconds or 180 seconds (4 minutes or 3 minutes). This also happened when I had EHCI disabled, so I don't think that's the cause of the problem.