Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Joined
May 14, 2016
Messages
23
Motherboard
GA-Z97-HD3
CPU
i7-4790K
Graphics
RX 580
Mac
iMac, MacBook Pro, Mac Pro
Classic Mac
128K, 20th Anniv. Mac
Holy Cow Hey Caleb :D So funny running to you here..
Haha! Good seeing you too! Man... Really having a hard time with this! Tried creating the SSDT file but I don't think it is working right. Here are some grabs of what I see in IORegistryExplorer after applying the file.

Now USB 3.0 isn't working. No idea how to move forward at this point.

Here is the code I used for my SSDT USB file:

Code:
DefinitionBlock ("SSDT-USB.aml", "SSDT", 1, "sample", "USBFix", 0x00003000)
{
    // "USBInjectAllConfiguration" : override settings for USBInjectAll.kext
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        // "RehabManConFiguration"
        Name(RMCF, Package()
        {
            // XHC overrides for 100-series boards
            "8086_8cb1", Package()
            {
                "port-count", Buffer() { 15, 0, 0, 0}, // Highest port number is SS** at 0xNN
                "ports", Package()
                {   // TO COMPLETE THIS FILE, ADD ALL YOUR PORTS BELOW HERE, THEN SET port-count ABOVE
                    "HP11", Package() // USB2 device on a USB3 port located on the front right side of the case by the power buttons..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 1, 0, 0, 0 },
                    },
                    "HP12", Package() // USB2 device on a USB3 port located on the front of the case all the way to the left..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 2, 0, 0, 0 },
                    },
                    "HP13", Package() // USB2 device on a USB3 port located on the bottom left most USB on the rear of the case (just above the audio i/o..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                    "HP14", Package() // USB2 device on a USB3 port located directly to the left of the ethernet jack..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 4, 0, 0, 0 },
                    },
                    "HP15", Package() // USB2 device on a USB3 port located right below the HDMI output on the left..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 5, 0, 0, 0 },
                    },
                     "HP16", Package() // USB2 device on a USB3 port located just to the right of HP05/SS05 (down and to the right on the HDMI)..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 6, 0, 0, 0 },
                    },
                  

                    "SS01", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 10, 0, 0, 0 },
                    },
                    "SS02", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 11, 0, 0, 0 },
                    },
                    "SS03", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 12, 0, 0, 0 },
                    },
                    "SS04", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 13, 0, 0, 0 },
                    },
                    "SS05", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 14, 0, 0, 0 },
                    },
                    "SS06", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 15, 0, 0, 0 },
                    },
                },
            },
        })
    }
}
 

Attachments

Joined
Nov 1, 2016
Messages
19
Motherboard
Z170x Gigabyte Gaming 5
CPU
i7-6700K
Graphics
R9 280X
Mac
MacBook Pro
Haha! Good seeing you too! Man... Really having a hard time with this! Tried creating the SSDT file but I don't think it is working right. Here are some grabs of what I see in IORegistryExplorer after applying the file.

Now USB 3.0 isn't working. No idea how to move forward at this point.

Here is the code I used for my SSDT USB file:

Code:
DefinitionBlock ("SSDT-USB.aml", "SSDT", 1, "sample", "USBFix", 0x00003000)
{
    // "USBInjectAllConfiguration" : override settings for USBInjectAll.kext
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        // "RehabManConFiguration"
        Name(RMCF, Package()
        {
            // XHC overrides for 100-series boards
            "8086_8cb1", Package()
            {
                "port-count", Buffer() { 15, 0, 0, 0}, // Highest port number is SS** at 0xNN
                "ports", Package()
                {   // TO COMPLETE THIS FILE, ADD ALL YOUR PORTS BELOW HERE, THEN SET port-count ABOVE
                    "HP11", Package() // USB2 device on a USB3 port located on the front right side of the case by the power buttons..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 1, 0, 0, 0 },
                    },
                    "HP12", Package() // USB2 device on a USB3 port located on the front of the case all the way to the left..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 2, 0, 0, 0 },
                    },
                    "HP13", Package() // USB2 device on a USB3 port located on the bottom left most USB on the rear of the case (just above the audio i/o..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                    "HP14", Package() // USB2 device on a USB3 port located directly to the left of the ethernet jack..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 4, 0, 0, 0 },
                    },
                    "HP15", Package() // USB2 device on a USB3 port located right below the HDMI output on the left..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 5, 0, 0, 0 },
                    },
                     "HP16", Package() // USB2 device on a USB3 port located just to the right of HP05/SS05 (down and to the right on the HDMI)..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 6, 0, 0, 0 },
                    },
                

                    "SS01", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 10, 0, 0, 0 },
                    },
                    "SS02", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 11, 0, 0, 0 },
                    },
                    "SS03", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 12, 0, 0, 0 },
                    },
                    "SS04", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 13, 0, 0, 0 },
                    },
                    "SS05", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 14, 0, 0, 0 },
                    },
                    "SS06", Package() // USB3 port located ..., port <NN 00 00 00>
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 15, 0, 0, 0 },
                    },
                },
            },
        })
    }
}
I really hope others with more expertise than me chime in soon. But perhaps something will jump out and lead you to the right file..

