Contribute
Register

[Guide] 10.11+ USB changes and solutions

Status
Not open for further replies.
Hi,
I've had all USB ports working on 10.11.4 but since upgrading to 10.12.2 not all ports (both USB 2 and USB 3) are working. Could someone please have a look at my ioreg dump and clover config/kexts. I've tried to follow the steps as per post #1 but failed and there is no USB 3 at all.


1) had a look at my BIOS settings
2) renamed EHCx->EH0x in DSDT
3) used FakePCIID_XHCIMux to route USB2 devices on XHC to EHCI
4) added USB inject all and the X99 injection

Thank you so much for all the valuable information in this thread!
 

Attachments

  • usb3_not_working.zip
    5.6 MB · Views: 116
Hi,
I've had all USB ports working on 10.11.4 but since upgrading to 10.12.2 not all ports (both USB 2 and USB 3) are working. Could someone please have a look at my ioreg dump and clover config/kexts. I've tried to follow the steps as per post #1 but failed and there is no USB 3 at all.


1) had a look at my BIOS settings
2) renamed EHCx->EH0x in DSDT
3) used FakePCIID_XHCIMux to route USB2 devices on XHC to EHCI
4) added USB inject all and the X99 injection

Thank you so much for all the valuable information in this thread!

To use USBInjectAll.kext, you must rename XHCI->XHC.
Then you'll be able to use -uia_exclude_hs to exlude all HSxx ports from XHC, since they are routed to EHCI anyway.
 
Hi again, I give up :\
I tried to figure out how to create my SSDT, but believe me, to no avail. Any chance of receiving some help? Without the SSDT I still get some issues connecting USB 3.0 devices...
 
Let me be more precise about what I need...
I can create an IORegistryExplorer output. That's not a problem.
The problem starts immediately thereafter. I don't know how to identify the ports and how to enter them in the SSDT template. Would anyone be kind enough to view my IOReg file and give me a hand?

Thanks :)
 
Let me be more precise about what I need...
I can create an IORegistryExplorer output. That's not a problem.
The problem starts immediately thereafter. I don't know how to identify the ports and how to enter them in the SSDT template. Would anyone be kind enough to view my IOReg file and give me a hand?

Thanks :)

It is a simple matter of:
- start with SSDT-UIAC-ALL.dsl
- deleting the configurations which have no applicability to your hardware
- deleting ports from the remaining config (eg. the one that corresponds to your XHC controller) that are not used
- changing UsbConnector to the correct value depending on the port type

Did you read the Skylake Starter Guide for clues?
 
Hi there, need some advice for my future USB injector, please.

After some initial failure, I deleted FakePCIID_XHCIMux.kext, as advised by RehabMan in order to get my missing Touchscreen going, which worked. Now everything is as expected: With USBInjectAll.kext, I have EH01 with PR11-PR18, and only on PR11 is the Apple USB2.0 Hub providing HP11-HP18. EH02 has never been seen on my machine, with or without "Mux". On EH01, nothing ever gets "mounted" - meaning: whatever external device I plug in whichever USB port, it always shows up under XHC@14 in Ioreg (again: all as it should be). My XHC-ID is 8086/9c31. I have 4 USB ports for external devices on the laptop and I call them ports A, B, C and D. My result after extensive testing is that my Laptop uses 11 of the 13 injected XHC-ports, working them like this:

HS01 -> port B if USB2.0
HS02 -> port A if USB2.0
HS03 -> port C if USB2.0
HS04 -> port D if USB2.0
HS05 always Webcam / internal
HS06 always BroadcomBTHC / internal
HS07 always Touchscreen / internal
(HS08 -> never used)
(HS09 -> never used)
SSP1 -> port A if USB3.0
SSP2 -> port B if USB3.0
SSP3 -> port C if USB3.0
SSP4 -> port D if USB3.0

I do not really get the whole picture fully, but assume this does not exceed the 15 port limit and thus the patch is not needed (even though the USB 2.0 Apple Hub on EH01 does show up as available under USB2.0 in System Report app). I assume EH01 and XHC ports are not counted together.

Now my questions are:

Do I exclude the Apple USB 2.0 Hub on EH01 and the seemingly redundant HS08 and HS09 on XHC with kernel flag "uia_exclude=HP11;HP12;HP13;HP14;HP15;HP16;HP17;HP18;HS08;HS09" - and is this what I should do to get a fully optimized and stable USB setup?

Or is it better to use a SSDT solution? ReadMe seems to suggest this, so if yes, then:
- Should I use SSDTvar1.dsl (attached) wherein I delete HS8, HS9 (thus "port-count" changed to "11") and the full EH01 (with R11 and all 8 AppleHub ports)?
- Or should I use SSDTvar2.dsl (attached) which keeps the EH01/R11/PR11-PR18 and also the unused HS08 and HS09?

