Contribute
Register

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

Just to finish with this part of the build. Everything is finished and set up as per the guide.

Just to answer some of my own questions. I asked if I needed to change line 380 in my .aml file shown in post #90. The answer is no. From my research and testing, (I did change the value to Zero), it does not make a difference for this guide. I am sure it has some value because it is in a line of an IF/Else/Else statement.

Just to let others know, from my research and trial and error, the only value you want to change from One to Zero or vice versa is the one before the Else statement(which should be the first one only). My .aml file has an If/Else/Else statement with each followed by a Return (GUPC (One/Zero)) as given in the example below. The values following each Return, first Return = One, second Return = Zero, third Return = One, is the default on position.

Thanks again for all the help from everybody
Thaigyver
 

Attachments

  • USB SSDT Ex.1.png
    USB SSDT Ex.1.png
    40.7 KB · Views: 263
Just a quick question if anyone has an answer. I finished the kext-less USB set up guide procedure in post #1 by @MacMan, with plenty of great info by @Lauderdale, and with the help of others in the forum. I tested each USB port for correct speed with both USB2 and USB3 thumb drives and all is well. When I look in System Information under USB I only see a USB 3.1 Bus, picture below. And to answer any questions, the only USB I am using in that picture are 2 USB2 ports for keyboard and mouse.

So, I populated almost all of the USB ports with thumb drives and looked again. Picture included below. Regardless if I am using a USB2, USB3, USB3.1 Type-C port, or a USB2, USB3, USB3.1 Type-C thumb drive, they all show up under the same USB 3.1 Bus.

Is this correct or have I made an error along the way?

Thanks
Thaigyver
 

Attachments

  • USBSysInfo1.png
    USBSysInfo1.png
    43.2 KB · Views: 228
  • USBSysInfo3.png
    USBSysInfo3.png
    160.5 KB · Views: 252
Just a quick question if anyone has an answer. I finished the kext-less USB set up guide procedure in post #1 by @MacMan, with plenty of great info by @Lauderdale, and with the help of others in the forum. I tested each USB port for correct speed with both USB2 and USB3 thumb drives and all is well. When I look in System Information under USB I only see a USB 3.1 Bus, picture below. And to answer any questions, the only USB I am using in that picture are 2 USB2 ports for keyboard and mouse.

So, I populated almost all of the USB ports with thumb drives and looked again. Picture included below. Regardless if I am using a USB2, USB3, USB3.1 Type-C port, or a USB2, USB3, USB3.1 Type-C thumb drive, they all show up under the same USB 3.1 Bus.

Is this correct or have I made an error along the way?

Thanks
Thaigyver

I have a 3.1 and a 3.0 bus. I am guessing one is from one controller and the other is from the other controller since my board has two controllers. If your board only has one controller then everything would be listed under the 3.1 controller because you do not have a 3.0 controller.
 
Currently I'm still working on this technique for Gigabyte motherboards and my own board is not identical to yours.

The Asus SSDT works with an MSI board, I do not currently have a Gigabyte with macOS to test it with but I would guess that it works. I guess what I am saying is that as long as you have the Asus SSDT this guide could handle any board brand.
 
The Asus SSDT works with an MSI board, I do not currently have a Gigabyte with macOS to test it with but I would guess that it works. I guess what I am saying is that as long as you have the Asus SSDT this guide could handle any board brand.

Yep, the guide is very good. Only problems for other manufacturers so far:

1) the 'origin' output files can be named differently for different BIOSes and motherboards.

2) the XML can be formatted in different ways. For a perfect example from Gigabyte, H370 and Z370. On first glance motherboards are identical, just different chipsets. However the H370 has a built-in USB3.1 Gen 2 facility, the Z370 does not. The origin output is quite different.

3) There is a fair bit of work needed to get 'UsbConnector' settings on an individual port basis. This involves added 'if-then-else' structures within the code.

Work is on-going.
 
Yep, the guide is very good. Only problems for other manufacturers so far:

1) the 'origin' output files can be named differently for different BIOSes and motherboards.

2) the XML can be formatted in different ways. For a perfect example from Gigabyte, H370 and Z370. On first glance motherboards are identical, just different chipsets. However the H370 has a built-in USB3.1 Gen 2 facility, the Z370 does not. The origin output is quite different.

3) There is a fair bit of work needed to get 'UsbConnector' settings on an individual port basis. This involves added 'if-then-else' structures within the code.

Work is on-going.

I think you miss understood what I was saying. What I am saying for example is you can use the SSDT from a ASUS board with an MSI board at least in my case. I cloned my Hack on the ASUS recently and put it in the MSI, when I went to configure the ports I realized that It was the ASUS SSDT file but I did it anyways and left it rebooted and such that was a few weeks ago no issues with the system that I can tell.
 
