Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

No. The resulting SSDT-UIAC.aml is specific to your setup.

One remark : when I boot with kernel flag -uia_exclude_ss exclude=USR1,USR2 , USR1 still appeared in ioReg.
 
Below are notes to myself when I created an SSDT for USB ports on my GA-Z97n-wifi motherboard. In addition to the USB ports on the back of the board, I have a USB 3.0 hub attached internal to the motherboard for the front panel (the two ports listed below as "Front") and a remote power/reset switch that has a USB 2.0 hub attached internal to the motherboard (the two ports listed below as "Power Switch"). Early on in my build, I removed the internal wifi/bluetooth card that came with the motherboard. So, that internal USB connection is not included in my SSDT.

I used @RehabMan 's guide. It's very detailed and includes a lot of information. Not all of the information will apply to each Hackintosh. The guide is very comprehensive and it's updated to reflect the methods that work with current OS X, kexts and MultiBeast. I did this a few years ago for another build and the methods, tools and kexts have changed. Go slow, write things down and keep hackintoshing.

Here's what I did. This was done shortly after a clean install of Mojave. Again, my notes are to myself as I created an SSDT for my USB ports.



Creating an SSDT for USB port mapping


RehabMan Guide: https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/
RehabMan Download: https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/

During the clean install of Mojave and Post Install with MultiBeast, I used the following for USB:
  • Drivers > USB > 7/8/9 Series USB Support

    This enables full USB 2.0 and 3.0 support on 7/8/9 Series motherboards. Installs FakePCIID.kext and FakePCIID_XHCIMux.kext to /Library/Extensions.

    FakePCIID_XHCIMux moves all HSxx ports to EH01/PR11 and EH02/PR21
———————————————————

USB Port Discovery/Mapping Phase
  • Edit config.plist to rename EHC1->EH01 and EHC2->EH02
    • Add “Patches” under DSDT (see image below)
  • Install USBInjectAll.kext to L/E with KextBeast
  • Restart to test and map the installed ports (test needs to be done in batches because of the 15 port limit on the XHC controller)
    • For just HS ports, boot with -uia_exclude_ss at clover boot screen
      • The HSxx ports never got used since the FakePCIID_XHCIMux moves all the USB 2.0 ports under XHC to the EHC controllers that get renamed to EH01 and EH02 and show up as HPxx ports
    • For just SS ports, boot with -uia_exclude_hs at clover boot screen
      • Without the HSxx ports, I could see all 6 of the SSxx ports and test them
Available Port Addresses

EH01/PR11/HP11-18
EH02/PR21/HP21-28
XHC/HS01-HS14
XHC/SS01-SS06

Used Ports

Power Switch (black): left-HP21 right-HP22
Front (blue): top-HP12 / SS02 bottom-HP11 / SS01
Rear (black): top-HP23 bottom-HP24
Rear (blue): next to HDMI top-HP14 / SS04 bottom-HP13 / SS03
next to audio top-HP16 / SS06 bottom-HP15 / SS05

———————————————————

SSDT Creation Phase
  • Started with “SSDT-UIAC-ALL template” in MaciASL. This was cut-n-paste from https://github.com/RehabMan/OS-X-USB-Inject-All/raw/master/SSDT-UIAC-ALL.dsl into MaciASL
  • Removed all of the entries that didn’t correspond with the used ports above.
    • Kept
      • Hub1, Ports HP11-HP16
      • Hub2, Ports HP21-HP24
      • EH01, Port PR11
      • EH02, Port PR21
      • 8086_8xxx, Ports SS01-SS06
        • The device-id for my XHC@14 controller was “b1 8c 00 00”. There was no corresponding “8086_8cb1” section in the template, so “8086_8xxx” was used
  • Kept track of the various brackets when cutting out the unused ports and controllers.
  • The text that remained was compiled and saved via File/Save As “SSDT-UIAC” in the Format of “ACPI Machine Language Binary”.
———————————————————

Final Install
  • Keep USBInjectAll.kext in L/E (if it’s removed, the new SSDT has no effect)
  • Place “SSDT-UIAC” in EFI/CLOVER/ACPI/patched
  • Restart
  • Check with IOReg
ZREGoVU.png
 

Attachments

  • SSDT-UIAC.aml
    889 bytes · Views: 99
Last edited:
One remark : when I boot with kernel flag -uia_exclude_ss exclude=USR1,USR2 , USR1 still appeared in ioReg.

'exclude' is not a valid kernel flag for USBInjectAll.kext.
As per post USBInjectAll.kext README, correct kernel flag is 'uia_exclude'.
 
Great post!
I have a Gigabyte Z390 Pro, and I am trying to follow the guide to enable my USB 3.0 ports.

The problem I run into is that is my ioregexplore still won't show the SS01-SS09 ports even after adding -uia_exclude_hs boot. flag.

Any idea?

My additional kexts used

/Library/Extensions
$ ls -rlt
total 0
drwxr-xr-x 3 root wheel 96 Oct 27 12:16 FakePCIID_XHCIMux.kext
drwxr-xr-x 3 root wheel 96 Oct 27 12:16 FakePCIID.kext
drwxr-xr-x 3 root wheel 96 Nov 8 17:55 XHCI-unsupported.kext
 

Attachments

  • Screen Shot 2018-12-15 at 9.40.39 AM.png
    Screen Shot 2018-12-15 at 9.40.39 AM.png
    267.7 KB · Views: 88
  • Screen Shot 2018-12-15 at 9.56.10 AM.png
    Screen Shot 2018-12-15 at 9.56.10 AM.png
    670.8 KB · Views: 63
Great post!
I have a Gigabyte Z390 Pro, and I am trying to follow the guide to enable my USB 3.0 ports.

The problem I run into is that is my ioregexplore still won't show the SS01-SS09 ports even after adding -uia_exclude_hs boot. flag.

Any idea?

My additional kexts used

/Library/Extensions
$ ls -rlt
total 0
drwxr-xr-x 3 root wheel 96 Oct 27 12:16 FakePCIID_XHCIMux.kext
drwxr-xr-x 3 root wheel 96 Oct 27 12:16 FakePCIID.kext
drwxr-xr-x 3 root wheel 96 Nov 8 17:55 XHCI-unsupported.kext

-uia_exclude_hs has no effect without USBInjectAll.kext.
 
Uh!! I have SSxx show up now thanks a lot!

You might want to read the guide more carefully...
Requirement to have USBInjectAll.kext prior to port discovery is very clear in post #1.

Note:
Preparation for port discovery
...
Requirements:
...
- install USBInjectAll.kext (install to the system volume)
 
'exclude' is not a valid kernel flag for USBInjectAll.kext.
As per post USBInjectAll.kext README, correct kernel flag is 'uia_exclude'.
Ok, I copy/pasted it from the guide. Anyway the ports are working fine !
 
Hello ! Could someone please help me.
Follow the procedure , I noticed that all my USB 2.0 ports are not functional, both external and internal.
Back to WIN 10, with the help of usbtreeview, I found all my USB 2.0 ports are controlled by EHCI #2 (8086 8c2d), however, in Mojave, I can do nothing to make the ports activated. Though EH02 is listed in IOREgistry, everything below it were disappeared.

Anyone has the same problem ?
 

Attachments

  • debug_22379.zip
    3.7 MB · Views: 206
  • 螢幕快照 2018-12-16 17.44.16.png
    螢幕快照 2018-12-16 17.44.16.png
    150.4 KB · Views: 190
Back
Top