Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

I have been at this a few times now, as I couldn't get my USB 3.0 external drives to work which was inconvenient, but now I have lost connection to my audio interface which makes my music production impossible, so I utterly need to work this out now.

I have followed the steps in the guide to copy the rename patches 0, 1, and 2 from the provided config.plist to my plist's DSDT patches. I have used the uia_ignore_rmcf boot argument and installed the XHCI-unsupported.kext.

In my IO registry, I am able to identify that all of my physical ports operate on HS01-HS06, so HS07-14 are unused. But I can't figure out how to show any SS0x anywhere in my registry. My registry looks just like yours in the left image of "Injection of just HSxx:" forgive my lack of knowledge, but I don't know exactly how to execute "Injection of just HS03,SSxx,USRx:" What should I be using to inject these? I have the USBInjectAll.kext installed to my system. I just can't progress with this guide with no SS0x appearing. I have read this and the sister guide through and through, and can't figure how to view my SS0X in the IOReg. I am fully dedicated to getting this to work, I just think I am missing something as I don't know how to control which ports I am injecting, for steps such as "Injection of just HS03,SSxx,USRx:"

Thank you! Trying my hardest to get this sorted out.

Think about the USBInjectall as the guy that injects everything, put it on Clover/Kext and forget it.
The SSDT is the guy that filters only the software connectors linked to the physical ports your machine effectively uses.

In my case, coudn't use the -uia_exclude_hs or uia_include flags on my configuration job. As a workaround, I simply used a transitory SSDT cutting out all the HSxx connectors. That allowed me to find all the SSxx and USRx on my mobo.

Try this:

  1. Assuming you already know which ports are needed for USB2 and USB3 devices on the HSxx series, create a dummy (transitory) SSDT (using a device that meets your system), WITHOUT HSxx ports, except those one used by your keyboard and mouse, otherwise you gonna loose them. Put it on Clover/ACPI/Patched and reboot.
  2. Alter reboot, you shoud see all the SSxx series. Proceed with the USB3 port testing, as described in the guide.
  3. At this point, you may have all the USB2/USB3 connectors needed in your system. So, now you can create your effective SSDT file with only the needed HSxx and SSxx software connectors (USRx are usually ignored).
  4. Replace the dummy SSDT with the right one on your Clover/ACPI/Patched and reboot.
Don't forget to put a XHCI injector on Clover/Kext, if needed.
 
Last edited:
I just want to thank RehabMan for this guide.

I have used it in the past for a desktop, but this time I used it on my new project (a Lenovo Ideapad 330s-15IKB). All the USB ports (internal and external) were working without a custom SSDT, but since it had a few extra ports that were unused, I decided to remove them as per post #1, "disabling USB ports that are not used can have some power saving properties, and can avoid bugs with sleep, restart, or shutdown."

So if anyone needs a custom SSDT for a Lenovo IdeaPad 330s-15IKB, let me know.
 
I was able to booth my High Sierra to check my IOReg. I notice that it uses SSP5 and SSP6 for my USB 3s. But on Mojave, when I install USBinjectAll.ktext it replaces SSP to SS. Is there anyway to force inject SSP instead of SS to see if it will recognize SSP5 and SSP6 in Mojave?

The name SSPx vs. SSxx does not matter.
 
Once somebody creates a custom SSDT for a certain motherboard, that SSDT is valid for the model or for that person's motherboard only?

Typically each user's use of the internal headers will differ.
 
I'm stuck at USB2 speed, only one of the three ports runs at full speed. All are USB3, according to this:
Asus Website G551JW Spec
and my own testing in Windows (all ports read at 90-100 MB/s)

I use Multibeast at first, it installed the port limit patch, and it worked but still only one full speed port. I did what the post told me and found out:
  • EH02 / PR21 / HP21: BT
  • EH02 / PR21 / HP23: Cam
  • EH01 / PR11 / HP12 and HP13: 2 port which run at USB2
  • XHC/SS01: run at USB3. When I use an USB2 sticks, it says that the USB is attached to EH01 / PR11 / HP11
And the situation stays the same: 2 USB2, 1 USB3.

How can I fix this? and what to choose to keep in the template, HUB with all those HP ports or EH with just (mixed) PR ports? Thanks!

Read post #1 and follow as written.
 
Hi @RehabMan
Attached is the debug file generated by gen_degub script.
I followed your guide and create a custom SSDT for my USB.
I also followed your guide for proper USB power injection.
My issues are:
USB ports works randomly and I suspect not at full speed. Also, after trying to mount n apple Superdrive which refuses to work asking for power, from that point I have sudden shutdowns or restarts especially after sleep.
Before that, I was happy to have a fully working sleep and deep sleep also.

Regards
SAK

Your ioreg shows VirtualBox installed. Remove.
 
I apologize if this has been asked before. I've been successful in documenting all my ports, but there are a total of 20 and I've gathered from this thread if I want a stable system I should reduce that to 15 or less rather than implementing the port limit patch.

If a USB 3 hub is plugged into a USB3 port do I need to activate the HSXX port for that connector? Will a USB 2 device plugged into that hub be seen?

A USB3 hub will have both an SSxx and HSxx component.
 
Hi @RehabMan, I'm trying to create a Custom SSDT for USBInjectAll.kext, but when I install the kext, my USB ports won't work anymore (except for mouse). When I insert a USB key, MacOS says "USB Accessory Needs Power". So I cannot proceed any further.
Here is my report from gen_debug.sh
Thank you.

7-series chipsets typically need FakePCIIID_XHCIMux.kext (+FakePCID.kext). Your ioreg indicates it is not being used.
 
Has anyone worked with a Gigabyte Z270M-D3H? I'm working through some of the USB3 back ports. I'm using iMac 14,1 and USBInjectAll to attempt to see the ports. Looks like only USB2 will even show up in IOReg. When I plug a device in a 3.0 port or the USB-C port, I never see the device. If I'm seeing this correctly, it appears there are 12 ports on this board 9 under the 15 port limit.)

Read post #1.
 
Back
Top