In case anyone needs an example for the z170-Deluxe.

Screen Shot 2019-08-20 at 7.08.15 PM.png

  • Install USBInjectAll.kext and Remove XHCI USB Port Limit patch from MultiBeast.
  • Run MaciASL and select File > New from ACPI > SSDT-3 (xh_rvp08). For the following you can either do the USB test where you connect USB 2.0 and USB 3.0 devices to each Intel port or read the manual and look at the specs. The internal USB connectors are Intel and

I'm using the front USB ports on my case that connect to the USB3_12 USB header on the motherboard.​

Those ports map to HS01 (USB 2.0)/SS01 (USB 3.0) and HS02 (USB 2.0)/SS02 (USB 3.0).​

Screen Shot 2019-08-20 at 7.12.07 PM.png


The rest of the ports that I've mapped in the Rear I/O connection are:​

Screen Shot 2019-08-20 at 7.15.02 PM.png


HS05 rear port #12. (USB 2.0)
HS06 rear port #11 (USB 3.0/2.0) devices
HS07 Internal Bluetooth​

You can match the description below with the screenshot above to show which ports are ASMedia USB ports. Those are not affected.

Screen Shot 2019-08-20 at 7.29.58 PM.png


  • Add the Change XHC1 to XHC_ patch in ACPI patches in Clover. You have to do it manually as it's not part of the List of Patches:
Find* [HEX] 58484331 Replace [HEX] 5848435F​

  • Remove USBInjectAll.kext from /Library/Extenions and run the following in Terminal:
sudo chmod -v -R 755 /Library/Extensions​
sudo chown -v -R root:wheel /Library/Extensions​
sudo touch /Library/Extensions​
sudo kextcache -i /​

  • Comment out the Remove XHCI USB Port Limit patch from Clover.config (You can select the Disabled check-box) to do that.
  • Restart and you should be good to go.
I've attached my SSDT-3 to show where I modified the PCI USB Method Returns from (GUPC (One)) to Return (GUPC (Zero)) as an example.
 

Attachments

  • Screen Shot 2019-08-20 at 7.12.07 PM.png
    Screen Shot 2019-08-20 at 7.12.07 PM.png
    195.1 KB · Views: 167
  • SSDT-3.aml
    2.8 KB · Views: 203
I found that MacMan's technique worked fine on both my 8th-and 9th-gen Hacks with Z370N-WIFI and Z390 I AORUS mobos respectively. They worked because there were separate SSDTs for USB control in both "F4" Clover dumps. But for my 4th-gen Haswell (H87N-WIFI) computer, the Clover "F4 dump" results in no dedicated SSDT for USB control. Instead, there is a file named "DSDT" which has the USB stuff starting at around line item 8100 or so, and its format is confusing to me. So that computer still uses RehabMan's method.
 
I did this kextless method on my Gigabyte Z390. The method is basically the same, although, the syntax of the SSDT may look different.

Find out which ports you want disabled and do the following...

Here's an example. Hypothetically, if you want to disable HS09, you look for the following:
Code:
    If (LGreaterEqual (NHSP, One))
    {
        Scope (\_SB.PCI0.XHC.RHUB.HS09)
        {
            Method (_UPC, 0, NotSerialized)  // _UPC: USB Port Capabilities
            {
                If (LEqual (H1TC, Zero))
                {
                    If (LEqual (And (UMAP, One), One))
                    {
                        Return (GUPC (One))
                    }
                    Else
                    {
                        Return (GUPC (Zero))
                    }
                }
                Else
                {
                    Return (\_SB.UBTC.RUCC (H1CR, One))
                }
            }

Then change "Return (GUPC (One))" to "Return (GUPC (Zero))":
Code:
    If (LGreaterEqual (NHSP, One))
    {
        Scope (\_SB.PCI0.XHC.RHUB.HS09)
        {
            Method (_UPC, 0, NotSerialized)  // _UPC: USB Port Capabilities
            {
                If (LEqual (H1TC, Zero))
                {
                    If (LEqual (And (UMAP, One), One))
                    {
                        Return (GUPC (Zero))
                    }
                    Else
                    {
                        Return (GUPC (Zero))
                    }
                }
                Else
                {
                    Return (\_SB.UBTC.RUCC (H1CR, One))
                }
            }
 

Attachments

  • Screen Shot 2019-11-22 at 8.42.49 PM.png
    Screen Shot 2019-11-22 at 8.42.49 PM.png
    49.5 KB · Views: 173
Back
Top