Contribute
Register

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

I was able to successfully make a SSDT for the USB ports on my Gigabyte Z370-AORUS-Gaming 7. The dump file was a bit different than the ASUS, but only took a little while to figure out how to make it work. Now, without USBInjectAll, I have HS01 - HS09 and SS01-SS06 injected and operational. Before making the SSDT and using USBInjectAll I had HS01-HS14, SS01-SS10, and USR1-USR2. I don't use the USB-C ports yet so I may have to modify the SSDT when/if I decide to use it. Thanks MacMan for sharing your knowledge!
 
I don't use the USB-C ports yet so I may have to modify the SSDT when/if I decide to use it. Thanks MacMan for sharing your knowledge!

The good news it that on many boards, the USB3.1 stuff is handled by a different chipset, and thus may 'just work' for you without touching anything in an SSDT. Try plugging in a thumb drive or something -- on my Asus Maximus IX (Z270) it shows up as a completely separate bus and is picked up natively by a different kext, full speed functionality out of the box :)
 
@Khaibit, you are correct. I purchased a USB-C card reader today and my USB-C ports are not on the same bus as the aforementioned USB3 ports. With that in mind, I eliminated HS08/SS08. I had suspected it may have been for the USB-C. Down to 14 ports.
 
I was able to successfully make a SSDT for the USB ports on my Gigabyte Z370-AORUS-Gaming 7. The dump file was a bit different than the ASUS, but only took a little while to figure out how to make it work. Now, without USBInjectAll, I have HS01 - HS09 and SS01-SS06 injected and operational. Before making the SSDT and using USBInjectAll I had HS01-HS14, SS01-SS10, and USR1-USR2. I don't use the USB-C ports yet so I may have to modify the SSDT when/if I decide to use it. Thanks MacMan for sharing your knowledge!

Hi,banjo800
I use the same motherboard as you.
Please let me share the SSDT that you made.
I can learn by watching it.
 
Hi,banjo800
I use the same motherboard as you.
Please let me share the SSDT that you made.
I can learn by watching it.

Sure. It's just a matter of changing a "one" to a "zero" in the sections you want to disable. Compare the .dsl file to your dumped file in your origin folder. You should be able to drop SSDT-5.aml into your patched folder, remove usbinjectall.kext, the port limit patch, reboot and roll on. Use the .dsl file to experiment with.
The only drawback is the external USB hard drives show as internal. I think there's a patch for that somewhere, I just haven't tracked it down yet. Let me know if it works for you.
 

Attachments

  • SSDT-5.aml
    10.7 KB · Views: 150
  • SSDT-5.dsl
    59.6 KB · Views: 156
Sure. It's just a matter of changing a "one" to a "zero" in the sections you want to disable. Compare the .dsl file to your dumped file in your origin folder. You should be able to drop SSDT-5.aml into your patched folder, remove usbinjectall.kext, the port limit patch, reboot and roll on. Use the .dsl file to experiment with.
The only drawback is the external USB hard drives show as internal. I think there's a patch for that somewhere, I just haven't tracked it down yet. Let me know if it works for you.

Thank you for sharing!
I tested your SSDT-5.aml. It worked perfectly.
I changed it to release the port I am using.
Just like you, external USB hard drives are displayed as internal.
There is a memory that there was an icon patch. I will try to find it.

Thank you.
 
Thank you for sharing!
I tested your SSDT-5.aml. It worked perfectly.
I changed it to release the port I am using.
Just like you, external USB hard drives are displayed as internal.
There is a memory that there was an icon patch. I will try to find it.

Thank you.
I got a USB3 Hub with Card Reader yesterday and found out the 2 USB2 connectors on the motherboard have 2 ports each. When I had plugged my BT/Wifi into those eariler, it only showed ports 7 & 9. When I plugged the card reader into them, it showed ports 8 & 10. USB-1 Motherboard connector has ports 7&8, USB-2 connector has 9&10. Since you reconfigured the .dsl to match what you had, I assume you figured this out already. I just wanted to put this out there in case anyone else uses those files.
 
MacMan, great post, thank you.

As much as I truly respect RehabMan and all of his truly fine work, this method was fairly easy seeing that RehabMan's documentation was a great primer of knowledge, thank you RehabMan. I learned from both of you in solving this problem!

I'm not sure that this method is specific to Asus (possible title change?) as I have successfully applied the same principals to a Gigabyte GA-Z100X-UD5 (100 series chipset). RehabMan's robust documentation clearly defines the capability of the chipset (8086:A12F) used in the 100 series as:
Further armed with RehabMan knowledge, the suggestion of using a USB3 hub to do port testing assisted in making this solution truly viable. Gleaning the fact that the USB3 hub plugged into a USB3 port further connects to the USB2 data channel and thus requires an associated USB2 port connection for backward compatibility. With just minor experimenting, an association patten emerged. That pattern says the SS01 port wants HS01, the SS05 port wants HS05 and so on; as in my case. The GA-Z100X-UD5 has two chassis headers for both USB2 and USB3 (4 total headers). I am consuming both USB2 headers [1 for front panel (2 ports) and 1 port for Bluetooth (defined a single header port)] then a single USB3 chassis header (right side) for two front panel ports. The backplate further has 2 USB2, 3 USB3, 1 USB3.1 and one USB-C port. I have no USB-C devices to test. I further concur with others in this tread that the USB3.1 controller works out of the box with the device ID (8086:15B6) (Sub 2222:1111 using DPCIManager) and is displayed as AppleUSBXHCIAR in IORegistryExplorer. The above configuration put me at the exact 15 port limit. It should also be noted that I did not have to rename "change XHC1 to XHC" and that I have USB Legacy support disabled in the BIOS (version F22i microcode patched).

