Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Joined
Apr 15, 2013
Messages
86
Motherboard
Gigabyte Z370 Aorus Gaming 5
CPU
i7-8700K
Graphics
RX 580
Mac
  1. MacBook Air
  2. MacBook Pro
  3. Mac Pro
Classic Mac
  1. Centris
  2. Color Classic
  3. LC
  4. Performa
  5. Quadra
  6. SE
Mobile Phone
  1. iOS
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
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,933
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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.
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,933
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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.
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,933
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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.
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,933
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
...
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.
 
Joined
Sep 21, 2010
Messages
173
Motherboard
ASUS PRIME Z390-A
CPU
i7-9700K
Graphics
Vega 64
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: 98
Last edited by a moderator:
Joined
Oct 25, 2011
Messages
8
Motherboard
HP EliteDesk 800 G1 USDT
CPU
i7-4770S/Q87
Graphics
HD 4600
Mobile Phone
  1. Android
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?
 
Joined
Sep 5, 2012
Messages
109
Motherboard
Metabox Alpha (Clevo)
CPU
i7-9750H
Graphics
UHD 630
Mac
  1. MacBook Pro
Mobile Phone
  1. iOS
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
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,933
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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).
 

RehabMan

Moderator
Joined
May 2, 2012
Messages
183,933
Motherboard
Intel DH67BL
CPU
i7-2600K
Graphics
HD 3000
Mac
  1. MacBook Air
Mobile Phone
  1. iOS
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.
 
Top