Contribute
Register

ASUS 100 Series and Later Custom SSDT for XHCI USB Port Control

Looking up your board from ASUS's website, it says the board has only 13 ports total. Are you sure you even need this since 13 < 15 (maximum port limit)?

Keep in mind that each USB3 port uses 2 ports (one HSxx, one SSxx).
 
Would disabling the ports in the bios have the same affect, or must one use either the KEXT or SSDT method ?
 
Last edited:
Mine seems to be not as simple as yours. Would I play to change it from line 83 i.e. Tweak it with that scope block?
 

Attachments

  • SSDT-5-xh_cfsd4.aml
    10.3 KB · Views: 121
Before I attempt this I'll do some time machine backups just in case it goes Pete Tong (wrong).

Screenshot 2018-12-31 at 12.00.58.png


I know what my ports are and I'll use the front 2 ports, on the back 8 & 9, and the bluetooth port. This should give me a total of 13 ports.

Looking at the definition block as mentioned earlier for port HS01:

Code:
    Scope (\_SB.PCI0.XHC.RHUB)
    {
        Name (H1CN, One)
        Name (H1VS, One)
        Name (H1TC, Zero)
        Name (H1CR, Zero)

and now the actual port function block:

Code:
        Scope (\_SB.PCI0.XHC.RHUB.HS01)
        {
            Method (_UPC, 0, NotSerialized)  // _UPC: USB Port Capabilities
            {
                If (LEqual (H1TC, Zero))
                {
                    Return (GUPC (H1CN))
                }
                Else
                {
                    Return (\_SB.UBTC.RUCC (H1CR, One))
                }
            }

            Method (_PLD, 0, NotSerialized)  // _PLD: Physical Location of Device
            {
                If (LEqual (H1TC, Zero))
                {
                    Return (GPLD (H1VS, One))
                }
                Else
                {
                    Return (\_SB.UBTC.RUCC (H1CR, 0x02))
                }
            }

Going by from what I've seen on the other examples in this thread, that the value in-between GUPC (???) has to be either "One" for enable or "Zero" for disable But since its in an IF statement then I need to change H1TC i.e. HXTC where X = port number. For SS ports then it is SX1TC.

UPDATE:
Dont't try this, it fails. Good job I'd had a backup :)
 
Last edited:
Pretty cool method. I'd use this over a kext for sure.
 
I have used @RehabMan method before on another rig, but yesterday I was trying to implement it on the rig in my profile and no matter what I did it always showed HS01 - HS14 + SS01 for a total of 15. I made SSDT and used inject all without port limit patch still showed the same HS01 - HS14 + SS01. So I then tried this method and still the same I mean even if I did not do this or Rehabman's method 100% right for each port at least some would change would they not? Attached is the original and the revised one. I am trying to user HS/SS 3,4,5,6 and HS 11,13,14. to me it looks like it is ignoring the stuff in the patched folder.

Edit:
Guess I should have checked the code before assuming that auto-merge was set because of my clover version.
All ports are set up and speed seems correct. Thank you for your guide.
 
Last edited:
I am using Asus z170i pro gaming 100 series ,
I've followed the instructions 100%
But IOreg still show from HS01 to HS14 and SS01 .
How to eleminate the unused ports please ?
I want only used port show in IOreg
I've replaced One with Zero as mentioned
 
I see other ppl managed to do it without using any Kexts or arg-
Is that not possible ?

Do you have Automerge checked in clover? did you check the code to make sure automerge was actually in your config.

Post your EFI I will take a look at it. Also tell me exactly what ports you want on and what ports you want off. I use this method without a kext and it works great.
 
Back
Top