Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Thank you very much for your time. It was real help!
HS09 seems better option to be 0 as you mentioned.
Hope someone knows and share with us.

Thank you again
 
Thanks for your reply. Sorry for my bad english

I've a desktop system (Asus P8z77-V Pro, Corei7 3770K) on macOS 10.13.6. My USB-SSDT + USBInjectAll 0.6.7 works fine since long time ago. The other day, I try v0.6.9 with issues mentioned in my previous post: reboot after Clover GUI.

I can use the gen_debug.sh tool but I don't understand why.

EDIT: all works fine now with v0.6.9. It seems to be a High Sierra's issue with my HDD

You failed to attach any problem reporting files.
 
Hi RehabMan
Sorry for my bad english
I don't know if it's the right place but my custom SSDT for USB is not always working.

Created it by your guide as I wanted to disable internal wifi and use mine, which works great now.
The only problem is that some ports, especially USB 3.0 on my case not always working.

I will upload the gen_debug and SSDT-UIAC

You will need to provide details on what you mean by "not always working".

Looks like your UsbConnector values are wrong. There should be equal number of SSxx/UsbConnector=3 as HSxx/UsbConnector=3.
 
much better now. In my experience, front panel (hs9) should be set to USB (either 0 or 3, in you case 0), rather than 255. But I let others confirm this.

It depends on whether the case or motherboard uses a hub for such ports or not.
If there is a hub in between, the ports are hence connected to an internal device (the hub), and therefore would be 255.
If the ports on the case are connected directly to a controller port, then you set UsbConnector according to the type of the port itself.
 
...
Many tend to over-simplify the problem, and, for example, believe they can simply apply the port-limit patch and install USBInjectAll.kext and be done with it. In fact, the port limit patch is known to cause problems (it causes access outside a fixed array bounds). Somewhat alarming is the fact that Multibeast includes the port limit patch without mention of its problems. Also, for each update, a new port limit patch may need to be created (as I write this, no working patch exists for 10.14.1, for example).

The fact: Using the port limit patch is not a long term solution. For reliable USB (assuming your ACPI implementation of _PLD and _UPC is broken... and you don't want to fix it), you must implement a custom SSDT for USBInjectAll.kext that configures your ports on XHC such that the port limit patch is not needed, and each UsbConnnector value is correct for each port.
...

FYI: Post #1 re-written such that it has no dependency on any port limit patch.
 
Sorry for my English
Recently,I found an app named “FBPatcher”. it could help user to get a kext for usbport injecting.
1, Boot OSX to with USB limitedremoved kext to patch in config.plist, and usbinjectall.kext in /other

2, Open “FBPatcher” ,select “ USB” logo button,and in “genneral”,you would find usbport.

3, Use USB3.0 and USB2.0 hardware to test each USB port of your PC,and the port that had be used would be colored,Changed port connector to their real one,noticed that USB3 port having two connectors:USB2.0 and USB3.0.

4,Delete the ports that didnot be colored,click “export” logo button, you would get a kext named “USBPorts.kext” on desktop.

5, Copy “USBPorts.kext” to /other ,and delete “usbinjectall.kext‘, and reboot. Done!
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>
 

Attachments

  • Screen Shot 2018-10-31 at 11.52.44 PM.png
    Screen Shot 2018-10-31 at 11.52.44 PM.png
    64.4 KB · Views: 103
Last edited by a moderator:
In the .dsl-template the comments say:

// Note:
// portType=0 seems to indicate normal external USB2 port (as seen in MacBookPro8,1)
// portType=2 seems to indicate "internal device" (as seen in MacBookPro8,1)
// portType=4 is used by MacBookPro8,3 (reason/purpose unknown)

Then there is also "portType=3" (USB3) or "portType=255" (internal component like bluetooth or wifi), right?
No new info about that "portType=4"?

Also have I understood correctly that I should put numbers for "port" and "port-count" in decimal and they will be converted to hex when compiling?
 
I'm not sure if this has been answered or not but my motherboard has 2 x USB DAC ports. Would these be USB 2 or 3? they are yellow
 
Then there is also "portType=3" (USB3) or "portType=255" (internal component like bluetooth or wifi), right?

No.
You seem to be confusing portType with UsbConnector.

Note that with your hardware, you will not likely be using portType at all as your system is xHCI only (no EHCI controllers, therefore no built-in hubs on EH01/EH02).
 
I'm not sure if this has been answered or not but my motherboard has 2 x USB DAC ports. Would these be USB 2 or 3? they are yellow

If a port is external and has an SSxx component (of course also paired with HSxx) and is not USB type-C, then it would be UsbConnector=3.
 
Back
Top