Contribute
Register

BrcmPatchRAM - Upload firmware into Broadcom Bluetooth USB devices

Status
Not open for further replies.
EDIT: I read more of the USB guide to understand exactly what that is doing. If my understanding is correct, the reason for routing USB2 devices to EHCI is to get around the 15-port limit on 10.11. My machine only has 7 USB devices: 3 USB-A ports, BT, webcam, touchscreen, and SD-card reader (disabled in my custom port injector). If my understanding is correct, then my machine should function just fine if I completely disable EHCI.

Yes, assuming the touchscreen is not directly wired to EHCI.

Note that your 7 USB devices actually use 10 ports (3*2+1+1+1+1)
 
It is not possible to force something directly wired to EHCI to appear on XHCI (there is no facility to route from EHCI to XHCI, only from XHCI to EHCI).
But if that port is actually on XHCI and BIOS is routing it to EHCI by default, then it possible to turn off that routing by changing RM,pr2-force as I mentioned.
Most of my projects set pr2-force as I mentioned for the case EHCI is disabled... just to turn off the routing for the case FakePCIID_XHCIMux is installed.
I changed RM,pr2-force as you mentioned in the FakePCIID_XHCIMux kext in "FakeProperties" in the Info.plist (for 8-series USB). After installing and rebooting, I'm still not seeing the touchscreen on XHCI, so I'm guessing I'm out of luck (unless I did something wrong with the kext configuration).

Yes, assuming the touchscreen is not directly wired to EHCI.

Note that your 7 USB devices actually use 10 ports (3*2+1+1+1+1)
Oh, I thought it was 7 * 2 = 14 (which would still be under the limit). But I guess it makes sense that only the USB-A ports get duplicated (for USB 2 devices and USB 3 devices).
 
Last edited:
I changed RM,pr2-force as you mentioned in the FakePCIID_XHCIMux kext in "FakeProperties" in the Info.plist (for 8-series USB). After installing and rebooting, I'm still not seeing the touchscreen on XHCI, so I'm guessing I'm out of luck (unless I did something wrong with the kext configuration).

I would have to see ioreg to confirm your conclusion.

Oh, I thought it was 7 * 2 = 14 (which would still be under the limit). But I guess it makes sense that only the USB-A ports get duplicated (for USB 2 devices and USB 3 devices).

Only USB3 ports use two ports. Some of the ports you mention are USB2 only.
 
You may be eliminating the port in your custom SSDT for USBInjectAll.kext.
Oh, good thinking...but that didn't solve it :( Looks like it's wired directly to EHCI on this machine. See attached ioreg for confirmation (the new device you're seeing in the USB tree is the SD-card reader that I am disabling with my custom port injector).

I guess I just need to decide now whether or not I need to completely disable EHCI (and lose the touchscreen) or keep EHCI enabled and sometimes lose bluetooth. Honestly I need to do more testing in both scenarios to see if that's even the cause of my issues.
 

Attachments

  • Josh-Lenovo.ioreg.zip
    436.5 KB · Views: 69
Oh, good thinking...but that didn't solve it :( Looks like it's wired directly to EHCI on this machine. See attached ioreg for confirmation (the new device you're seeing in the USB tree is the SD-card reader that I am disabling with my custom port injector).

I guess I just need to decide now whether or not I need to completely disable EHCI (and lose the touchscreen) or keep EHCI enabled and sometimes lose bluetooth. Honestly I need to do more testing in both scenarios to see if that's even the cause of my issues.

You might want to also make sure XSEL is not doing something funny... ACPI access to the PR2 registers bypass FakePCIID_XHCIMux.

But it still seems unlikely that EHCI being enabled is affecting bluetooth on XHC. Even in the case that EHCI is enabled, you might want to insure your SSDT is correct for it (eg. injecting only the ports needed).
 
You might want to also make sure XSEL is not doing something funny... ACPI access to the PR2 registers bypass FakePCIID_XHCIMux.

But it still seems unlikely that EHCI being enabled is affecting bluetooth on XHC. Even in the case that EHCI is enabled, you might want to insure your SSDT is correct for it (eg. injecting only the ports needed).
Well when I originally posted about this problem, BT (and webcam) were routed to EHCI using the default FakePCIID_XHCIMux kext. Now that it's on XHCI, I've only seen BT break once. I'll test it out a bit more (with EHCI enabled, but without FakePCIID_XHCIMux so that it's on XHCI by default) and see if it breaks again.

I've triple checked my port injector SSDT so I believe it's correct. The last time BT failed, the BT device was still active in IOReg but the firmware update failed.

EDIT: It just failed again on XHCI. It seems to timeout when attempting to upload the firmware itself. BT is still on the same port on IOReg. I even tried another kext on another site (BTFirmwareUploader) and it fails the same way - when it's uploading the firmware. Maybe this isn't a USB issue?
 
Last edited:
I've triple checked my port injector SSDT so I believe it's correct.

Yeah, I see in your previous ioreg that you have injected only PR11 (with correct UsbConnector) and only HP15.

Not sure about the portType=2 on HP15. That particular property is not well understood. The data I put into SSDT-UIAC-ALL.dsl is just a random guess. Apple uses various values for it, but I don't know the correlation to the actual hardware (as I don't have access to the various Macs using it).
 
Yeah, I see in your previous ioreg that you have injected only PR11 (with correct UsbConnector) and only HP15.

Not sure about the portType=2 on HP15. That particular property is not well understood. The data I put into SSDT-UIAC-ALL.dsl is just a random guess. Apple uses various values for it, but I don't know the correlation to the actual hardware (as I don't have access to the various Macs using it).
Hmm. Could that have an affect on my Bluetooth?

Take a look at this IOReg. This is what happens after a "failed" firmware upload (BT is dead right now). The kext output indicates that the firmware upload was successful.

EDIT: Looks like BT is always under HS07 when it is loaded in XHCI. Is there anything I might want to change in my port injector for this port?
 

Attachments

  • Josh-Lenovo.ioreg.zip
    489 KB · Views: 76
Status
Not open for further replies.
Back
Top