I found this info here....
https://www.tonymacx86.com/threads/guide-10-11-usb-changes-and-solutions.173616/
Specific Recommendations (7-series, 8-series, 9-series, X99)
Do the EHCx->EH0x rename. It is a no-brainer first step.
For 7-series, 8-series, and 9-series, install FakePCIID_XHCIMux.kext (FakePCIID_XHCIMux has no effect without FakePCIID.kext, and is valid only for the Intel chipsets mentioned).
For many boards, assuming _UPC is correct on XHC, that will have everything working.
But two items at this point may cause problems:
- Your DSDT may be disabling USB3 due to improper Windows emulation. Apply the XOSI fix to address this.
- Built-in hub port injectors for your SMBIOS may be interfering. Install USBInjectAll.kext and use kernel flag -uia_exclude_xhc. This will enable the USBInjectAll port injectors for EH0x and the associated hubs, overriding the built-in hub port injectors, but keep DSDT control of XHC.
If there are some ports still not working, remove -uia_exclude_xhc kernel flag. If your XHC has more than 15 ports (device-id is 8086:8xxx), you will need the port limit patch, or will need to divide your testing into stages (using -uia_exclude_hs, -uia_exclude_ss, -uia_exclude_ssp).
Note: For X99 systems, the native Intel XHC drivers do not support 8086:8d31. You need an injector kext to enable it. See USBInjectAll.kext README for details.
Specific Recommendations (7-series, 8-series, 9-series, X99)
Do the EHCx->EH0x rename. It is a no-brainer first step.
For 7-series, 8-series, and 9-series, install FakePCIID_XHCIMux.kext (FakePCIID_XHCIMux has no effect without FakePCIID.kext, and is valid only for the Intel chipsets mentioned).
For many boards, assuming _UPC is correct on XHC, that will have everything working.
But two items at this point may cause problems:
- Your DSDT may be disabling USB3 due to improper Windows emulation. Apply the XOSI fix to address this.
- Built-in hub port injectors for your SMBIOS may be interfering. Install USBInjectAll.kext and use kernel flag -uia_exclude_xhc. This will enable the USBInjectAll port injectors for EH0x and the associated hubs, overriding the built-in hub port injectors, but keep DSDT control of XHC.
If there are some ports still not working, remove -uia_exclude_xhc kernel flag. If your XHC has more than 15 ports (device-id is 8086:8xxx), you will need the port limit patch, or will need to divide your testing into stages (using -uia_exclude_hs, -uia_exclude_ss, -uia_exclude_ssp).
Note: For X99 systems, the native Intel XHC drivers do not support 8086:8d31. You need an injector kext to enable it. See USBInjectAll.kext README for details.
So... solutions employed depend on what conditions are actually happening:
- BIOS settings for USB2 port routing on XHC ("auto" vs. "smart auto" vs. "enabled")
- renaming EHCx->EH0x to avoid built-in port injectors
- FakePCIID_XHCIMux to enforce USB2 port routing on XHC
- DSDT patches to simulate Windows (various versions) when running Darwin
- DSDT patches to avoid writes to port routing registers on XHC (nullifying XWAK, ESEL, XSEL)
- custom port injector kexts to match actual port configuration
- using USBInjectAll.kext to get things working so the actual ports can be determined
Still a newbie here as far as I am concerned...does anybody know where to edit EHCx->EH0x? DSDT?