Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Having used RehabMan's original USB port selection guides in the past for my earlier Hackintoshes, and after reading this excellent guide, I wondered if we might expect something similar covering a more general version of MacMan's "kextless" technique for selecting the USB ports. I have found his method to work fine on my "Mini-ITX 4" (config at left under my avatar). Any possibility of that happening?

Yes indeed. In fact work has been going on behind the scenes to do just that. It's not easy though and just goes to show why @RehabMan 's original idea was so good.

:)
 
Last edited:
In your case, not as hard as it seems.
Thank you. No bluetooth... so I expect it will should go smoother than I expected, your guide is very clear.

Another question: I'm doing the same on my GA-H270-Gaming 3 with 10.13.4. I only see XHC, HS 01-14 & USR1.

Should I be seeing SSxx?
Thank you.
 
Thank you. No bluetooth... so I expect it will should go smoother than I expected, your guide is very clear.

Another question: I'm doing the same on my GA-H270-Gaming 3 with 10.13.4. I only see XHC, HS 01-14 & USR1.

Should I be seeing SSxx?
Thank you.

For the H270 you do need a port-limit removal patch to see the complete set of ports. With that in place you will probably see HS01 to HS14, SS01 to SS10 and USR1 , USR2.

Those are all on the XHC controller BUT you also have an add-on ASMedia controller for the Red USB-A and USB-C USB3.1 Gen 2 ports, so as previously they don't count in the 15 and are not easy to configure.

There is a port-limit removal patch for 10.13.4, both in MultiBeast and Clover Configurator. :thumbup:
 
Last edited:
Hi there.
In your case, not as hard as it seems.
Open IORegistryExplorer and with USBInjectAll installed but no Port-Limit Removal Patch, it will probably list the first 15 ports. HS01 to HS14 and USR01, or something similar. I would need to check your IOREG output to know for sure....

1) I created an SSDT_USB.aml for "8086_1d26" (HP11,12,13,14,15,16,17,18) and "8086_1d2d" (HP21,22) per instructions, and the IOReg always displays the full HPxx range (11-18 & 21-28) 16 ports. I couldn't get it to only show the 10 ports in the SSDT.

2) Next I took RehabMan’s SSDT-UIAC-ALL.dsl, deleted all but HUB1 & HUB2 changed HSxx to HP11,12,13,14,15,16,17,18,21,22. (screenshot of IOReg attached.) And now IOReg shows just the correct USB 2 ports.

I didn’t put in PCI Vendor and PCI Device IDs. Also in IOReg I see 24 PRxx ports? (See screenshot) Is this any problem? If it works should I just be leave it? Or is this an unstable configuration?
 

Attachments

  • Screen Shot 2019-08-25 at 4.55.37 PM.png
    Screen Shot 2019-08-25 at 4.55.37 PM.png
    74.5 KB · Views: 66
  • Screen Shot 2019-08-25 at 3.38.26 PM.png
    Screen Shot 2019-08-25 at 3.38.26 PM.png
    122.3 KB · Views: 49
1) I created an SSDT_USB.aml for "8086_1d26" (HP11,12,13,14,15,16,17,18) and "8086_1d2d" (HP21,22) per instructions, and the IOReg always displays the full HPxx range (11-18 & 21-28) 16 ports. I couldn't get it to only show the 10 ports in the SSDT.

2) Next I took RehabMan’s SSDT-UIAC-ALL.dsl, deleted all but HUB1 & HUB2 changed HSxx to HP11,12,13,14,15,16,17,18,21,22. (screenshot of IOReg attached.) And now IOReg shows just the correct USB 2 ports.

I didn’t put in PCI Vendor and PCI Device IDs. Also in IOReg I see 24 PRxx ports? (See screenshot) Is this any problem? If it works should I just be leave it? Or is this an unstable configuration?

Use this tool and upload your problem reporting files:
 
1) I created an SSDT_USB.aml for "8086_1d26" (HP11,12,13,14,15,16,17,18) and "8086_1d2d" (HP21,22) per instructions, and the IOReg always displays the full HPxx range (11-18 & 21-28) 16 ports. I couldn't get it to only show the 10 ports in the SSDT.

2) Next I took RehabMan’s SSDT-UIAC-ALL.dsl, deleted all but HUB1 & HUB2 changed HSxx to HP11,12,13,14,15,16,17,18,21,22. (screenshot of IOReg attached.) And now IOReg shows just the correct USB 2 ports.

I didn’t put in PCI Vendor and PCI Device IDs. Also in IOReg I see 24 PRxx ports? (See screenshot) Is this any problem? If it works should I just be leave it? Or is this an unstable configuration?

