Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

This depends on a three variables: which version of macOS you are using, where you install your kexts and what settings you had previously. I recommend the kexts be be put in EFI/CLOVER/kexts/Other and in the System Parameters area of config.plist you set "Inject Kexts=Yes".

:)

@UtterDisbelief Clear and precise!!
Thanks and sorry for the silly questions!!
I had imagined that the two ports I mentioned were controlled like a PCI! Better this way! :) I have two more!!

I am using the latest version of Catalina and SMBIOS MacPro 1.1 to have H264 and HVEC enabled on vega 56 and the IGPU enabled. I will take care to check that the set "Inject Kexts=Yes" is selected.
Which method between the two do you recommend?

Thanks
 
@UtterDisbelief Clear and precise!!
Thanks and sorry for the silly questions!!
I had imagined that the two ports I mentioned were controlled like a PCI! Better this way! :) I have two more!!

I am using the latest version of Catalina and SMBIOS MacPro 1.1 to have H264 and HVEC enabled on vega 56 and the IGPU enabled. I will take care to check that the set "Inject Kexts=Yes" is selected.
Which method between the two do you recommend?

Thanks

Not silly. We all need to understand this arcane stuff...

Between USBInjectAll with an SSDT, or USBPorts on it's own ?

I use USBPorts.kext. There's no executable code inside it and kextstat (from Terminal) doesn't see it. Useful going forward.

:)
 
I use USBPorts.kext. There's no executable code inside it and kextstat (from Terminal) doesn't see it. Useful going forward.

:)
Well, then today I will try the Kext!!
 
@UtterDisbelief Ive reviewed both your guides on configuring USB ports, and I'm at a standstill. Opted to post my question here, since this was guide I'd been following most. The physical layout of USB ports are: (4) back panel USB 3.1 gen 1 ports, (1) back panel USB Type C port, (2) USB 3.1 gen 1 ports via internal USB header not being used, and (2) USB 2.0/1.1 ports via internal USB header, used to connect the Fenvi blue tooth card. Testing the back panel ports yields connections at: HS01, HS02, HS07 & HS08. HS09 shows active for the blue tooth adaptor. I have an external USB C SSD which is not recognized in the USB C port. I've attached IOReg showing results after the port limit removal patch. Why do SS ports stop at SS06? I'll need at least SS07 & SS08 to map out an SSDT. To further confuse, the attached Hackintool screen(s) show duplicate HS ports (USB3 & Internal) up to the SS entries, which also stop at SS06, yielding the Hackintool method of defining ports no good. Based on other posts, I assume the lone USB C port wont be usable?

I've also attached the LE directory showing installed kexts. I used Multibeast 11.3 to install the port limit removal patch. I'm currently at Mojave 10.14.1. Any advice on how to proceed, much appreciated!

1-IOReg-XHC.png




2-Hackintool USB1.png
3-Hackintool USB2.png

4-LE.png
 
@UtterDisbelief Ive reviewed both your guides on configuring USB ports, and I'm at a standstill. Opted to post my question here, since this was guide I'd been following most. The physical layout of USB ports are: (4) back panel USB 3.1 gen 1 ports, (1) back panel USB Type C port, (2) USB 3.1 gen 1 ports via internal USB header not being used, and (2) USB 2.0/1.1 ports via internal USB header, used to connect the Fenvi blue tooth card. Testing the back panel ports yields connections at: HS01, HS02, HS07 & HS08. HS09 shows active for the blue tooth adaptor. I have an external USB C SSD which is not recognized in the USB C port. I've attached IOReg showing results after the port limit removal patch. Why do SS ports stop at SS06? I'll need at least SS07 & SS08 to map out an SSDT. To further confuse, the attached Hackintool screen(s) show duplicate HS ports (USB3 & Internal) up to the SS entries, which also stop at SS06, yielding the Hackintool method of defining ports no good. Based on other posts, I assume the lone USB C port wont be usable?

I've also attached the LE directory showing installed kexts. I used Multibeast 11.3 to install the port limit removal patch. I'm currently at Mojave 10.14.1. Any advice on how to proceed, much appreciated!

View attachment 463273



View attachment 463274View attachment 463275
View attachment 463276


Hi there,

Let me work through this set-up first because that clears the decks...

First up, your USB-C port in native Intel so ahould work and should be configurable. (One of the main differences between the Z370 and the H370).

IORegistryExplorer is showing your ports as expected when USBInjectAll.kext and a port-limit removal patch is in place. The H370 has a maximum of 14 physical ports and within that total a maximum of 8 physical USB3.1 Gen 1 ports. That's on paper. In reality the ITX format usually has less USB Ports implemented and Gigabyte give you 9-ports.

Of these you have 6xUSB3.1, 2xUSB2 and 1xUSB-C (USB3.1) physical ports which makes for 16x total virtual ports.

Yes, agreed, Hackintool looks totally weird. I do not know if this is a "bug" or an indication of a configuration problem. I have seen this before. Try clearing the cache and reloading. To do this mouse-click on the Broom icon, third along in the bottom row. That clears. Next mouse-click on the circular arrows next along to the right. That reloads the ports.

