Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

I'm setting up ASRock Z490 Phantom Gaming ITX/TB3 and have been reading on it for couple days, but still confusing... According to the manual, few of the usb ports on the back are 3.2 Gen 2.

I have the ports mapped to HS09/SS06, HS08/SS05, HS05/SS03, but when I look in Hackintool, they're identified as "Internal". What is the best selection for those USB3/USB C/TypeC+Sw when generating the USB kext?

Thanks in advance.
 

Attachments

  • Screen Shot 2021-04-05 at 4.19.57 PM.png
    Screen Shot 2021-04-05 at 4.19.57 PM.png
    111.9 KB · Views: 99
I'm setting up ASRock Z490 Phantom Gaming ITX/TB3 and have been reading on it for couple days, but still confusing... According to the manual, few of the usb ports on the back are 3.2 Gen 2.

I have the ports mapped to HS09/SS06, HS08/SS05, HS05/SS03, but when I look in Hackintool, they're identified as "Internal". What is the best selection for those USB3/USB C/TypeC+Sw when generating the USB kext?

Thanks in advance.

Hi there.

All your back-panel ports seem to be USB3, so UsbConnector Type 3, with the exception of '12' which will be either Type 9 or 10 depending whether or not it moves location in Hackintool when you flip the plug over etc.

None of the back-panel ports should be "Internal".

:)
 
I'll try that, thank you!

Any idea why SS01 is showing twice and how should I configure it? It's the BIOS update port on the back...
 

Attachments

  • Screen Shot 2021-04-05 at 7.36.54 PM.png
    Screen Shot 2021-04-05 at 7.36.54 PM.png
    123.1 KB · Views: 85
Last edited:
Hi there.

Yes, it is worth bearing in mind that there are two types of USB-C to USB-C cable commonly available - USB2 and USB3. Check out Amazon for example. Their own Amazonbasics brand offers both types. You need to read the description line very carefully to spot it - "2.0" or "3.0".

Mind you if you are using the cable that came with the external SSD enclosure, you would expect it to be the correct type.

As for kext placement, I recommend EFI/CLOVER/kexts/Other now. L/E works up to Mojave but why give yourself a future headache when you upgrade to Catalina?

:)
@UtterDisbelief
Sorry to circle back around after a year, but I've just discovered an issue with my USBPorts.kext. In a nutshell, if USBPorts.kext is placed in L/E, the resulting port mapping is correct when verified with Hackintool (3.5.7) or IOReg. If the kext is placed in EFI/Clover/kexts/Other, the port mapping shows incorrect in Hackintool or IOReg. I'm not sure when things went awry? I had finally began prepping (updating kexts) prior to changing my system definition, so I could then begin to update from Mojave to Catalina. Over the weekend, I updated Clover Configurator to the latest version. I noticed that on the System Parameters screen, the Inject Kexts selection option had been changed to only allow Y or N (this change noted in the ChangeLog). The previous value had been set to "Detect" as I had placed most of my kexts in LE, with exception to USBPorts.kext and FakeSMC.kext which were in E/C/k/O. I recovered a previous version of Clover Config (15.17.4.4) so that I could reset the value back to Detect.

Shown below are the port mappings from Hackintool and IOReg. For the time being, I'll move USBPorts.kext into LE so the ports are mapped correctly. Can you provide any reason why or where things are getting whacked? Is it the difference between Inject Kexts Yes, versus Detect during boot? Hoping you can shed some light. Thanking you in advance!
 

Attachments

  • Hack-EFI-Boot.png
    Hack-EFI-Boot.png
    148.8 KB · Views: 85
  • Hack-LE-Boot.png
    Hack-LE-Boot.png
    102.6 KB · Views: 78
  • IOReg-EFI-Boot.png
    IOReg-EFI-Boot.png
    194.1 KB · Views: 78
  • IOReg-LE-Boot.png
    IOReg-LE-Boot.png
    180.4 KB · Views: 71
