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