Only things I can think of:

see my file below

-I didn't change the definition block, yours looks a bit different, perhaps a different template.¯\_(ツ)_/¯
-This part here ""8086_a12f", Package()" I picked based on the device id for the root XHC device in my case. I guess for you it would be root EH (in IOREG)
-I left the "port-count", Buffer() { 26, 0, 0, 0 }, even though I only have <= 15 total ports
-I assume your .dsl compiled into an .aml without errors?

snippet of mine.. of course different chipset so it doesn't help u that much..

my .dsl before compile
Code:
DefinitionBlock ("", "SSDT", 2, "hack", "_UIAC", 0)
{
    Device(UIAC)
    {
        Name(_HID, "UIA00000")
        Name(RMCF, Package()
        {
            "8086_a12f", Package()
            {
                "port-count", Buffer() { 26, 0, 0, 0 },
                "ports", Package()
                {
                    "HS03", Package() //top of pc middle usb3port (running at 2.0 since SS03 never showed up) USB2 speed
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 3, 0, 0, 0 },
                    },
                    "HS04", Package() //top of pc SIDE USB 3 port (running at 2.0 since SS04 never showed up) USB2 speed
                    {
                        "UsbConnector", 3,
                        "port", Buffer() { 4, 0, 0, 0 },
                    },
my .aml after compile.. If yours is an .aml then there is quite a few differences:
Code:
DefinitionBlock ("", "SSDT", 2, "hack", "_UIAC", 0x00000000)
{
    Device (UIAC)
    {
        Name (_HID, "UIA00000")  // _HID: Hardware ID
        Name (RMCF, Package (0x02)
        {
            "8086_a12f",
            Package (0x04)
            {
                "port-count",
                Buffer (0x04)
                {
                     0x1A, 0x00, 0x00, 0x00                         
                },

                "ports",
                Package (0x1E)
                {
                    "HS03",
                    Package (0x04)
                    {
                        "UsbConnector",
                        0x03,
                        "port",
                        Buffer (0x04)
                        {
                             0x03, 0x00, 0x00, 0x00                         
                        }
                    },

                    "HS04",
                    Package (0x04)
                    {
                        "UsbConnector",
                        0x03,
                        "port",
                        Buffer (0x04)
                        {
                             0x04, 0x00, 0x00, 0x00                         
                        }
                    },
Only things I can think of atm...
 
Joined
May 14, 2016
Messages
23
Motherboard
GA-Z97-HD3
CPU
i7-4790K
Graphics
RX 580
Mac
iMac, MacBook Pro, Mac Pro
Classic Mac
128K, 20th Anniv. Mac
Thank you so much man!!! I'll take a look at it when I have a minute and see if I can make things work. Cheers!
 
Joined
Jun 11, 2019
Messages
6
Motherboard
Gigabyte Z390 Aorus Pro
CPU
I9-9900k
Graphics
RX 580
Mac
Mac Pro
Mobile Phone
Android
Hi. Has anyone managed to work the USB 3.0 ports in Catalina with Z390 motherboard? In my computer with Mojave everything was going well, but when upgrading to Catalina, the USB 3.0 ports stopped working and I am following the same method that I used with Mojave to be able to use the 3.0 and I do not get it, only the 2.0 works. Thank you
 

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
4,033
Motherboard
Gigabyte Z390M Gaming
CPU
i5-9600K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Hi. Has anyone managed to work the USB 3.0 ports in Catalina with Z390 motherboard? In my computer with Mojave everything was going well, but when upgrading to Catalina, the USB 3.0 ports stopped working and I am following the same method that I used with Mojave to be able to use the 3.0 and I do not get it, only the 2.0 works. Thank you
Hi there.

Run the IORegistryExplorer app and scroll the left window down until your find the XHC section. Post a screen-grab. :thumbup:
 
Joined
Jun 11, 2019
Messages
6
Motherboard
Gigabyte Z390 Aorus Pro
CPU
I9-9900k
Graphics
RX 580
Mac
Mac Pro
Mobile Phone
Android
Hi. Well, after continuing to test, I can't make the USB 3.0 ports work. I leave the capture of xhc
Captura de pantalla 2019-10-18 a las 18.14.58.png
 

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
4,033
Motherboard
Gigabyte Z390M Gaming
CPU
i5-9600K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Hi. Well, after continuing to test, I can't make the USB 3.0 ports work. I leave the capture of xhcView attachment 431386
Okay ...

Assume you have the USBInjectAll.kext installed.
Did you create your own SSDT-UIAC.aml patch?
If not, that's a port-limit removal patch issue. Check the new version.

:)
 
Joined
Aug 19, 2015
Messages
19
Mac
Classic Mac
Mobile Phone
For homework, I've read through a few of the other X79 User Builds we have on this site and no-one has mentioned a missing controller. If removing one of those other SSDT patches makes one EHC disappear, that's plain odd. I've only seen your Rampage.ioreg from before the EHCI patches were corrected when they still showed as EUSB and USBE etc. Check the output now.
Hi UtterDisbelief, sorry for the late reply, I've been rely busy at work.
So I've been playing with the IORegistryExplorer. I definitely confirm Hackintool is not reliable for discover the ports, as is keeping showing just the EH01 controller and its ports.
I can see all the controllers in the IORegistryExplorer now, but no one port available in Hackintool, neither the controller presents in system Informations.
The only ports I see in Hackintool are the one of EH01 controller, all the other ports of the other controllers are not visible neither in IORegistryExplorer. Surprising, all the port even if not showed, work. I have USB3 and type-c peripheral attached (Sandisk Extreeme and Clarett 2Pre USB type-c).
I'm not sure how to proceed, I would really appreciate if you can have a look to my IORegistryExplorer.

Many thanks!
 

Attachments

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
4,033
Motherboard
Gigabyte Z390M Gaming
CPU
i5-9600K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Hi UtterDisbelief, sorry for the late reply, I've been rely busy at work.
So I've been playing with the IORegistryExplorer. I definitely confirm Hackintool is not reliable for discover the ports, as is keeping showing just the EH01 controller and its ports.
I can see all the controllers in the IORegistryExplorer now, but no one port available in Hackintool, neither the controller presents in system Informations.
The only ports I see in Hackintool are the one of EH01 controller, all the other ports of the other controllers are not visible neither in IORegistryExplorer. Surprising, all the port even if not showed, work. I have USB3 and type-c peripheral attached (Sandisk Extreeme and Clarett 2Pre USB type-c).
I'm not sure how to proceed, I would really appreciate if you can have a look to my IORegistryExplorer.

Many thanks!
Hi there.


You attached the IOReistryExplorer app itself, not the export.

Yes, remember all the USB3 ports - including USB-C - are controlled by the ASMedia chip. They will work but are not a part of the 15-limit imposed by Apple, nor are they directly configurable.

Looking back at our conversations, in post# 468 your screengrab shows Hackintool with only one controllers. This was in line with your earlier config.plist where you had disabled the second one by mistake:

d.png


...however , you later show a screengrab with this corrected:

ok.png


This second one is correct.

Please check your present config.plist to make sure you have enabled both controllers. There is no other reason why the second one should not show up (except faulty hardware, which is unlikely).

:)
 
Joined
Aug 19, 2015
Messages
19
Mac
Classic Mac
Mobile Phone
Hi
Hi there.


You attached the IOReistryExplorer app itself, not the export.


Please check your present config.plist to make sure you have enabled both controllers. There is no other reason why the second one should not show up (except faulty hardware, which is unlikely).

:)
Hi UtterDisbelief, sorry my mistake. I edited the thread, and I attached the ioreg and config, as you can see I have both patch enabled. The controller work fine on windows, I installed windows in dual-boot in order to verify all them. Only one controller is showing up in Hackintool, USBMap, and System Information. In IORegistry I can spot them but no one port is populated, if my IORegistry reading is right.
Many thanks,
 
Last edited:
Top