Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

hi !

I follow the guide to create SSDT for my ASUS ROG STRIX Z390-f mb
i have BCM94360CS2 on PCI1x card for wifi and BT, plug with USB. It works OOB but I have a problem when sleep:

the OS can sleep, but my computer hardware sleep and wake every minute.. when I disconnect the USB from the bluetooth card, it's fine.

here a video of the problem, as you can see my screen turn off correctly, OS is sleep, but my hardware wake and sleep (every minute):


i have create the SSDT with USB Connector for the internal USB 255, but it's not working, the problem still here..
I have SSDT-USB.aml in CLOVER/ACPI/patched and UsbInjectAll.kext in CLOVER/kexts/other

All my USB ports works (2.0 and 3.0), I have mapping only 14 ports to not use the PLRP.

As you can see, HS06 is the internal port, with UsbConnector 0xff :

403863


HS06 and HS11 is my internal 2.0 USB

I can't change the internal USB port because when I switch the cable HS06<->HS11 (BT card and NZXT cooling cable), my system doesn't see my BT card but see the cooling cable, I don't know why.

Can you help me ?

Attached my SSDT.dsl, seems to be good, can you check it ?

Thank you
 

Attachments

  • SSDT-USB-ASUS ROG STRIX Z390-f.dsl
    3.7 KB · Views: 83
Last edited:
hi !

I follow the guide to create SSDT for my ASUS ROG STRIX Z390-f mb
i have BCM94360CS2 on PCI1x card for wifi and BT, plug with USB. It works OOB but I have a problem when sleep:

the OS can sleep, but my computer hardware sleep and wake every minute.. when I disconnect the USB from the bluetooth card, it's fine.

here a video of the problem, as you can see my screen turn off correctly, OS is sleep, but my hardware wake and sleep (every minute):


i have create the SSDT with USB Connector for the internal USB 255, but it's not working, the problem still here..
I have SSDT-USB.aml in CLOVER/ACPI/patched and UsbInjectAll.kext in CLOVER/kexts/other

All my USB ports works (2.0 and 3.0), I have mapping only 14 ports to not use the PLRP.

As you can see, HS06 is the internal port, with UsbConnector 0xff :

View attachment 403863

HS06 and HS11 is my internal 2.0 USB

I can't change the internal USB port because when I switch the cable HS06<->HS11 (BT card and NZXT cooling cable), my system doesn't see my BT card but see the cooling cable, I don't know why.

Can you help me ?

Attached my SSDT.dsl, seems to be good, can you check it ?

Thank you

Hello there.

Well looking at your IORegistryExplorer output it seems that USB port HS06 is connected to a USB2 hub. I am not familiar with your motherboard but a lot of the latest boards like yours feature a separate USB2 hub with 4 or 6 ports. This could be causing the problem though.

It seems HS11 is not connected to a hub so why the Bluetooth adapter will not work in this port is a mystery from here.

Did you install any other kexts besides USBInjectAll for USB ?

Now looking at the spec for your motherboard it shows 4x USB2 and 2x USB3.1 internal header ports. So may be you could try the BT cable in a USB3.1 Internal header instead of USB2? Yes, you will have to modify the SSDT again to configure is as "255" etc.

Your SSDT looks fine except the HS ports - not on the HS06 hub - are probably USB3.1 physical ports with more connectors and so should be connector "3" etc.

:)
 
Hello there.

Well looking at your IORegistryExplorer output it seems that USB port HS06 is connected to a USB2 hub. I am not familiar with your motherboard but a lot of the latest boards like yours feature a separate USB2 hub with 4 or 6 ports. This could be causing the problem though.

It seems HS11 is not connected to a hub so why the Bluetooth adapter will not work in this port is a mystery from here.

Did you install any other kexts besides USBInjectAll for USB ?

Now looking at the spec for your motherboard it shows 4x USB2 and 2x USB3.1 internal header ports. So may be you could try the BT cable in a USB3.1 Internal header instead of USB2? Yes, you will have to modify the SSDT again to configure is as "255" etc.

Your SSDT looks fine except the HS ports - not on the HS06 hub - are probably USB3.1 physical ports with more connectors and so should be connector "3" etc.

:)

Hi @UtterDisbelief

i have xHCIunsupported.kext for USB (hackintool recommands it)

i cant try the BT cable on 3.1 internal because of the connector

for the others HS ports, it's wanted, i want <15 ports :)
 