Should I renamed the portTypes of HS01-HS09 to "0" (=USB2.0) because that is how they have shown to be used by the laptop in my tests? Or should they just be left on "3" as I remember reading something like "do not be shocked if USB2 devices shop up as USB3 in System Report app"?

And last question: Once the correct SSDT UIAC injector is ready and I want to place it (as .aml) in my EFI/CLOVER/ACPI/patched folder, how do I name it? Need I give it some number (the next available in my folder would be SSDT-4.aml)?

Thanks...
 

Attachments

  • SSDT-var2.zip
    817 bytes · Views: 81
  • SSDT-var1.zip
    670 bytes · Views: 80
  • kextcache-output.zip
    848 bytes · Views: 68
  • CLOVER.zip
    1.8 MB · Views: 86
  • ioreg.zip
    601.7 KB · Views: 85
Hi there, need some advice for my future USB injector, please.

After some initial failure, I deleted FakePCIID_XHCIMux.kext, as advised by RehabMan in order to get my missing Touchscreen going, which worked. Now everything is as expected: With USBInjectAll.kext, I have EH01 with PR11-PR18, and only on PR11 is the Apple USB2.0 Hub providing HP11-HP18. EH02 has never been seen on my machine, with or without "Mux". On EH01, nothing ever gets "mounted" - meaning: whatever external device I plug in whichever USB port, it always shows up under XHC@14 in Ioreg (again: all as it should be). My XHC-ID is 8086/9c31. I have 4 USB ports for external devices on the laptop and I call them ports A, B, C and D. My result after extensive testing is that my Laptop uses 11 of the 13 injected XHC-ports, working them like this:

HS01 -> port B if USB2.0
HS02 -> port A if USB2.0
HS03 -> port C if USB2.0
HS04 -> port D if USB2.0
HS05 always Webcam / internal
HS06 always BroadcomBTHC / internal
HS07 always Touchscreen / internal
(HS08 -> never used)
(HS09 -> never used)
SSP1 -> port A if USB3.0
SSP2 -> port B if USB3.0
SSP3 -> port C if USB3.0
SSP4 -> port D if USB3.0

It is a bit strange to see HS02/SSP1 and HS01/SSP2 related like that. You might want to double check.

I do not really get the whole picture fully, but assume this does not exceed the 15 port limit and thus the patch is not needed

Correct. 8086:9c31 has only 14 possible ports.

(even though the USB 2.0 Apple Hub on EH01 does show up as available under USB2.0 in System Report app). I assume EH01 and XHC ports are not counted together.

The 15-port limit is a "per controller" limit.
EH01/EH02/XHC are all separate controllers.

Now my questions are:

Do I exclude the Apple USB 2.0 Hub on EH01 and the seemingly redundant HS08 and HS09 on XHC with kernel flag "uia_exclude=HP11;HP12;HP13;HP14;HP15;HP16;HP17;HP18;HS08;HS09" - and is this what I should do to get a fully optimized and stable USB setup?

You can actually disable EHCI#1 with ACPI or in BIOS (if you have the option). XHCIMode=Enabled will usually disable the EHCI controllers.

Or is it better to use a SSDT solution?

You cannot set UsbConnector values via kernel flags. Must use an SSDT.

Should I renamed the portTypes of HS01-HS09 to "0" (=USB2.0) because that is how they have shown to be used by the laptop in my tests?

HSxx ports that are USB3 should be marked UsbConnector=3.
Internal ports always 255.
USB2 only HSxx ports should be UsbConnector=0.

And last question: Once the correct SSDT UIAC injector is ready and I want to place it (as .aml) in my EFI/CLOVER/ACPI/patched folder, how do I name it? Need I give it some number (the next available in my folder would be SSDT-4.aml)?

Numbering not necessary. Typically, you would use SSDT-UIAC.aml.
If you're using SortedOrder, make sure it is included in the list.
 
It is a bit strange to see HS02/SSP1 and HS01/SSP2 related like that. You might want to double check.

Yeah, isn't it? Made me wonder myself and I checked thoroughly. This is how it is, they are illogically cross-related :)

Internal ports always 255.

Do you mean the correct value for my internal USB devices Webcam HS05, BroadcomBTHC HS06 and Touchscreen HS07 would be 255?
 
Do you mean the correct value for my internal USB devices Webcam HS05, BroadcomBTHC HS06 and Touchscreen HS07 would be 255?

Yes.
 
You can actually disable EHCI#1 with ACPI or in BIOS (if you have the option). XHCIMode=Enabled will usually disable the EHCI controllers.

Cool I got the SSDT UIAC costum to work but the EH01 and Apple USB 2 hub still show up in Ioreg. I have no option to disable any of the USB controllers in BIOS (A14) so how do I do it in ACPI and is it recommendable? Thanks :)
 
Status
Not open for further replies.
Back
Top