If the result is the same, double check what kexts you have in EFI/CLOVER/kexts/Other.

Next you can delete the unwanted ports anyway and build an SSDT-UIAC.aml. Before we try the USBPorts.kext, just put the SSDT in the EFI/CLOVER/ACPI/patched folder, disable the port-limit removal patch and reboot. Check again.

:)
 
Hi there,

Let me work through this set-up first because that clears the decks...

First up, your USB-C port in native Intel so ahould work and should be configurable. (One of the main differences between the Z370 and the H370).

IORegistryExplorer is showing your ports as expected when USBInjectAll.kext and a port-limit removal patch is in place. The H370 has a maximum of 14 physical ports and within that total a maximum of 8 physical USB3.1 Gen 1 ports. That's on paper. In reality the ITX format usually has less USB Ports implemented and Gigabyte give you 9-ports.

Of these you have 6xUSB3.1, 2xUSB2 and 1xUSB-C (USB3.1) physical ports which makes for 16x total virtual ports.

Yes, agreed, Hackintool looks totally weird. I do not know if this is a "bug" or an indication of a configuration problem. I have seen this before. Try clearing the cache and reloading. To do this mouse-click on the Broom icon, third along in the bottom row. That clears. Next mouse-click on the circular arrows next along to the right. That reloads the ports.

If the result is the same, double check what kexts you have in EFI/CLOVER/kexts/Other.

Next you can delete the unwanted ports anyway and build an SSDT-UIAC.aml. Before we try the USBPorts.kext, just put the SSDT in the EFI/CLOVER/ACPI/patched folder, disable the port-limit removal patch and reboot. Check again.

:)
Thank you so much for the reply. First, per your Hackintool recommendation, I cleared cache and reloaded. Things look much better now, screen shot attached. Also, I should have noted the only kext in EFI/CLOVER/kexts/Other is FakeSMC.kext.

I will now begin the SSDT definition. I know the following should be used: HS01, SS01, HS02, SS02, HS07, SS07, HS08, SS08 & HS09. Question: I can specify SS07 & SS08, even though they do not appear in IOReg, correct?

I'm glad to be able to utilize the USB C port. Do you have any tips on the location of the USB C port assignment? As mentioned, the USB C port does not yet work, therefore, I can't plug in my SSD to see where it appears.

Thank you again for responding. I'll be anxious to make some headway this weekend.

Cheers!

Hackintool.png
 
Thank you so much for the reply. First, per your Hackintool recommendation, I cleared cache and reloaded. Things look much better now, screen shot attached. Also, I should have noted the only kext in EFI/CLOVER/kexts/Other is FakeSMC.kext.

I will now begin the SSDT definition. I know the following should be used: HS01, SS01, HS02, SS02, HS07, SS07, HS08, SS08 & HS09. Question: I can specify SS07 & SS08, even though they do not appear in IOReg, correct?

I'm glad to be able to utilize the USB C port. Do you have any tips on the location of the USB C port assignment? As mentioned, the USB C port does not yet work, therefore, I can't plug in my SSD to see where it appears.

Thank you again for responding. I'll be anxious to make some headway this weekend.

Cheers!

View attachment 463318


Yes, that looks cleaner :thumbup:

This may sound complicated, but stick with me ...

As for ports SS07 and SS08, because they do not appear in the Hackintool window then, no, you wouldn't normally be able to configure them. You say in your original post: "I'll need at least SS07 & SS08 to map out an SSDT". What makes you think that? As I said in reply, Intel's H370 has 14x USB ports, 8 of which can be USB3.1 and all 14 USB2, but that doesn't mean Gigabyte implements all of those on a small ITX board like yours.

Actually the H370N-ITX motherboard only uses 6x USB3.1 ports.

USBInjectAll.kext is very clever and it opens-up all possible ports on the Intel H370 chipset. This is it's job - to make everything visible so we can configure our ports. However, you can only configure what Gigabyte actually provides.

By using a USBInjectAll.kext command-line you can temporarily ignore the HS ports and only get to see the SS ports. In theory this will allow you to see SS01 to SS08 plus a couple of extras called USR2 and USR2 (usually), but not the HS ports. I don't see a need to do this as the SS07 and SS08 ports do not seem to be utilised by Gigabyte.

Have you plugged-in any devices and seen them appear on SS08 or SS09?

There are often ports that you can't see a connector for, internal or external. For example the supplied Bluetooth adapter will be using one of these, and it looks like it is, at HS09. True, you may have actually disabled the onboard BT in BIOS and this might really be a back-panel USB dongle in a USB2 port, but as there are only 4x USB3 ports on the back-panel, no USB2, I think it's a good guess :thumbup:.


Okay, moving on to USB-C ...

There should be an HS/SS pair allocated to it. My guess is that it would be an early number. Unfortunately I can't tell what that is remotely. Do you have any other USB-C devices you can plug in instead of the external SSD? Double-check that the USB-C port is enabled in the BIOS. Otherwise the only way to see it is by checking details of every port in IORegistryExplorer.

