Contribute
Register

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

No need to worry about updating 3rd party, kexts clashing or if Apple blacklists them. That is why it's always better to minimize the number of add-on kexts you install.
I get it, and that's why I have used MacMan's method of selecting active USB ports on my "Mini-ITX 2," "Mini-ITX 3," and "Mini-ITX 4" computers (listed below). Recently I have installed OpenCore v 0.6.3 on a USB flash drive and verified that it will boot my "Mini-ITX 4" (at left and below) computer. But there seems not to be an "automerge" function in OpenCore. It has been explained to me that to use MacMan's method on OpenCore, I would have to use the ACPI "Delete" function to "disable" my DSDT's "SSDT-6-A M I.aml" file, and then use the ACPI "Add" function to add my own edited "SSDT-6-A M I.aml" file. I have not been able to get this to work, due to my ignorance. If anyone has an idea how to do this, I would appreciate some instructions. (I have instead used "Hackintool" to create a "USB Port.kext" file which does work.)
 
I get it, and that's why I have used MacMan's method of selecting active USB ports on my "Mini-ITX 2," "Mini-ITX 3," and "Mini-ITX 4" computers (listed below). Recently I have installed OpenCore v 0.6.3 on a USB flash drive and verified that it will boot my "Mini-ITX 4" (at left and below) computer. But there seems not to be an "automerge" function in OpenCore. It has been explained to me that to use MacMan's method on OpenCore, I would have to use the ACPI "Delete" function to "disable" my DSDT's "SSDT-6-A M I.aml" file, and then use the ACPI "Add" function to add my own edited "SSDT-6-A M I.aml" file. I have not been able to get this to work, due to my ignorance. If anyone has an idea how to do this, I would appreciate some instructions. (I have instead used "Hackintool" to create a "USB Port.kext" file which does work.)
No one has responded to me about it not working with Opencore to tell me how to do it and that has been since February. I preferred this method right up until it stopped working I now use Hackintool USB port.kext
 
No one has responded to me about it not working with Opencore to tell me how to do it and that has been since February. I preferred this method right up until it stopped working I now use Hackintool USB port.kext

Hi there.

The answer is the way OpenCore and Clover treats a DSDT patch rather than a secondary SSDT. When you create a patch manually you dump the DSDT of your PC and then search for the USB-relevant file. Next you re-write some of the code to match the USB spec you want. Then you "merge" it back into the DSDT on the fly. Try and find the "merge" option in OpenCore. It's not as straight-forward as Clover. Maybe its beta status is the reason it hasn't yet been openly implemented.

An SSDT replacement patch is the best way to configure anything because it patches ACPI before the OS gets going and no kexts or other possible security breaches are involved. macOS goes easy on it. The trouble is, of course, writing XML code in the proper schema is not easy for most of us.

Hackintool's USBPorts however is a rather special kext, just like USBMap.kext produced by another well-known Hacker and their script. It has no executable and thus is not fully "visible" to macOS. Run "kextstat" and see if you can find it. I have seen occasions where references pop-up but the point is, it isn't seen as a threatening kext. Show Package Contents reveals all. It's just an info.plist with code similar to an SSDT.

So there really is no shame in using USBPorts.kext instead of a patched DSDT. It isn't a second-class citizen. I wrote the new guide for USB using it because I knew Catalina was bringing new security and that this would only increase over time.

:)
 
Last edited:
The SSDT stopped working for me at some point too. I have no idea why.
 
The SSDT stopped working for me at some point too. I have no idea why.

Did you find a "merge" option in OpenCore? I have wondered if you can just create an arbitrary key ...
 
Hi there.

The answer is the way OpenCore and Clover treats a DSDT patch rather than a secondary SSDT. When you create a patch manually you dump the DSDT of your PC and then search for the USB-relevant file. Next you re-write some of the code to match the USB spec you want. Then you "merge" it back into the DSDT on the fly. Try and find the "merge" option in OpenCore. It's not as straight-forward as Clover. Maybe its beta status is the reason it hasn't yet been openly implemented.

An SSDT replacement patch is the best way to configure anything because it patches ACPI before the OS gets going and no kexts or other possible security breaches are involved. macOS goes easy on it. The trouble is, of course, writing XML code in the proper schema is not easy for most of us.

Hackintool's USBPorts however is a rather special kext, just like USBMap.kext produced by another well-known Hacker and their script. It has no executable and thus is not fully "visible" to macOS. Run "kextstat" and see if you can find it. I have seen occasions where references pop-up but the point is, it isn't seen as a threatening kext. Show Package Contents reveals all. It's just an info.plist with code similar to an SSDT.

So there really is no shame in using USBPorts.kext instead of a patched DSDT. It isn't a second-class citizen. I wrote the new guide for USB using it because I knew Catalina was bringing new security and that this would only increase over time.

:)
Thanks for the response I knew the reason it did not work was that OC does not have the Merge option, I even tried to copy it from the clover config and just place it in the OC config but it still did not work. I am not sure the OC developers want something like the merge option since it seems like a brute force option to make things work.
 
Hi @MacMan - hope the recovery is going well! Stay safe :thumbup:

I'm working on the kextless USB angle again for the new 500-series build and OpenCore. I've created a replacement SSDT-4... from the DSDT dump but I don't see a way in OpenCore to "AutoMerge" the new file in.

I've read that you need to Delete the original table before Adding the new, but OpenCore guidance doesn't cover this very well. I had a couple of attempts but the system refused to boot.

Have you any idea how this can be done?

:)

EDIT-1: in the "Delete" ACPI action I'm assuming the "OEMTableID" is a Hex conversion of the SSDT suffix because that = the required 8x bytes etc.

EDIT-2: Well I managed to boot - but with all USB inactive. As a test I've been OC Deleting the ACPI segment and then adding back the SSDT-4*** I extracted, with no modifications but a rename. Theory being I was deleting it and then replacing the exact same code back. Same result - no USB. So I figure I've misunderstood the "Delete" function after all.

EDIT-3: One week layer - I did understand how to delete the segment. No patch working. Perhaps it is a side-effect of the 500-series. Would use Clover but present version does not boot the motherboard.

Moving on ...
 
Last edited:
UD, if you find a way, please let us know! My Hackintool + USBPorts.kext procedure does work, but for some reason my keyboard/trackball USB combo doesn't respond immediately, and in many cases I have to disconnect the cable, wait, and then re-plug it to activate those items. Yet IORegistryExplorer shows all the correct ports and loads.
 
Back
Top