Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Hi Utter,
I was wondering if you had a chance to read my post, #138, and peek at the files attached. Thanks.

Hi there.

Okay, a couple of things:

1) the IOReg output seems to be corrupted (or from a different version of IORegExp). It doesn't load and is much larger than it needs to be. Given your hardware, the IOReg output should probably be something like 4 or 5MB only, I think.

2) The SSDT works fine but has a couple of issues. The HS ports are only defined as USB2 - "UsbConnector", 0, - This isn't necessarily wrong, but for such a modern motherboard seems unlikely. Your motherboard spec shows only 2x USB 2 ports on the back panel. I mentioned this previously.

Also I see you configure SS12 as type "3" and HS12 as type "0". On most full-size Z370 boards this would probably be the same physical port. So if it is a USB3 port then, given it has more electrical contacts in it, the HS port definition needs to be "3" as well. If it really is a USB2 port only, then it shouldn't have an SS equivalent etc :thumbup:

3) You have only defined 9x USB ports in total: 6x USB2 and 3x USB3.

Did you put USBInjectAll.kext in place? I can't see what version macOS you are using, nor which port-limit removal patch you used, but it would be needed for port discovery etc.

:)
 
Last edited:
Hi there.

Okay, a couple of things:

1) the IOReg output seems to be corrupted (or from a different version of IORegExp). It doesn't load and is much larger than it needs to be. Given your hardware, the IOReg output should probably be something like 4 or 5MB only, I think.

2) The SSDT works fine but has a couple of issues. The HS ports are only defined as USB2 - "UsbConnector", 0, - This isn't necessarily wrong, but for such a modern motherboard seems unlikely. Your motherboard spec shows only 2x USB 2 ports on the back panel. I mentioned this previously.

Also I see you configure SS12 as type "3" and HS12 as type "0". On most full-size Z370 boards this would probably be the same physical port. So if it is a USB3 port then, given it has more electrical contacts in it, the HS port definition needs to be "3" as well. If it really is a USB2 port only, then it shouldn't have an SS equivalent etc :thumbup:

3) You have only defined 9x USB ports in total: 6x USB2 and 3x USB3.

Did you put USBInjectAll.kext in place? I can't see what version macOS you are using, nor which port-limit removal patch you used, but it would be needed for port discovery etc.

:)
Thanks...I think I got it now. I started over with the correct PLRP and got it working!
1) I was using IOREG 3.0.2, didn't know it was wonky

2)I had mis-identified HS 13&14 with 05&06. HS13,14 are the USB2. HS12 is where I connect my G5 front panel power switch and USB port so it's definitely not USB3

3) Now I have only 8 ports as they are all I have connected...or should there be more?

I'm running 10.14.4, BTW

Thanks again for your assistance, and here are the, hopefully, correct files. The IOREG file is still over 10mb, not sure why
 

Attachments

  • SSDT-USB.aml043019-2.aml
    423 bytes · Views: 60
  • Terry’s iMac.ioreg
    9.7 MB · Views: 76
Thanks...I think I got it now. I started over with the correct PLRP and got it working!
1) I was using IOREG 3.0.2, didn't know it was wonky

2)I had mis-identified HS 13&14 with 05&06. HS13,14 are the USB2. HS12 is where I connect my G5 front panel power switch and USB port so it's definitely not USB3

3) Now I have only 8 ports as they are all I have connected...or should there be more?

I'm running 10.14.4, BTW

Thanks again for your assistance, and here are the, hopefully, correct files. The IOREG file is still over 10mb, not sure why

Hi there.

1) Ok, the IORegEx output loaded fine this time :thumbup:

2) You are not using the template I list in the guide so I'm wondering if we are building on a previously different method to get the ports working? That being the case it's difficult to see what has happened previously and offer advice.

This guide is only ever meant to be a Beginner's Guide. Obviously there are other, more comprehensive ones.

Having said that ...

3) Your motherboard comes with many more ports than the 8x you chose:

Asus.png


