Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Hi UtterDisbelief,

I gave it a try today and followed your guide, but I did not succeed.
Could you please give it a look ? I configured port HS01-HS09 + SS01-SS06.
In IOReg there's also something I don't quite understand;
HS14 is displayed as AURA LED controller, but I could not find this as an internal USB connection,
nor did I connect any RGB bling.
Do you think I can ignore HS14, or should I include it in the maximum of 15 ports ?

Thank you for all the help & efforts !

Kind regards,

Chimiel
 

Attachments

  • iMac.ioreg
    8.3 MB · Views: 80
  • SSDT_USB.dsl
    4.1 KB · Views: 64
  • mobo port mapping en.jpg
    mobo port mapping en.jpg
    315.5 KB · Views: 106
Last edited:
Hello. Well, I guess I need some help. I've got a slew of Kext patches in my config.plist (see attached). Everything works, and I' a believer in "if it ain't broke..." BUT several folks who I respect and who know more than I do, swear up and down that my system will be more stable, faster, and make me breakfast in the morning, if I will just limit my ports to 15, and get rid of all those patches. Good enough. I'm all for rock-solid.

So, I thought I'd followed the instructions carefully. But in exchange, I got a 4-hour journey trying to even get access to my machine again. Even the original Unibeast stick wouldn't boot it. I'd get thru the second white apple... and the machine would do a hard reboot, no matter what I tried. (snip, thankfully... ;-)_ Well, I finally got back to my pre-adventure setup, and while this may be foolish, I'm willing to give it a go again, if it really will make things better.

One thing I may have fouled up, is that if a USB 3 port was ONLY going to be used for USB 3, then I thought I could just activate the SS and leave the HS out. Maybe wrong? Maybe wrong on HS01/SS01 even though SS01 didn't show as used?

I have 2 PCIe cards, which show up in the device tree as "USB 3.0 Bus"
Host Controller Driver: AppleUSBXHCIFL1100
PCI Device ID: 0x1100 PCI Revision ID: 0x0001 PCI Vendor ID: 0x1b73

the "USB 3.1 Bus" however seems to be "the one":
Host Controller Driver: AppleIntelCNLUSBXHCI
PCI Device ID: 0xa36d
PCI Revision ID: 0x0010
PCI Vendor ID: 0x8086

... so that's what I used for my SSDT-USB template (see attached)

I thought I was careful and cautious, thinking that if I left my kext patches in the config.plist, all would be well.
Just enough knowledge to be dangerous, and I obviously blew it up.

So: if you're seeking a few guffaws at my expense or are just bored, I've attached my config.plist, the SSDT-USB template I used, and screencap of the original HS/SS ports.

Thanks to any and all who care to dip their toes into this mess I've made.
orig ports.jpg
 

Attachments

  • config.plist
    11.3 KB · Views: 79
  • SSDT-USB-Template.dsl
    4.2 KB · Views: 80
Hello. Well, I guess I need some help. I've got a slew of Kext patches in my config.plist (see attached). Everything works, and I' a believer in "if it ain't broke..." BUT several folks who I respect and who know more than I do, swear up and down that my system will be more stable, faster, and make me breakfast in the morning, if I will just limit my ports to 15, and get rid of all those patches. Good enough. I'm all for rock-solid.

So, I thought I'd followed the instructions carefully. But in exchange, I got a 4-hour journey trying to even get access to my machine again. Even the original Unibeast stick wouldn't boot it. I'd get thru the second white apple... and the machine would do a hard reboot, no matter what I tried. (snip, thankfully... ;-)_ Well, I finally got back to my pre-adventure setup, and while this may be foolish, I'm willing to give it a go again, if it really will make things better.

One thing I may have fouled up, is that if a USB 3 port was ONLY going to be used for USB 3, then I thought I could just activate the SS and leave the HS out. Maybe wrong? Maybe wrong on HS01/SS01 even though SS01 didn't show as used?

I have 2 PCIe cards, which show up in the device tree as "USB 3.0 Bus"
Host Controller Driver: AppleUSBXHCIFL1100
PCI Device ID: 0x1100 PCI Revision ID: 0x0001 PCI Vendor ID: 0x1b73

the "USB 3.1 Bus" however seems to be "the one":
Host Controller Driver: AppleIntelCNLUSBXHCI
PCI Device ID: 0xa36d
PCI Revision ID: 0x0010
PCI Vendor ID: 0x8086

... so that's what I used for my SSDT-USB template (see attached)

I thought I was careful and cautious, thinking that if I left my kext patches in the config.plist, all would be well.
Just enough knowledge to be dangerous, and I obviously blew it up.

So: if you're seeking a few guffaws at my expense or are just bored, I've attached my config.plist, the SSDT-USB template I used, and screencap of the original HS/SS ports.

