Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

This one is a tough one for me. I can barely understand the instructions. It is above my pay grade as they say.

My USB ports all seemed to work without and edits or injection, but I am trying to make a near perfect laptop.

I think I have created a custom SSDT and have all the right configs but my USB devices still show up as external (I think). And I am not entirely certain I got this right.

I would appreciate any feedback.
 

Attachments

  • debug_439.zip
    1.8 MB · Views: 60
Thanks @RehabMan. I should have done this ages ago, but now with 10.14.1 issues I decided to make the effort and yes, success!!!
 
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.

PLEASE NOTE: THIS MAY BE APPLICABLE TO JUST GIGABYTE X99-UD4 MOTHERBOARDS
my Motherboard's revision is 1.1

The easiest way would be:

STEP 1. Just download attached config.plist, open it with Clover Configurator and fix SMBIOS part of it (i put XXX there, as in picture below). You may copy your SMBIOS info from your current config.plist. Also, don't forget to edit Boot flags and Boot volume / Loader to match your current config.plist.

Screenshot 2018-11-02 at 22.21.07.png

Then inject your GPU or anything else that is specific to you. Once you done - save it and put it in CLOVER directory on your EFI.

STEP 2. Add XHCI-unsupported.kext (for X99 motherboards), USBInjectAll.kext, FakePCIID.kext and FakePCIID_XHCIMux.kext to CLOVER/kexts/Other

STEP 3. Add SSDT-UIAC.aml to CLOVER/ACPI/patched and restart.

That's it. All those steps provided by RehabMan are required to create a custom SSDT to fit each model of motherboard, but in this case our systems are almost identical, so just try to use mine. I can't guarantee a success, i don't know how each motherboard model varies across the globe and time, but it's worth a try. Just backup your working drive with Time Machine or something else.

I just finished reinstalling all apps to 10.14.1 so i can't say it's worth it. I didn't see any differences yet. I just like to be up to date. And i wanted to avoid loosing USB 3 ports after each update, so i invested time to create my custom SSDT.

As for EFI folder - i can't share it all, don't want my SMBIOS to be public. But honestly, there is no need to share EFI folder if you follow steps above.
 

Attachments

  • config.plist
    6.6 KB · Views: 170
  • SSDT-UIAC.aml
    957 bytes · Views: 118
Last edited:
PLEASE NOTE: THIS MAY BE APPLICABLE TO JUST GIGABYTE X99-UD4 MOTHERBOARDS
my Motherboard's revision is 1.1

The easiest way would be:

STEP 1. Just download attached config.plist, open it with Clover Configurator and fix SMBIOS part of it (i put XXX there, as in picture below). You may copy your SMBIOS info from your current config.plist. Also, don't forget to edit Boot flags and Boot volume / Loader to match your current config.plist.

View attachment 362489

Then inject your GPU or anything else that is specific to you. Once you done - save it and put it in CLOVER directory on your EFI.

STEP 2. Add XHCI-unsupported.kext (for X99 motherboards), USBInjectAll.kext, FakePCIID.kext and FakePCIID_XHCIMux.kext to CLOVER/kexts/Other

STEP 3. Add SSDT-UIAC.aml to CLOVER/ACPI/patched and restart.

That's it. All those steps provided by RehabMan are required to create a custom SSDT to fit each model of motherboard, but in this case our systems are almost identical, so just try to use mine. I can't guarantee a success, i don't know how each motherboard model varies across the globe and time, but it's worth a try. Just backup your working drive with Time Machine or something else.

I just finished reinstalling all apps to 10.14.1 so i can't say it's worth it. I didn't see any differences yet. I just like to be up to date. And i wanted to avoid loosing USB 3 ports after each update, so i invested time to create my custom SSDT.

As for EFI folder - i can't share it all, don't want my SMBIOS to be public. But honestly, there is no need to share EFI folder if you follow steps above.

Hey, thank you so much for taking your to do this. I very much appreciate it!

I'll have a go at it

Thx
 
Hey, thank you so much for taking your to do this. I very much appreciate it!

I'll have a go at it

Thx
Tell me how it goes :)

EDIT 1: And i recommend to use Mac Pro 6,1 SMBIOS, because different SMBIOS might mess up USB port configuration. I just remembered about this.
 