:)
 
Yes, that looks cleaner :thumbup:

This may sound complicated, but stick with me ...

As for ports SS07 and SS08, because they do not appear in the Hackintool window then, no, you wouldn't normally be able to configure them. You say in your original post: "I'll need at least SS07 & SS08 to map out an SSDT". What makes you think that? As I said in reply, Intel's H370 has 14x USB ports, 8 of which can be USB3.1 and all 14 USB2, but that doesn't mean Gigabyte implements all of those on a small ITX board like yours.

Actually the H370N-ITX motherboard only uses 6x USB3.1 ports.

USBInjectAll.kext is very clever and it opens-up all possible ports on the Intel H370 chipset. This is it's job - to make everything visible so we can configure our ports. However, you can only configure what Gigabyte actually provides.

By using a USBInjectAll.kext command-line you can temporarily ignore the HS ports and only get to see the SS ports. In theory this will allow you to see SS01 to SS08 plus a couple of extras called USR2 and USR2 (usually), but not the HS ports. I don't see a need to do this as the SS07 and SS08 ports do not seem to be utilised by Gigabyte.

Have you plugged-in any devices and seen them appear on SS08 or SS09?

There are often ports that you can't see a connector for, internal or external. For example the supplied Bluetooth adapter will be using one of these, and it looks like it is, at HS09. True, you may have actually disabled the onboard BT in BIOS and this might really be a back-panel USB dongle in a USB2 port, but as there are only 4x USB3 ports on the back-panel, no USB2, I think it's a good guess :thumbup:.


Okay, moving on to USB-C ...

There should be an HS/SS pair allocated to it. My guess is that it would be an early number. Unfortunately I can't tell what that is remotely. Do you have any other USB-C devices you can plug in instead of the external SSD? Double-check that the USB-C port is enabled in the BIOS. Otherwise the only way to see it is by checking details of every port in IORegistryExplorer.

:)
Hi there!
Thank you for the good description of my Gigabyte MOBO, including its limitations. In order to answer your question re: the USB-C port, I retested it using my SSD. No go. I then retested the USB 3.1 ports. This verified the limited USB 3.1 capabilities. SS01 and SS02 were found, but nothing appeared on the other two. For those two (3.1) ports, they will need to be configured as USB 2 only. HS09 still shows the Wifi card. So for port configuration I have: HS01, SS01, HS02, SS02, HS07, HS08 & HS09. I also checked my MOBO manual, there is no BIOS setting to enable/disable the USB-C port.

Several questions: Since Hackitool works after "refreshing", can I use it to complete the port connectors as USB2 or USB3, as opposed to building the SSDT? And, since you've stated that the USB-C port is likely one of the lower port numbers, could I also configure SS03 thru SS06 as TypeC, so I can then subsequently verify which port is actually the true USB-C port? Afterwhich, I would then reuse Hackintool to clean up the port connectors, thus creating a new USB kext? Seems like the kext option is the preferred method moving forward?

So, I feel I'm almost there. Thanks for helping me along the way.

Cheers!
 
Hi there!
Thank you for the good description of my Gigabyte MOBO, including its limitations. In order to answer your question re: the USB-C port, I retested it using my SSD. No go. I then retested the USB 3.1 ports. This verified the limited USB 3.1 capabilities. SS01 and SS02 were found, but nothing appeared on the other two. For those two (3.1) ports, they will need to be configured as USB 2 only. HS09 still shows the Wifi card. So for port configuration I have: HS01, SS01, HS02, SS02, HS07, HS08 & HS09. I also checked my MOBO manual, there is no BIOS setting to enable/disable the USB-C port.

Several questions: Since Hackitool works after "refreshing", can I use it to complete the port connectors as USB2 or USB3, as opposed to building the SSDT? And, since you've stated that the USB-C port is likely one of the lower port numbers, could I also configure SS03 thru SS06 as TypeC, so I can then subsequently verify which port is actually the true USB-C port? Afterwhich, I would then reuse Hackintool to clean up the port connectors, thus creating a new USB kext? Seems like the kext option is the preferred method moving forward?

So, I feel I'm almost there. Thanks for helping me along the way.

Cheers!

Hi there. Good work so far :thumbup:

Using Hackintool to change the UsbConnector type (USB2, USB2, Internal, Type-C+SW, Type-C) needs an output to do anything. So either an SSDT-UIAC.aml or USBPorts.kext need to be created and installed to activate any changes.

No, there is no need to create 'dummy' configurations of USB-C to catch the actual port. It will appear or disappear in the list whether or not is is correctly 'typed'. As your USB-C port is not responding to the external SSD I think perhaps IORegistryExplorer should be used to identify it instead.

If you keep the IORegistryExplorer window open and perhaps scrolled down to the XHC tree, then insert your external SSD, the tree should jump open. Even if the device does not appear in the XHC section the tree should still move as it is allocated a place elsewhere. Then you just have to scroll up to find it. Hopefully in green, although not necessarily.

If absolutely nothing happens then ... we move on .

:)
 
Back
Top