Since the goal of this exercise is to keep the port count at or below 15 total, my configuration fit perfectly into the 15 port limit. I must say that I like the KEXT'less approach. Reviewing the ASUS 300 series sample was really cool as the DSDT defined the data table to query making any maintenance simple (old school data dictionary). I was not ambitious enough to convert my file into that format however. The original Clover dump file (pressing F4 on the clover boot screen) was named: SSDT-3-xh_rvp10.aml. Since the SSDT will be merged, the naming convention is important hence SSDT-3.aml placed in the patched directory/folder (/Volumes/EFI/EFI/CLOVER/ACPI/patched). The directions/instruction in post one are spot on. I used RehabMan's MaciASL RM-1.31 (252.4) with ACPI 6.2a set in preferences/iASL to compile the .dsl to .aml (save as and select the file type as ACPI Machine Language Binary).

My config.plist did not have the necessary "AutoMerge" directive and I needed to add it.
Code:
<key>ACPI</key>
    <dict>
        <key>AutoMerge</key>
        <true/>
        <key>DSDT</key>
        <dict>
This is truly an experimental build and is not contained in my profile; no complaints on this please. I am repurposing some equipment for my college junior Son keeping my bleeding budget under control. Three rules apply to my parenting style, 1) Get them educated, 2) Get them out of the house and 3) Get them off the payroll. The last one seems to be the toughest; pay attention to #3 youngsters. I went through all of this effort because I need a repeatable process to repurpose three machines with similar or exact components.
  • Components:
  • Mojave 10.14.1 - fresh install - UniBeast USB preparation
  • No APFS - Method - /usr/libexec/PlistBuddy -c "Set :ConvertToAPFS false" minstallconfig.xml
  • Gigabyte GA-Z100X-UD5 (rev 1.0) - BIOS F22i
  • i7-6700K (Skylake) - SSDT-i7-6700.aml applied (overclocked 4.4 GHz, XMP Profile1)
  • 64 GB G Skill part F4-2800C15-16GVR
  • Sapphire Nitro 580+ - Set in EFI mode (bye bye Nvidia because of no Mojave drivers)
  • SSD based - Intel (rescue), Toshiba (Win10), Micron (Mojave)
  • Repurposed WD Red Pro 4 GB times 2 - Time Machine and Other backups
  • LG Blu-ray burner for permanent offsite photo storage (he's also a photographer)
  • Fenvi WiFi/Bluetooth - Order pending from China - Claims no KET's required. 4 Antennas.
  • Seasonic power supply - 850 Watt Gold certified
  • Multiple monitors to be determined, most likely 2K Dell.
  • Clover Version 4741 - No MultiBeast finalization (old school)
  • Working:
  • audio - Internal Speakers & HDMI - toleda - Fixes - macOS/HDEF Audio: Intel 100/200/300 Series, X299, X99 Unsupported - Lilu and AppleALC kext's.
  • USB - Thanks to this post!
  • Ethernet i219V - IntelMausiEthernet v2.4.0
  • Dual Monitors - no hot plug required like some complain about
  • Not working:
  • Ethernet i211 (8086:1539) (Sub 1458:E000) - Any suggestions?
  • i211 is now working with the SmallTree driver from this link
  • Unknown:
  • Fenvi - waiting for it to arrive from China
  • Waiting for all parts prior to signing into the store and iCloud because of iMessage concerns.
Summing up this long winded post, review the image showing the 15 ports, their assignments/associations and the modified SSDT-3.dsl successfully used. All this in efforts to give back to the community plus give just due respect and credit to the people who make it happen!


Updated Nov 13, 2018 - Section Build spoiler with working i211 Ethernet controller, SmallTree kext link provided.


USB_Ports_Detailed.png
 

Attachments

  • SSDT-3.dsl
    59.6 KB · Views: 131
Last edited:
Great post.

I have a draft version of this guide for Gigabyte that I haven't had a chance to do final a proofread of. This will get me going to finish it and publish.
 
Lauderdale's post increased my interest in this "kextless" procedure, but in fooling around a bit I immediately ran into a basic problem. If I am in the Clover (boot options) window and press f4, then continue the boot process, I get a black screen. If I then restart normally, open my EFI partition and go to EFI/CLOVER/ACPI/origin, that folder is empty. This is on a Gigabyte Z370n-WIFI motherboard, BIOS version F10, Clover version 4658, presently using RehabMan's USBInjectAll kext with my SSDT in ACPI/patched.

Any comments? Oh yeah, there's a second weirdness... after the restart following the black screen, there is a second "EFI" folder in my EFI partition, containing an "APPLE" folder. (I looked into it and then deleted it.) Maybe for this motherboard, "F4" is not the right key to get a DSDT dump...?
 
Last edited:
Back
Top