Thanks to any and all who care to dip their toes into this mess I've made.View attachment 406838

Hi there.

No one's laughing. Getting a Hackintosh to work correctly, or as near as the real thing, can be fraught with problems. Like you I actually believe that "if it aint broke, don't fix it" too. I can understand why you want to get your system USB to work as a real Mac though.

Okay, looking at your files:

1) The IORegistryExplorer screen grab shows the port-limit removal patch is working nicely :thumbup:

2) In your config.plist you should remove or disable all the other port-limit removal patches except the one for your macOS. I'm guessing you have installed Mojave 10.14.5, so remove/disable all those 10.13 port-limit patches.

3) In your SSDT there is an error for your HS14 bluetooth header port. You have the port address as "0x03" when I think it should be "0x0e".

Otherwise all looks good.

Once the USB ports are all working as intended you can then disable the port-limit removal patch. Leave USBInjectAll.kext in place though.

If the problem persists then check what other kexts you installed to work with USB.

:)
 
Hi UtterDisbelief,

I gave it a try today and followed your guide, but I did not succeed.
Could you please give it a look ? I configured port HS01-HS09 + SS01-SS06.
In IOReg there's also something I don't quite understand;
HS14 is displayed as AURA LED controller, but I could not find this as an internal USB connection,
nor did I connect any RGB bling.
Do you think I can ignore HS14, or should I include it in the maximum of 15 ports ?

Thank you for all the help & efforts !

Kind regards,

Chimiel

Hi there,

1) There is one error in the SSDT I can see. For the package type at the top you have "8086_a2f" but this should be "8086_a2af". The second 'a' is missing.

2) Looking at your IORegistryExplorer output it shows you have the port-limit removal patch in place and all available chipset ports enabled on XHCI so that is fine :thumbup:

3) The Aura internal USB port can be configured if you want to, but if you don't and are not going to use the LED lighting, then it should be okay to ignore it.

4) Your motherboard features an additional ASMedia chipset controller for the Red ports on the back and case-front ports (according you ASUS Specs etc). These seem to be showing up okay in the XHCI tree - which is a good thing.

:)
 
Hi there,

1) There is one error in the SSDT I can see. For the package type at the top you have "8086_a2f" but this should be "8086_a2af". The second 'a' is missing.

2) Looking at your IORegistryExplorer output it shows you have the port-limit removal patch in place and all available chipset ports enabled on XHCI so that is fine :thumbup:

3) The Aura internal USB port can be configured if you want to, but if you don't and are not going to use the LED lighting, then it should be okay to ignore it.

4) Your motherboard features an additional ASMedia chipset controller for the Red ports on the back and case-front ports (according you ASUS Specs etc). These seem to be showing up okay in the XHCI tree - which is a good thing.

:)
YES YES YES !
It works !
Thank you sooooooooooo much !
 

Attachments

  • Screenshot 2019-05-19 at 11.34.29.png
    Screenshot 2019-05-19 at 11.34.29.png
    73.6 KB · Views: 71
Hi there.
No one's laughing. (snip)

Well, I'm smiling at least: your catches of my errors worked just fine, and I've finally ready to settle down and start using this beast.

Deepest thanks for your help and courtesy!
 
Hello there. I just did a bunch of port discovery activities today using i/o and observed the same conditions using Hackintool, just to see if that program contradicted my findings. I have some lists regarding my mobo and my Fractal case.
Although I've discovered my mobo (and case) ports, I'm finding it difficult to wrap my head around editing an existing SSDT patch, even with the required software tools.

I'm also wondering about the latest USB Port Limit Patches #1, #2, and #3 by PMHeart (found in the kext patch drop-down menu in Clover Configurator) and its possibility of eliminating the need for the USBInjectAll.kext or XHC USB type of kext. -I just don't know which method is "better" –I just want to make my build as awesome as possible.
Thanks in advance for bearing with me here. CC: @jb007
 

