Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Thank you for suggestion regarding kext installation.
It was my bad, i indeed had XHCI-unsupported.kext and USBInjectAll.kext's, but i've been playing with both - 10.14.0 and 10.14.1, both on separate SSD's. I started it on 10.14.1, because USB 3 wasn't working on that version at all and i wanted to keep 10.14.0 as is. On 10.14.1 IOregistryExplorer showed total mess so i decided to boot to 10.14.0 to see how everything is there. And i forgot that i'm on 10.14.0. In 10.14.1 i changed EHC1->EH01 and EHC2->EH02, as well _OSI to XOSI and XHC1 to XHC. I added PMHeart's kextToPatch. But i forgot to do it on 10.14.0. Now i've done it and it's a lot better but still not perfect. Now situation is like this:

FRONT (all USB 3.0):
USB #1: SSP1 and HP11
USB #2: SSP2 and HP12

BACK:
USB 2.0 row (4 ports): HP23 | HP24 | HP25 | HP26
USB 3.0 row (4 ports): all four of them SSP5 and HP15
USB 3.0 row (2 ports): SSP3 and HP13 | SSP4 and HP14

So there's no more PRO1 and it's more structured. But there's no HS01-14, only HP11-15. And there is still no SSP6. I also see PR's.

I attached some screenshot's:

View attachment 362282 View attachment 362283

EDIT 1: I forgot to test internal USB 2 headers. They are HP18 and HP22.

EDIT 2: I removed CLOVER and IOREG attachments as i'm might have figured it out myself. And because my SMBIOS was visible in IOREG file.

Sounds quite normal for when you're routing XHC USB2 to EHCI (with FakePCIID_XHCIMux.kext).
 
Wonder why do I keep reading pages and pages of this guide countless times if I dont understand 90% of the keywords and terminology used in this specific guide, the amount of technical skills needed to accomplish this seems to be off the charts and I have nothing but mad respect for you, man. Seriously, reading you troubleshooting others USB configs is nothing but pure gold. You are one smart mother ***, ill give you that.

Anyhow, my hack seems to be working fine for now with the KextsToPatch entry but I am indeed aware this is not a definitive approach as I do encounter issues with deep sleep (normal sleep seems to be working fine) and am also aware USB 3.0 will break if I ever update, as the codes change with every update. Besides that, is there any pro of this custom SSDT vs the KextsToPatch entry? Would you consider the SSDT to be"mandatory" for a regular user?

As for the quoted post, didnt know you where into Skiing and that was the main reason of your username, its certainly not common to find such people in the ski world lol. We dont get much of those around here!

Anyhow, if you ever head south to Bariloche, Argentina (more precisely, Cerro Catedral Ski Resort), do reach out, Ill be sure to hook you up with some of the best skiing spots the mountain has to offer along with some empanadas you wont forget in your damn life, youll most definitely need some rehab after those! Ill promise not to bug you non stop with USB SSDT related questions, lol.

Anyhow, this might come off as a weird post as it was a mix of asking USB questions alongside expressing my gratitude towards your work here for literally nothing but virtual likes, I guess. So yeah, no ass licking or anything, just legit impressed at the amount of time invested in the guides/kexts/utilities made by you for nothing in exchange but helping the community.

Just read this after typing it quite fast and not really sure any of this makes any sense and I just realized I could have redacted this so much better if I had more time, but yeah, all in all I just hope the main goal of this message was delivered and understood just fine. Keep it up!

Stompy-

PD: Freestlye / Racing?

Thanks for the compliments...

Key advantages to using an SSDT (or a port injector kext) to limit injected ports within the 15-port limit:
- no chasing down patches to defeat the port limit with each update
- the port limit is not reliable anyway (it causes a buffer overrun, which leads to unreliable USB)
- no port limit for 10.14.1 has been published (AFAIK)

As far as type of skiing, I used to do some recreational racing (GS, and a bit of super-G), but now hunt powder and bumps.
 
First of all, these instructions are awesome. I built my SSDT using them and seem to have what I wanted. With the latest 10.14.1 update, my 8th-Gen, 300-series Hack seems stable & perfect. Very appreciate the guide here, @RehabMan.

For those nervous about attempting ... it is not that hard. I needed to do something because my front USB3 ports weren't working properly. So I read the guide and crapped myself.

But anyway I downloaded the relevant tools and opened them up. I could easily see exactly what the instructions were telling me to look for.

So I tried it. Plugging in the dongles (USB2 and also 3) is easy and you can see when they pop up. You take a note each time. I did this directly in the stock SSDT-UIAC-ALL.dsl using a text editor.

Then I removed the redundant entries, as per instructions. I also commented out several ports (back/right/top & bottom for both USB2 & 3) because otherwise I'd blow the 15-port limit. You can see the resulting source file (attached).

Finally I compiled the SSDT and stuffed it where it was supposed to go. Rebooted and checked that only the entries I'd asked for appeared in the IORegistryExplorer. They do! (attached).

Once again, thanks so much to @RehabMan and all contributors for this outstanding site. Couple of days ago I very nearly dropped a couple of grand on a new Mac Mini because they look great now. But with the 10.14.1 update my Hack is better & way cheaper!
 

Attachments

  • SSDT-UIAC-ALL.dsl
    4.7 KB · Views: 101
  • IORegistry.png
    IORegistry.png
    204 KB · Views: 161
Last edited:
First of all, these instructions are awesome. I built my SSDT using them and seem to have what I wanted. With the latest 10.14.1 update, my 8th-Gen, 300-series Hack seems stable & perfect. Very appreciate the guide here, @RehabMan.

For those nervous about attempting ... it is not that hard. I needed to do something because my front USB3 ports weren't working properly. So I read the guide and crapped myself.