If you ignore the ASMedia ones because they don't appear on the XHC tree (nor affect the 15-port limit) then you have 18x other potential ports - 6x USB3 plus their companion 6x USB2 definitions, and another 6x USB2-only ports.

Is there any reason why you are only configuring 8x ports? Is this motherboard in a G5 case? Because perhaps ...

4) You mention a G5 and HS12. If this is a front-panel port - which may be a USB2 port only - have you checked to see what HS12 on the motherboard really is? USB2 or 3. Obviously I can't tell from here.

Other than that I am unsure what the problems now are. It sounds as though you might have everything working as you want? :thumbup:

:)
 
Last edited:
Thank you to everyone who has used this guide and found it useful :thumbup: There has always been a need to try and simplify and explain the configuration process so that more builders can get good, stable USB functionality out of a broad range of hardware.

However ...

Please note this is: A Beginner's Guide.

Although I'm more than happy to help when I can, we are cluttering this thread with very complex explanations of often difficult to fathom problems.

In these cases perhaps the builder might be better served starting their own problem thread so that the experts out there can jump in and offer assistance. There are a lot of very knowledgable people round here only too willing to help.

But experts are less likely to pop-by a Beginner's thread.

:)
 
Hi there.

1) Ok, the IORegEx output loaded fine this time :thumbup:

2) You are not using the template I list in the guide so I'm wondering if we are building on a previously different method to get the ports working? That being the case it's difficult to see what has happened previously and offer advice.

This guide is only ever meant to be a Beginner's Guide. Obviously there are other, more comprehensive ones.

Having said that ...

3) Your motherboard comes with many more ports than the 8x you chose:

View attachment 403015

If you ignore the ASMedia ones because they don't appear on the XHC tree (nor affect the 15-port limit) then you have 18x other potential ports - 6x USB3 plus their companion 6x USB2 definitions, and another 6x USB2-only ports.

Is there any reason why you are only configuring 8x ports? Is this motherboard in a G5 case? Because perhaps ...

4) You mention a G5 and HS12. If this is a front-panel port - which may be a USB2 port only - have you checked to see what HS12 on the motherboard really is? USB2 or 3. Obviously I can't tell from here.

Other than that I am unsure what the problems now are. It sounds as though you might have everything working as you want? :thumbup:

:)
I definitely used the template you provided; however, after compiling in MaciASL, it was changed to what you see...don't know.

Yes, I'm using a G5 case so am assuming the physical front panel USB port is not usb3 compatible. As you mentioned, the Z370 motherboard has 5 physical USB ports (6 if you include the USB C), I'm unclear how/why I should configure more if I don't have more physical ports...

Everything seems to be configured as expected and no problems as yet...thanks again for your guide and this thread. Having a single big thread may be cumbersome to manage but the continuity it provides, if one is following it, helps me to understand/learn better.
 
No, it is not explicitly necessary. You don't even have to disable in BIOS. Just only configure the XHC controller by using the correct Device ID in the template.

By the way, questions about @RehabMan 's guide really should be asked of him, not me. He's the expert. Remember, this is only a Beginner's Guide.

:)

Should XHCI mode by set to Smart Auto or Auto?
 
why? whats the difference?
XHCI Mode = Auto - The on-board USB 3.0 ports function like a 2.0 port before the OS USB 3.0 drivers load. If you reboot the OS, the onboard USB 3.0 port again functions like a 2.0 port during this reboot BIOS phase before the OS USB 3.0 drivers load.
XHCI Mode = Smart Auto - The on-board USB 3.0 ports function like a 2.0 port before OS USB 3.0 drivers load. If you reboot the OS, during this reboot BIOS phase, BIOS is "Smart" enough to avoid downgrading the USB 3.0 port back to 2.0 functionality before the OS USB 3.0 drivers load. So Smart Auto is faster than Auto on 2nd boot onward, but Enabled is fastest once you are sure the OS has the USB 3.0 driver installed, because it avoids the switching.
 
Back
Top