Attachments

  • Simplified screen Shot of the ports in io reg.png
    Simplified screen Shot of the ports in io reg.png
    87.9 KB · Views: 68
  • May 2019 USB Port discovery on Gigabyte Z370 Aorus Gaming 7 (Rev. 1….pdf
    33.6 KB · Views: 91
  • GA-Z370 Aorus Gaming 7 USB.jpg
    GA-Z370 Aorus Gaming 7 USB.jpg
    390.1 KB · Views: 78
  • via Hackintool.png
    via Hackintool.png
    152.4 KB · Views: 71
  • SSDT-EC.aml
    63 bytes · Views: 74
  • SSDT-USBX.aml
    185 bytes · Views: 72
  • GC-Z370_Aorus7.ioreg
    8.1 MB · Views: 70
Last edited:
Hello there. I just did a bunch of port discovery activities today using i/o and observed the same conditions using Hackintool, just to see if that program contradicted my findings. I have some lists regarding my mobo and my Fractal case.
Although I've discovered my mobo (and case) ports, I'm finding it difficult to wrap my head around editing an existing SSDT patch, even with the required software tools.

I'm also wondering about the latest USB Port Limit Patches #1, #2, and #3 by PMHeart (found in the kext patch drop-down menu in Clover Configurator) and its possibility of eliminating the need for the USBInjectAll.kext or XHC USB type of kext. -I just don't know which method is "better" –I just want to make my build as awesome as possible.
Thanks in advance for bearing with me here. CC: @jb007

Hi there.

Which method you go with is basically your call. Hackintool produces both a USBPorts.kext, which allows removal of USBInjectAll.kext - AND - it now produces an SSDT_UIAC.aml which does need USBInjectAll.kext (because the SSDT is a configuration file for the kext). So it caters for both approaches in one go. Some people prefer the original Hackintool method using a codeless kext. If you want to explore that avenue further you should check out the ASUS Guide here, by @MacMan . It shows you how to implement this method and if you keep reading you'll see other members have used this to configure Gigabyte motherboards too.

Your port-limit removal patches seem to be working fine in that screen grab. (Remember there is a new patch for 10.14.5 now).

The reason why your Red USB back-panel port appears in the "RP" section of the IORegistryExplorer tree is because it is controlled by an ASMedia chipset. Similarly your Thunderbolt 3 card appears here too, even though it is an Intel chipset, as it is not the main Z370 XHC etc.

All of this of course, is way beyond a Beginner's Guide!

If you have a specific problem a good idea would be to start a new thread so that the experts out there will take a look. They are rarely going to investigate a beginner's guide etc. :thumbup:

:)
 
Hi Guys, I need some help: I had to switch to imacpro1,1 SMBios because my new Radeon VII was freezing all the time with MacPro6,1. I have a X9Dai with Dual Sandybridge E5-2670. USB2.0 has stopped working, they worked well in MacPro6,1 by only renaming the USBE and EUSB to EH01 and EH02 and using the USBInjectall.kext by Rehabman. The Board has two EHCI Controllers EUSB and USBE (renamed to EH01 and EH02) and the Board has also a Renesas uPD720200 on which I gave up completely. But now, even the EHCI Controllers are not working. They are shown in the System Information as USB 2.0 Bus, but not working. I tried the USBMap Method, but no Ports show up. Any hint? I attach the Ioreg and Screenshots of the DSDT. Thanks!
 

Attachments

  • ioreg.ioreg
    13.9 MB · Views: 94
  • Screenshot 2019-05-21 at 12.08.14.png
    Screenshot 2019-05-21 at 12.08.14.png
    928.4 KB · Views: 72
  • Screenshot 2019-05-21 at 11.49.52.png
    Screenshot 2019-05-21 at 11.49.52.png
    200.3 KB · Views: 90
  • DSDT.aml
    52.1 KB · Views: 96
Hi Guys, I need some help: I had to switch to imacpro1,1 SMBios because my new Radeon VII was freezing all the time with MacPro6,1. I have a X9Dai with Dual Sandybridge E5-2670. USB2.0 has stopped working, they worked well in MacPro6,1 by only renaming the USBE and EUSB to EH01 and EH02 and using the USBInjectall.kext by Rehabman. The Board has two EHCI Controllers EUSB and USBE (renamed to EH01 and EH02) and the Board has also a Renesas uPD720200 on which I gave up completely. But now, even the EHCI Controllers are not working. They are shown in the System Information as USB 2.0 Bus, but not working. I tried the USBMap Method, but no Ports show up. Any hint? I attach the Ioreg and Screenshots of the DSDT. Thanks!

Hello there.

First up - This is a quite specialised question way beyond a beginner tutorial, so it might be worth starting a new thread so that the experts out there should notice. They rarely view the beginner's guides. :thumbup:

Okay, that said:

1) EH01 and EH02 are correct names and usually follow the - EUSB to EH01 and USBE to EH02 renaming.

2) The Renesas USB3 chipset is classed as 3rd Party so might work with GenericUSBXHCI.kext. Worth trying? This hasn't been updated for a long while now so it will depend on which version of macOS you are using. You don't want any crashes or lock-ups so back-up before any tests etc.

3) Sadly I couldn't load your IOREG file. Maybe corrupted or saved from a different version?

4) The biggie: USBInjectAll is designed to be used with a custom "injector" file - SSDT_UIAC.aml etc. This is what should make visible ports actually work. If you don't want to hand-code one (as per this beginner's guide) then you can use the latest version of Hackintool to create one automatically.

System Definitions are well-known for having so many unexpected effects on a smoothly running PC, when they are changed.

:)
 
Back
Top