Okay, remember I'm not supporting @RehabMan 's excellent guide here. That masterpiece covers a lot more ground and many more eventualities. He's the expert. This is a Beginner's Guide so we (try to) keep things simple :thumbup:

Your Original Post was about getting the USB ports configured with no up-to-date port-limit removal patch for the Security Updates on High Sierra 10,13,6+. That can be done and in your case was easier than most because you only have 14-ports coming from the Intel controller that count here.

However to address your other problems:

1) Ports on 'Hubs' are hard to configure.

2) In your post 1) you *do* quote the correct Vendor/Device IDs but then later on you say - "I didn’t put in PCI Vendor and PCI Device IDs" ? I'm confused o_O

3) Screengrab 1 makes me suspect you chose the wrong section of @RehabMan 's SSDT template to use. Why not try my version for simplicity ? (actually originally from @ammulder :) )

3) Screengrab 2 only shows the EH02 node. There's EH01 too. Also these are HP** ports on a PR** hub... Did you by any chance use FakePCIID_XHCIMux.kext anywhere? GenericUSBXHCI ? That looks a bit skew.

4) You can always upload your SSDT template and your IOREG export if you would like. Any privacy concerns, I understand. Your call etc.

:)
 
Okay, remember I'm not supporting @RehabMan 's excellent guide here. That masterpiece covers a lot more ground and many more eventualities. He's the expert. This is a Beginner's Guide so we (try to) keep things simple :thumbup:
....
Thank you. I'm sure I've been mixing methods. So rather than reply to your questions with uninformed responses, the attached zip should be more helpful for all of us. Thank you UtterDisbelief and Feartech!
 

Attachments

  • debug_28023.zip
    1.8 MB · Views: 66
Thank you. I'm sure I've been mixing methods. So rather than reply to your questions with uninformed responses, the attached zip should be more helpful for all of us. Thank you UtterDisbelief and Feartech!

Hi there.

Thanks for all the files/info. Very useful.

You haven't specified a particular problem you are trying to solve beyond your original post, so I'll just dive in ...:)

If you would like to 'go deeper' then experimenting is the way forward - remember to mitigate any data risks by backing-up everything. And don't experiment on a machine needed for work etc.

Okay ...

1) You have FakePCIID_XHCIMux and GenericUSBXHCI kexts installed, according to IOReg. What these do is shunt USB2 ports to EHC on an XHC controller and activate third-party USB chipsets, respectively. Given you have 14 USB2-ports available from the Intel chipset, to keep to the 15-port Apple-imposed limit AND have USB3 available you need to disable some of the 14 and activate the ASMedia ports. You use a port-limit removal patch to start with so you can see all ports, then remove it once the ports are configured.

2) If you need USB3 ports then just remove FakePCIID_XHCIMux.kext. If you just want to go with 14-USB2 ports then remove GenericUSBXHCI.kext too.

3) Your SSDT needs the Device IDs to use the correct controller otherwise it doesn't know where to apply the patch.

4) In @RehabMan 's template you have used the first sections designated as "Hub1" & "Hub2" etc. I would NOT use this part, instead go down a little further until you see the line starting "8086..." because here you can input your Device IDs - 8086_1d26 & 8086_1d2d - and create two new sections.

Or use the simpler template here and build it as explained.

5) Check your IORegistryExplorer output again and see how things have changed :thumbup:
 
Given you have 14 USB2-ports available from the Intel chipset, to keep to the 15-port Apple-imposed limit AND have USB3 available you need to disable some of the 14 and activate the ASMedia ports. You use a port-limit removal patch to start with so you can see all ports, then remove it once the ports are configured.
Thank you for your help. One (mis)-understanding I had was the 15 port limit only applied to intel ports. The ongoing USB instability from 10.8 through 10.13.6 was the result. I'll post back after I make fixes. Thank you.
 
Thank you for your help. One (mis)-understanding I had was the 15 port limit only applied to intel ports. The ongoing USB instability from 10.8 through 10.13.6 was the result. I'll post back after I make fixes. Thank you.

Yes indeed. The 15-port limit does only apply to Intel chipset ports.

One reason why I recommended removing those kexts was to "clear the decks" and see how things looked unmodified.

As I pointed out before the X79 chipset has 14x USB2 ports so there is no need to restrict them.

I was wrong to suggest you disable USB2 ports on the EHC controllers to make room for USB3. My bad.:oops: You will just not be able to configure the USB3 ports properly and they may be unreliable.

However those kexts move things around and your IOReg output reflects that.

:)
 
Back
Top