Last edited:
Finally, I fix it !!!
After some search and test, and your useful analysis @UtterDisbelief about the hub and USB port.

i've 2 internal connector USB2 on my mb, one connector with HS06 (wich is an hub) and one connector with 2x USB2 : HS11 and HS12.

in my first SSDT, I've disable HS12 that's why my BT card doesn't work one the second connector.

I simply switch the connector putting my BT card on the connector detected as USB not as hub and redo my SSDT with HS12 activate as USB 255 port.

the connector wires of my BT card are at the bottom of the connector and the wires of my NZXT cooling are at the top, so 2 different port on the same connector, that's why my first SSDT doesn't recognize my BT card when I switched BT and cooler.

thank you for your help, and your fantastic guide !!!

my setup is now complete, all works fine :)
 
Okay.

A few problems with the addresses still ...

And also the "port count" field at the top - it should be "0a", more than likely. Address of highest port.

My suggestion is to put the ports in numerical order HS01 to HS14 and SS01 to SS10 then re-check addresses. For example HS09 = "25" ? That is very unlikely.

:)

Hi, Thank you for your reply. I started everything from the scratch and tested each port manually and got the correct address for each port but for some reasons it is still not working.

My Build:
Motherboard: Asus Maximus VII Hero (Z97)
Processor: Intel i7-4790K
Graphics: Intel HD Graphics.

I have installed the following Kext files.

404296



IORegistryExplorer report after installing the custom SSDT without USB port limit patch:

404298


I have also attached the ASL template file that I created after testing each port. Kindly have a look and I hope you will be able to fix the issue that I couldn't figure it out. Almost 4 weeks I am trying to do it.
 

Attachments

  • SSDT-USB-Template.dsl
    4.6 KB · Views: 68
Hi, Thank you for your reply. I started everything from the scratch and tested each port manually and got the correct address for each port but for some reasons it is still not working.

My Build:
Motherboard: Asus Maximus VII Hero (Z97)
Processor: Intel i7-4790K
Graphics: Intel HD Graphics.

I have installed the following Kext files.

View attachment 404296


IORegistryExplorer report after installing the custom SSDT without USB port limit patch:

View attachment 404298

I have also attached the ASL template file that I created after testing each port. Kindly have a look and I hope you will be able to fix the issue that I couldn't figure it out. Almost 4 weeks I am trying to do it.


Hi there.

Okay, here is what I spotted on a quick run-through:

1) As far as I can tell the Device ID you have is for the EHCI controller No.1 . The xHCI controller, which you should try to use to start with, is I think "8086_8cb1"

Your choice might be okay if you are doing more complex work using FakePCIID_XHCIMux.kext to divert EHCI, but to start with I'd leave alone, unless needed. As you don't seem to have that kext installed this is probably irrelevant.

Double-check System Report to see if you can spot "8cb1" etc. If not, check your BIOS settings.

2) HS14 - the port-address looks wrong. It's showing as 0x07 the same as HS07. Should it be "0x0e" ?

3) Double-check the port-addresses for the SS ports. They seem to be one address adrift (e.g SS01 on a 14-port chipset is usually 0x11). This might be correct by the way, I am unable to check as I don't have access to a Z97 motherboard.

:)
 
Hi there.

Okay, here is what I spotted on a quick run-through:

1) As far as I can tell the Device ID you have is for the EHCI controller No.1 . The xHCI controller, which you should try to use to start with, is I think "8086_8cb1"

Your choice might be okay if you are doing more complex work using FakePCIID_XHCIMux.kext to divert EHCI, but to start with I'd leave alone, unless needed. As you don't seem to have that kext installed this is probably irrelevant.

Double-check System Report to see if you can spot "8cb1" etc. If not, check your BIOS settings.

2) HS14 - the port-address looks wrong. It's showing as 0x07 the same as HS07. Should it be "0x0e" ?

3) Double-check the port-addresses for the SS ports. They seem to be one address adrift (e.g SS01 on a 14-port chipset is usually 0x11). This might be correct by the way, I am unable to check as I don't have access to a Z97 motherboard.

:)

After changing to xHCI the custom SSDT loaded but none of the port worked as I was not able to use my Keyboard and Mouse so I had to boot to the OS using my installer thumb drive.

I believe we are very close to make it working. I couldn't figure out the USB ports not working so I have attached a dump file of IORegistryExplorer. Is it possible the issue is caused because I have entries for 16 ports? I have also attached the new SSDT template file.

I am really sorry to keep you bothering.