But anyway I downloaded the relevant tools and opened them up. I could easily see exactly what the instructions were telling me to look for.

So I tried it. Plugging in the dongles (USB2 and also 3) is easy and you can see when they pop up. You take a note each time. I did this directly in the stock SSDT-UIAC-ALL.dsl using a text editor.

Then I removed the redundant entries, as per instructions. I also commented out several ports (back/right/top & bottom for both USB2 & 3) because otherwise I'd blow the 15-port limit. You can see the resulting source file (attached).

Finally I compiled the SSDT and stuffed where it was supposed to go. Rebooted and checked that only the entries I'd asked for appeared in the IORegistryExplorer. They do! (attached).

Once again, thanks so much to @RehabMan and all contributors for this outstanding site. Couple of days ago I very nearly dropped a couple of grand on a new Mac Mini because they look great now. But with the 10.14.1 update my Hack is better & way cheaper :headbang:

Congrats... nice to hear about success stories here and there.

Goes to show: Do not be afraid... Just dive in and get the job done.
 
Thanks RehabMan,

Got some rest and went back at it today. A lot of following instructions and a little trial and error has got finally got my USB 3.0 ports working with both USB 2.0 and 3.0.

Goes to show: Do not be afraid... Just dive in and get the job done.
 
Thanks RehabMan,

Got some rest and went back at it today. A lot of following instructions and a little trial and error has got finally got my USB 3.0 ports working with both USB 2.0 and 3.0.

Enjoy...
 
I also want to thank RehabMan,

Although, instructions are quite overwhelming, sometimes repetitive and and very technical, i finally managed to make my custom SSDT and it works perfectly on 10.14.1. Once i understood that 9th series chipsets doesn't necessarily need to be HS01-HS11 and SSP1-SSP4, and that it can also be HP (USB 2) and PR (hubs), everything fell into place. I just looked at 9th series line and ignored what was written above because i thought it was for other motherboards.

Thank you very much, RehabMan.

I also attach my Gigabyte X99-UD4 SSDT (AML compiled and DSL version) for everyone to whom it may be useful. Please note, that internal and/or front port's are commented to my own setup, as well, as it's class'es/types might be different. You might need to edit it a little bit. Other than that, it should be good. And for X99 system, as RehabMan said, it requires XHCI-unsupported.kext and USBInjectAll.kext, as well as this in config.plist - ACPI - DSDT:

<dict>
<key>ACPI</key>
<dict>
<key>AutoMerge</key>
<true/>
<key>DSDT</key>
<dict>
<key>Name</key>
<string>DSDT.aml</string>
<key>Patches</key>
<array>
<dict>
<key>Comment</key>
<string>change _OSI to XOSI</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
X09TSQ==
</data>
<key>Replace</key>
<data>
WE9TSQ==
</data>
</dict>
<dict>
<key>Comment</key>
<string>change EHC1 to EH01</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RUhDMQ==
</data>
<key>Replace</key>
<data>
RUgwMQ==
</data>
</dict>
<dict>
<key>Comment</key>
<string>change EHC2 to EH02</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
RUhDMg==
</data>
<key>Replace</key>
<data>
RUgwMg==
</data>
</dict>
<dict>
<key>Comment</key>
<string>change XHC1 to XHC</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
WEhDMQ==
</data>
<key>Replace</key>
<data>
WEhDXw==
</data>
</dict>
</array>
</dict>
</dict>

EDIT 1: And don't forget this in config.plist - KextsToPatch:

<key>KextsToPatch</key>
<array>
<dict>
<key>Comment</key>
<string>disable port limit in XHCI kext (credit PMHeart)</string>
<key>Disabled</key>
<false/>
<key>Find</key>
<data>
g/sPD4MDBQAA
</data>
<key>InfoPlistPatch</key>
<false/>
<key>MatchOS</key>
<string>10.14.x</string>
<key>Name</key>
<string>com.apple.driver.usb.AppleUSBXHCI</string>
<key>Replace</key>
<data>
g/sPkJCQkJCQ
</data>
</dict>
</array>
</dict>
 

Attachments

  • SSDT-UIAC-ALL.dsl
    6 KB · Views: 90
  • SSDT-UIAC.aml
    957 bytes · Views: 101
Last edited:
I also want to thank RehabMan,

Although, instructions are quite overwhelming, sometimes repetitive and and very technical, i finally managed to make my custom SSDT and it works perfectly on 10.14.1. Once i understood that 9th series chipsets doesn't necessarily need to be HS01-HS11 and SSP1-SSP4, and that it can also be HP (USB 2) and PR (hubs), everything fell into place. I just looked at 9th series line and ignored what was written above because i thought it was for other motherboards.

Thank you very much, RehabMan.

I also attach my Gigabyte X99-UD4 SSDT (AML compiled and DSL version) for everyone to whom it may be useful. Please note, that internal and/or front port's are commented to my own setup, as well, as it's class'es/types might be different. You might need to edit it a little bit. Other than that, it should be good. And for X99 system, as RehabMan said, it requires XHCI-unsupported.kext and USBInjectAll.kext, as well as this in config.plist - ACPI - DSDT:



EDIT 1: And don't forget this in config.plist - KextsToPatch:

Hey Kittciokas,

I am glad to see you have it all working for your setup. I have pretty much the same system as you, it runs perfectly fine on 10.14. Someone on a different site created a DSDT file for me and all USB works and even sleep.

I wanted to update to 10.14.1 but am hesitant because I am worried I will mess up my USB. I had tried RehabMan's method before but ran into many problems until I gave up cause it's really way over my technical knowledge.

I just wanted to ask you

1. Do you see any benefits at all by updating to 10.14.1?
2. Care to share it the fastest way possible the steps you have taken to get all to work?
3. Care to share your EFI folder?

Thanks man

B.
 
Back
Top