@UtterDisbelief
Sorry to circle back around after a year, but I've just discovered an issue with my USBPorts.kext. In a nutshell, if USBPorts.kext is placed in L/E, the resulting port mapping is correct when verified with Hackintool (3.5.7) or IOReg. If the kext is placed in EFI/Clover/kexts/Other, the port mapping shows incorrect in Hackintool or IOReg. I'm not sure when things went awry? I had finally began prepping (updating kexts) prior to changing my system definition, so I could then begin to update from Mojave to Catalina. Over the weekend, I updated Clover Configurator to the latest version. I noticed that on the System Parameters screen, the Inject Kexts selection option had been changed to only allow Y or N (this change noted in the ChangeLog). The previous value had been set to "Detect" as I had placed most of my kexts in LE, with exception to USBPorts.kext and FakeSMC.kext which were in E/C/k/O. I recovered a previous version of Clover Config (15.17.4.4) so that I could reset the value back to Detect.

Shown below are the port mappings from Hackintool and IOReg. For the time being, I'll move USBPorts.kext into LE so the ports are mapped correctly. Can you provide any reason why or where things are getting whacked? Is it the difference between Inject Kexts Yes, versus Detect during boot? Hoping you can shed some light. Thanking you in advance!
keep all your 3rd party kexts in clover/kexts/other
 
keep all your 3rd party kexts in clover/kexts/other
Hi,

As I mentioned, when USPorts.kext was in E/C/k/o, the port mapping was incorrect? I would like to use E/C/k/o as that is the Catalina recommendation. So?
 
Hi,

As I mentioned, when USPorts.kext was in E/C/k/o, the port mapping was incorrect? I would like to use E/C/k/o as that is the Catalina recommendation. So?
as long as FakeSMC is only in clover/kexts/other
 
as long as FakeSMC is only in clover/kexts/other
You mean FakeSMC is the Only kext in E/C/k/O? I had begun to place kexts in Other, but my system seemed unstable. I reverted back to placing all kexts, with exception of FakeSMC, in LE as recommended in the Installing 3rd Party Kexts Guide. Per the USBPorts Guide, you should use Other as the placement. I don't want to go off topic, but clearly, something is wrong with USBPorts.kext when placed in Other?
 
You mean FakeSMC is the Only kext in E/C/k/O? I had begun to place kexts in Other, but my system seemed unstable. I reverted back to placing all kexts, with exception of FakeSMC, in LE as recommended in the Installing 3rd Party Kexts Guide. Per the USBPorts Guide, you should use Other as the placement. I don't want to go off topic, but clearly, something is wrong with USBPorts.kext when placed in Other?
i mean to keep only a copy of FakeSMC.kext in clover/kexts/other and not in /L/E

obviously you need to keep all your other 3rd party kexts in clover/kexts/other

don't have any 3rd party kexts in /L/E
 
You mean FakeSMC is the Only kext in E/C/k/O? I had begun to place kexts in Other, but my system seemed unstable. I reverted back to placing all kexts, with exception of FakeSMC, in LE as recommended in the Installing 3rd Party Kexts Guide. Per the USBPorts Guide, you should use Other as the placement. I don't want to go off topic, but clearly, something is wrong with USBPorts.kext when placed in Other?

Nothing is wrong with USBPorts.kext being put in 'Other'. In fact it is safer to use it in EFI/CLOVER/kexts/Other or EFI/OC/Kexts for Catalina and Big Sur.

For a start, no third-party kext should go in S/L/E for Catalina or later. Period. This is because of new kernel protection put in place by Apple.

This guide doesn't use USBPorts.kext. This guide was a slightly older method of configuration, relying on USBInjectAll.kext and and SSDT-UIAC.aml. In the New Beginner's Guide we create and use USBPorts.kext.

The reason for the preference between the techniques is because USBPorts.kext contains no executable code. This is important for the latest macOS's. It is a method of altering the ACPI by loading, or injecting, the changes we need as a kext would. Because it has no executable it does not ring any alarm-bells for Catalina or Big Sur. It doesn't get blocked. If you put it in the EFI location macOS doesn't even get a sniff of it. Run the Terminal command 'kextstat' (when you get it all working) and you will see it is apparently not there.
 
Back
Top