Last edited:
easy direction and easy to produce the kext, but USB 3.0 still ain't working.

Code:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleDevelopmentRegion</key>
    <string>English</string>
    <key>CFBundleGetInfoString</key>
    <string>1.0 Copyright © 2018 Headsoft. All rights reserved.</string>
    <key>CFBundleIdentifier</key>
    <string>com.Headsoft.USBPorts</string>
    <key>CFBundleInfoDictionaryVersion</key>
    <string>6.0</string>
    <key>CFBundleName</key>
    <string>USBPorts</string>
    <key>CFBundlePackageType</key>
    <string>KEXT</string>
    <key>CFBundleShortVersionString</key>
    <string>1.0</string>
    <key>CFBundleSignature</key>
    <string>????</string>
    <key>CFBundleVersion</key>
    <string>1.0</string>
    <key>IOKitPersonalities</key>
    <dict>
        <key>iMac18,3-XHC</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.AppleUSBHostMergeProperties</string>
            <key>IOClass</key>
            <string>AppleUSBHostMergeProperties</string>
            <key>IONameMatch</key>
            <string>XHC</string>
            <key>IOProviderClass</key>
            <string>AppleUSBXHCIPCI</string>
            <key>IOProviderMergeProperties</key>
            <dict>
                <key>port-count</key>
                <data>
                DAAAAA==
                </data>
                <key>ports</key>
                <dict>
                    <key>HS05</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>3</integer>
                        <key>port</key>
                        <data>
                        BQAAAA==
                        </data>
                    </dict>
                    <key>HS06</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>3</integer>
                        <key>port</key>
                        <data>
                        BgAAAA==
                        </data>
                    </dict>
                    <key>HS07</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>3</integer>
                        <key>port</key>
                        <data>
                        BwAAAA==
                        </data>
                    </dict>
                    <key>HS08</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>3</integer>
                        <key>port</key>
                        <data>
                        CAAAAA==
                        </data>
                    </dict>
                    <key>HS09</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>0</integer>
                        <key>port</key>
                        <data>
                        CQAAAA==
                        </data>
                    </dict>
                    <key>HS10</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>0</integer>
                        <key>port</key>
                        <data>
                        CgAAAA==
                        </data>
                    </dict>
                    <key>HS12</key>
                    <dict>
                        <key>UsbConnector</key>
                        <integer>3</integer>
                        <key>port</key>
                        <data>
                        DAAAAA==
                        </data>
                    </dict>
                </dict>
            </dict>
            <key>model</key>
            <string>iMac18,3</string>
        </dict>
    </dict>
    <key>OSBundleRequired</key>
    <string>Root</string>
</dict>
</plist>

Sorry for my English.

Before you use that app, make sure that
1)xhcl “enable” in BIOS Setup
2)usbportlimitedpatch in your config,
e.g. for 10.13.x
<dict>

<key>Comment</key>

<string>Change 15 port limit</string>

<key>Disabled</key>

<false/>

<key>Find</key>

<data>

g32MEA==

</data>

<key>InfoPlistPatch</key>

<false/>

<key>MatchOS</key>

<string>10.13.x</string>

<key>Name</key>

<string>com.apple.driver.usb.AppleUSBXHCIPCI</string>

<key>Replace</key>

<data>

g32Mfw==

</data>

</dict>
3) a usbinjectall.kext in your /kext/other
4) prepareing USB3 hardware and USB2 hardware

For tests:
1) only U3 hardware could detect U3 port out,U2 hardware only could detect U2 port
2) and a U3 physical port has two ports in systerm,a U3 port and a U2 port.
3) a U2 physical port only has one U2 port in systerm.
 
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:

Keep in mind that the _OSI->XOSI patch requires SSDT-XOSI.aml.
 
This one is a tough one for me. I can barely understand the instructions. It is above my pay grade as they say.

My USB ports all seemed to work without and edits or injection, but I am trying to make a near perfect laptop.

I think I have created a custom SSDT and have all the right configs but my USB devices still show up as external (I think). And I am not entirely certain I got this right.

I would appreciate any feedback.

Your SSDT-UIAC.aml has no effect because you coded it for 8086_a12f, but your XHC device-id is 09d2f.
 
Back
Top