1) As far as I can tell the Device ID you have is for the EHCI controller No.1 . The xHCI controller, which you should try to use to start with, is I think "8086_8cb1"
-> I changed it to 8086_8cb1 and I believe the custom SSDT file got loaded but none of the port worked as I was not able to login as the keyboard and mouse did not work. I have included the system report screenshots below.
404368


404370


2) HS14 - the port-address looks wrong. It's showing as 0x07 the same as HS07. Should it be "0x0e" ?
-> You were right, I have fixed the address.

3)
Double-check the port-addresses for the SS ports. They seem to be one address adrift (e.g SS01 on a 14-port chipset is usually 0x11). This might be correct by the way, I am unable to check as I don't have access to a Z97 motherboard.
-> For some reason my SS port starts from 0x10
404367



Thank you
 

Attachments

  • SS01_14f00000.png
    SS01_14f00000.png
    131.9 KB · Views: 53
  • iMac-IORegistryExplorer.ioreg
    10.6 MB · Views: 67
  • SSDT-USB-Template.dsl
    4.6 KB · Views: 65
After changing to xHCI the custom SSDT loaded but none of the port worked as I was not able to use my Keyboard and Mouse so I had to boot to the OS using my installer thumb drive.

I believe we are very close to make it working. I couldn't figure out the USB ports not working so I have attached a dump file of IORegistryExplorer. Is it possible the issue is caused because I have entries for 16 ports? I have also attached the new SSDT template file.

I am really sorry to keep you bothering.

1) As far as I can tell the Device ID you have is for the EHCI controller No.1 . The xHCI controller, which you should try to use to start with, is I think "8086_8cb1"
-> I changed it to 8086_8cb1 and I believe the custom SSDT file got loaded but none of the port worked as I was not able to login as the keyboard and mouse did not work. I have included the system report screenshots below.
View attachment 404368

View attachment 404370

2) HS14 - the port-address looks wrong. It's showing as 0x07 the same as HS07. Should it be "0x0e" ?
-> You were right, I have fixed the address.

3)
Double-check the port-addresses for the SS ports. They seem to be one address adrift (e.g SS01 on a 14-port chipset is usually 0x11). This might be correct by the way, I am unable to check as I don't have access to a Z97 motherboard.
-> For some reason my SS port starts from 0x10
View attachment 404367


Thank you

Hi there.

Well done on the work so far! (Feedback on the port addresses for Z97 SS ports was very useful :) )

1) Looking at the template - it's looking a lot better EXCEPT you have the wrong "port-count" value.

It should be "port-count", Buffer() { 0x15, 0, 0, 0 }, because that is the highest port address you are configuring.

2) You know you have configured more than 15-ports. This is okay, in theory, but you either need to use the "-uia_exclude" command-line to disable that extra one during boot OR you can just remove it. Your choice.

When you do this you then need to re-check that "port-count" figure. If you don't remove SS06 it should still stay the same :thumbup:

3) Good to see the XHCI controller there now. The EHCI is prominent because the motherboard is a slightly older one.

:)

LATER EDIT: See post #192 - my mistake stating port-count as "15" when it should have been "0x15"
 
Last edited:
Hi there.

Well done on the work so far! (Feedback on the port addresses for Z97 SS ports was very useful :) )

1) Looking at the template - it's looking a lot better EXCEPT you have the wrong "port-count" value.

It should be "port-count", Buffer() { 15, 0, 0, 0 }, because that is the highest port address you are configuring.

2) You know you have configured more than 15-ports. This is okay, in theory, but you either need to use the "-uia_exclude" command-line to disable that extra one during boot OR you can just remove it. Your choice.

When you do this you then need to re-check that "port-count" figure. If you don't remove SS06 it should still stay the same :thumbup:

3) Good to see the XHCI controller there now. The EHCI is prominent because the motherboard is a slightly older one.

:)
Hi,

Now ports are working but only the HS version are being injected for USB 3 as well. Inserting a USB3 pen drive to USB3 port does not happen anything.

404396
 

Attachments

  • SSDT-UIAC.aml
    696 bytes · Views: 68
  • SSDT-USB-Template.dsl
    4.4 KB · Views: 52
Hi,

Now ports are working but only the HS version are being injected for USB 3 as well. Inserting a USB3 pen drive to USB3 port does not happen anything.

View attachment 404396

Okay, my bad.

I should have written "0x15" not just 15 for the port-count entry.

:)
 
Back
Top