Contribute
Register

[Guide] Creating a Custom SSDT for USBInjectAll.kext

Rehabman, when converting from .dsl to .aml, did you use MaciASL? Because when I tried to save as .aml, the MaciASL always not responding. Do you have alternative way to convert from .dsl to .aml?

In MaciASL, you use File->Save As, format: ACPI Machine Language Binary.
You could also use iasl from Terminal to compile your .dsl.
 
In MaciASL, you use File->Save As, format: ACPI Machine Language Binary.
You could also use iasl from Terminal to compile your .dsl.

Yes, when I tried to save as ACPI Machine Language Binary, the MaciASL always not responding. How do you compile .dsl using iasl from terminal?

Could you try compile my .dsl?
 

Attachments

  • SSDT-UIAC-ALL.dsl
    2.4 KB · Views: 102
Thanks a lot for this and your other USB fix guides, RehabMan! I just barely understood enough to get all my usb ports that I needed working
 
thanks a lot. best guide. great RehabMan, I have fixed
 
My Skylake series-100 Desktop Asus H170I-Plus D3 has 8 USB3 ports that I have all identified.

Running Sierra 10.12.6

HS01/SS01: USB3 front top
HS02/SS02: USB3 front bottom
HS03/SS03: USB3 rear top left
HS04/SS04: USB3 rear bottom left
HS05/SS05: USB3 rear top center
HS06/SS06: USB3 rear bottom center
HS07/SS07: USB3 rear top right (under PS/2)
HS08/SS08: USB3 rear bottom right (under PS/2)
HS13: bluetooth

Each of the 8 USB3 port supports both HSxx and SSxx, plus the bluetooth, that's 17 ports.

Is the 15-port limit on XHC only for pre 100-series motherboards? I don't know.

I can maybe use FakePCIID_XHCIMux to route the USB2 component of those USB3 ports off from XHC to EHCI, but Skylake does not have EHCI.

I created my SSDT-UIAC.aml eliminating all the extra ports. It works well, but that's still 17 ports.

Code:
DefinitionBlock ("", "SSDT", 2, "hack", "UIAC-ALL", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")

        Name(RMCF, Package()
        {
            "8086_a12f", Package()
            {
                "port-count", Buffer() { 26, 0, 0, 0 },
                "ports", Package()
                {
                    "HS01", Package()  // HS USB3 front top
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 1, 0, 0, 0 },
                    },
                    "HS02", Package()  // HS USB3 front bottom
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 2, 0, 0, 0 },
                    },
                    "HS03", Package()  // HS USB3 rear top left
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                    "HS04", Package() // HS USB3 rear bottom left
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 4, 0, 0, 0 },
                    },
                    "HS05", Package() // HS USB3 rear top center
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 5, 0, 0, 0 },
                    },
                    "HS06", Package()  // HS USB3 rear bottom center
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 6, 0, 0, 0 },
                    },
                    "HS07", Package()  // HS USB3 rear top right under ps/2
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 7, 0, 0, 0 },
                    },
                    "HS08", Package()  // HS USB3 rear bottom right under ps/2
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 8, 0, 0, 0 },
                    },
                    "HS13", Package()  // bluetooth
                    {
                        "UsbConnector", 255,
                        "port", Buffer() { 13, 0, 0, 0 },
                    },
                    "SS01", Package()  // SS USB3 front top                  
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 17, 0, 0, 0 },
                    },
                    "SS02", Package()  // SS USB3 front bottom                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 18, 0, 0, 0 },
                    },
                    "SS03", Package()  // SS USB3 rear top left                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 19, 0, 0, 0 },
                    },
                    "SS04", Package() // SS USB3 rear bottom left                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 20, 0, 0, 0 },
                    },
                    "SS05", Package() // SS USB3 rear top center                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 21, 0, 0, 0 },
                    },
                    "SS06", Package()  // SS USB3 rear bottom center                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 22, 0, 0, 0 },
                    },
                    "SS07", Package()  // SS USB3 rear top right under ps/2                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 23, 0, 0, 0 },
                    },
                    "SS08", Package()  // SS USB3 rear bottom right under ps/2
                
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 24, 0, 0, 0 },
                    },
                },
            },
        })
    }
}
 
Last edited:
Is the 15-port limit on XHC only for pre 100-series motherboards?

The 15-port limit applies to all boards. The limit is in the xHCI driver.

I can maybe use FakePCIID_XHCIMux to route the USB2 component of those USB3 ports off from XHC to EHCI,

No.
There is no EHCI on 100-series and later.

I created my SSDT-UIAC.aml eliminating all the extra ports. It works well, but that's still 17 ports.

As per post #1, you need to sacrifice a port to remain within the 15-port limit.
 
Thanks for the answers RehabMan.

I had come to the same conclusion that I will have to sacrifice a port that will not be used to bring down the number to 15. I was just not sure. I'll be removing the pair HS05/SS05 in the center rear, bringing the number down to 15.
 
Thanks for the answers RehabMan.

I had come to the same conclusion that I will have to sacrifice a port that will not be used to bring down the number to 15. I was just not sure. I'll be removing the pair HS05/SS05 in the center rear, bringing the number down to 15.

Yeah, and I guess your case has no USB ports? (usually those would be connected to an internal header, which would use additional ports, leading to sacrifice more back io panel ports).
 
Back
Top