Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Joined
Aug 19, 2015
Messages
19
Mac
Classic Mac
Mobile Phone
Thanks @UtterDisbelief. Yes I confirm your theory, I come the same conclusion, as I uninstalled the pci-e type-c card, and the PRT1 is still there. According to the Hackintool documentation, it should be a hub, that would explains why the duplicate entry.

I made further tests and I can confirm the following:

- USB2.0 is up, but if I create and install the SSDT for it with Hackintool (the tool creates for me SSDT-UIAC.aml and SSDT-EC.aml, not sure why), then I remove the injectall kext and restart, the hub stop to works. I do that as I understood the kext should be removed if a valid SSDT is installed, please correct me if I'm wrong.

- USB3.0 is not loaded, despite having it enabled on BIOS (screenshot), no matter what kind of kext I inject or if I disable the legacy support.

- The type-c controller is not recognized at all, probably for the same reason the 3.0 is not

- I definitely didn't get if I should inject also USBPorts.kext.
 

Attachments

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
2,843
Motherboard
Gigabyte Z370M D3H
CPU
i3-8350K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Thanks @UtterDisbelief. Yes I confirm your theory, I come the same conclusion, as I uninstalled the pci-e type-c card, and the PRT1 is still there. According to the Hackintool documentation, it should be a hub, that would explains why the duplicate entry.

I made further tests and I can confirm the following:

- USB2.0 is up, but if I create and install the SSDT for it with Hackintool (the tool creates for me SSDT-UIAC.aml and SSDT-EC.aml, not sure why), then I remove the injectall kext and restart, the hub stop to works. I do that as I understood the kext should be removed if a valid SSDT is installed, please correct me if I'm wrong.

- USB3.0 is not loaded, despite having it enabled on BIOS (screenshot), no matter what kind of kext I inject or if I disable the legacy support.

- The type-c controller is not recognized at all, probably for the same reason the 3.0 is not

- I definitely didn't get if I should inject also USBPorts.kext.
The BIOS looks fine.

No, with Hackintool you still need USBInjectAll.kext when using the SSDT-UIAC.aml and SSDT-EC.aml it provides. Think of the SSDTs as configuration files for USBInjectAll. The SSDT-EC is an embedded controller that is sometimes needed with certain motherboards. If you want to remove USBInjectAll then you should use the USBPorts.kext instead. Then you can remove it and the SSDTs too.

To help with the missing USB 3.0 ports, we still need to know which kexts you have installed in EFI/CLOVER/kexts/Other and L/E.

Also, please bear in mind this isn't a support thread for Hackintool itself. @headkaze is the author who can give you deeper insights. I can only support the methods in this thread :thumbup:
 
Joined
Aug 19, 2015
Messages
19
Mac
Classic Mac
Mobile Phone
Also, please bear in mind this isn't a support thread for Hackintool itself. @headkaze is the author who can give you deeper insights. I can only support the methods in this thread :thumbup:
Thanks @UtterDisbelief, I did read in past posts you don't give support for it, in fact I completely forgot USBPorts.kext was a kext produced by Hackintool. I'll definitely contact him, as I'll have the USB3 working.

So basically the kext injected are almost the same I previously uploaded in EFI folder, I'm just trying to add and remove someone for tests. For example I just removed the GenericUSB in favour of the ASMedia CalDigit* as suggested here, no luck again.

I also tried to install them, (not along, but one by one, in different tests), in S/L/E. No way to have the USB3.0 loaded.
Apart these tests, I didn't installed any kext on system, as I'm trying to have a reusable usb for future installations. I'm attaching anyway the status of the system kext.

Thanks a lot again for your help, I really appreciate it.
 

Attachments

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
2,843
Motherboard
Gigabyte Z370M D3H
CPU
i3-8350K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Thanks @UtterDisbelief, I did read in past posts you don't give support for it, in fact I completely forgot USBPorts.kext was a kext produced by Hackintool. I'll definitely contact him, as I'll have the USB3 working.

So basically the kext injected are almost the same I previously uploaded in EFI folder, I'm just trying to add and remove someone for tests. For example I just removed the GenericUSB in favour of the ASMedia CalDigit* as suggested here, no luck again.

I also tried to install them, (not along, but one by one, in different tests), in S/L/E. No way to have the USB3.0 loaded.
Apart these tests, I didn't installed any kext on system, as I'm trying to have a reusable usb for future installations. I'm attaching anyway the status of the system kext.

Thanks a lot again for your help, I really appreciate it.
Thanks.

Sorry, yes you had sent the EFI folder before, it was just the kext-lists I needed to see. My mistake :thumbup:

Okay. Remove the CalDigi USB kexts. I can understand why they didn't work ... There is a potential problem using these, or GenericUSBXHIC, and that is - Mojave. These kexts are old and, sadly, often do not work with the latest macOSs. Unfortunately the latter is no longer being updated. This might mean USB 3.0 on this board is touch and go.

A couple of points to note:

Looking in your ACPI 'patched' folder I see 8x *.aml files. Are these something you specifically need for your X79 ?

You do have USBInjectAll.kext installed in the EFI folder, BUT don't have the SSDT-UIAC.aml installed.

So in conclusion, you would expect to see the X79 chipset USB 2.0 ports, but that is all. Perhaps reinstate your port-limit removal patches as they have been disabled. I know you only have 12x USB 2.0 ports, but it might help.

:)
 
Last edited:
Joined
Aug 19, 2015
Messages
19
Mac
Classic Mac
Mobile Phone
Thanks.



Okay. Remove the CalDigi USB kexts. I can understand why they didn't work ... There is a potential problem using these, or GenericUSBXHIC, and that is - Mojave. These kexts are old and, sadly, often do not work with the latest macOSs. Unfortunately they are no longer being updated. This might mean USB 3.0 on this board is touch and go.

Looking in your ACPI 'patched' folder I see 8x *.aml files. Are these something you specifically need for your X79 ?

What I can see:

You do have USBInjectAll.kext installed in the EFI folder, BUT don't have the SSDT-UIAC.aml installed.

So in conclusion, you would expect to see the X79 chipset USB 2.0 ports, but that is all. Perhaps reinstate your port-limit removal patches as they have been disabled. I know you only have 12x USB 2.0 ports, but it might help.

:)
Many thanks @UtterDisbelief ,
I found those *aml files in this old guide, I'm aiming to replace them. I actually use to overwrite it with the one produced with my Hackintool SSDT-UIAC.aml at any test I do with Hackintool. But the one I created with Hackintool doesn't work, as only the first USB2 hub is discovered with that. Apparently so far, those *aml are the only way to have at least the two UBS2.0 hubs working (not the USB3).
This guide ships an additional (*9.aml file) for my speedstep processor, the 4930k. I'm quite confused, as I can't understand how a different processor would needs a different .aml definition, and how to customize those parameters in my own *aml build. I thought the .aml definition was needed just for usb injecting, so that is really confusing me even more.

What I can understand, is why the controllers are not active. I expect to have all the three controllers active as I have the injectall text, but that doesn't happen. Maybe I'm wrong in understanding how it works though. How otherwise I would create the .aml, without having the controllers up, and being able to discover the ports? Is my assumption correct?

Also no trace of the type-c@pci, that is actually an ASMedia Chipset ASM1142 and ASM1543, according to the Amazon product description. I don't know what should bring up that controller, maybe the GenericUSBXHIC kext?

I tried removing the GenericUSBXHIC and CalDigi kext as suggested, and re-enabled the patches, no changes unfortunately.
 
Last edited:

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
2,843
Motherboard
Gigabyte Z370M D3H
CPU
i3-8350K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Many thanks @UtterDisbelief ,
I found those *aml files in this old guide, I'm aiming to replace them. I actually use to overwrite it with the one produced with my Hackintool SSDT-UIAC.aml at any test I do with Hackintool. But the one I created with Hackintool doesn't work, as only the first USB2 hub is discovered with that. Apparently so far, those *aml are the only way to have at least the two UBS2.0 hubs working (not the USB3).
This guide ships an additional (*9.aml file) for my speedstep processor, the 4930k. I'm quite confused, as I can't understand how a different processor would needs a different .aml definition, and how to customize those parameters in my own *aml build. I thought the .aml definition was needed just for usb injecting, so that is really confusing me even more.

What I can understand, is why the controllers are not active. I expect to have all the three controllers active as I have the injectall text, but that doesn't happen. Maybe I'm wrong in understanding how it works though. How otherwise I would create the .aml, without having the controllers up, and being able to discover the ports? Is my assumption correct?

Also no trace of the type-c@pci, that is actually an ASMedia Chipset ASM1142 and ASM1543, according to the Amazon product description. I don't know what should bring up that controller, maybe the GenericUSBXHIC kext?

I tried removing the GenericUSBXHIC and CalDigi kext as suggested, and re-enabled the patches, no changes unfortunately.
Hi there. I'll try to clear away the confusion ...

Those ACPI patches you are using were from a 2014 build. Clover and Mojave have moved on since then. I would experiment removing them, one at a time until something breaks. You have the "plug-ins" CPU option enabled in your config.plist and that will help with your 4930k. Keep a UniBeast installer boot drive handy just in case ...

To be clear - USBInjectAll is used to open-up only your X79 chipset ports - not the ASMedia ones. When in place you then use the port-limit removal patches to make them visible in IORegistryExplorer. Once you have run through the port discovery process and created an SSDT-UIAC.aml, you put that file in the 'patched' folder and disable/remove the port-limit patches.

Check you are using the correct port-limit removal patches for your version of Mojave - there are different ones for each point upgrade.

You can see in the IOReg export that the PR* ports are attached to the EHC controllers by USBInjectAll, but the majority are not showing in the tree. This points to UIA identifying them all but something else is stopping them working.

As an idea, have you tried any other system-definitions, other than Mac Pro 6,1?

ASMedia ports are controlled by the ASM1142. Period. With earlier versions of macOS, GenericUSBXHCI.kext would make these ports appear in the IORegistryExplorer tree, but they were still not configurable. Nowadays the kext does not work reliably as it hasn't been updated.

Finally, you could double-check your USB hardware is actually fully functioning, and not faulty, by booting into Windows and testing.

:)
 
Last edited:
Joined
May 14, 2016
Messages
23
Motherboard
GA-Z97-HD3
CPU
i7-4790K
Graphics
RX 580
Mac
iMac, MacBook Pro, Mac Pro
Classic Mac
128K, 20th Anniv. Mac
Hey all! Noob here trying to create my first SSDT. My problem is that I don't see any HS/SS items at all. Everything is HP. Here is an example entry from IORegistryExplorer (notice the HP21):

Code:
AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/EH02@1A/EH02@1a000000/PR21@1a100000/IOUSBHostDevice@1a100000/AppleUSB20InternalHub@1a100000/HP21@1a110000
So how do I input this into the SSDT-USB-Template?
 
Joined
Aug 19, 2015
Messages
19
Mac
Classic Mac
Mobile Phone
Hi there. I'll try to clear away the confusion ...

Those ACPI patches you are using were from a 2014 build. Clover and Mojave have moved on since then. I would experiment removing them, one at a time until something breaks. You have the "plug-ins" CPU option enabled in your config.plist and that will help with your 4930k. Keep a UniBeast installer boot drive handy just in case ...

To be clear - USBInjectAll is used to open-up only your X79 chipset ports - not the ASMedia ones. When in place you then use the port-limit removal patches to make them visible in IORegistryExplorer. Once you have run through the port discovery process and created an SSDT-UIAC.aml, you put that file in the 'patched' folder and disable/remove the port-limit patches.

Check you are using the correct port-limit removal patches for your version of Mojave - there are different ones for each point upgrade.

You can see in the IOReg export that the PR* ports are attached to the EHC controllers by USBInjectAll, but the majority are not showing in the tree. This points to UIA identifying them all but something else is stopping them working.

As an idea, have you tried any other system-definitions, other than Mac Pro 6,1?

ASMedia ports are controlled by the ASM1142. Period. With earlier versions of macOS, GenericUSBXHCI.kext would make these ports appear in the IORegistryExplorer tree, but they were still not configurable. Nowadays the kext does not work reliably as it hasn't been updated.

Finally, you could double-check your USB hardware is actually fully functioning, and not faulty, by booting into Windows and testing.

:)
Many thanks again for your help UtterDisbelief,
So yes, they are old, and that is why I'm trying to build my custom SSDT, but right now those are the only SSDTs that are in some way able to bring up the two USB2.0 controllers. If I remove them, or I boot with the SSDT I created, I lose one of the controllers, the EH02, as screenshot attached.

Regarding the port limit patch, I enabled it as suggested in this thread, but in the fourth page somebody is actually suggesting that it would not work on 10.14.6 that I'm running. I don't know how to verify the patches, but I didn't see any improvement after applying it.
 

Attachments

UtterDisbelief

Moderator
Joined
Feb 13, 2012
Messages
2,843
Motherboard
Gigabyte Z370M D3H
CPU
i3-8350K
Graphics
RX 560
Mac
iMac, Mac mini
Classic Mac
eMac, iBook
Mobile Phone
iOS
Many thanks again for your help UtterDisbelief,
So yes, they are old, and that is why I'm trying to build my custom SSDT, but right now those are the only SSDTs that are in some way able to bring up the two USB2.0 controllers. If I remove them, or I boot with the SSDT I created, I lose one of the controllers, the EH02, as screenshot attached.

Regarding the port limit patch, I enabled it as suggested in this thread, but in the fourth page somebody is actually suggesting that it would not work on 10.14.6 that I'm running. I don't know how to verify the patches, but I didn't see any improvement after applying it.
Fair enough. I don't know enough about what those miscellaneous patches do to know for sure. I'm only here for the USB ;)

The fact is though, that both your EHC controllers should appear simply because they are there, physically. IORegistryExplorer is your friend here. After you have the renames in place, check the output again. You should see them both.

For homework, I've read through a few of the other X79 User Builds we have on this site and no-one has mentioned a missing controller. If removing one of those other SSDT patches makes one EHC disappear, that's plain odd. I've only seen your Rampage.ioreg from before the EHCI patches were corrected when they still showed as EUSB and USBE etc. Check the output now.

As a thought: I haven't heard if the Supplemental Updates to 10.14.6 broke the PLR-Patches. That might be what they mean in the thread.

Remember, if you create a proper SSDT-UIAC then you don't need the PLR-Patches anyway, the only difficulty is configuring "blind" but I guess you have already done the port-discovery anyway :thumbup:
 
Last edited:
Joined
Nov 1, 2016
Messages
19
Motherboard
Z170x Gigabyte Gaming 5
CPU
i7-6700K
Graphics
R9 280X
Mac
MacBook Pro
Hey all! Noob here trying to create my first SSDT. My problem is that I don't see any HS/SS items at all. Everything is HP. Here is an example entry from IORegistryExplorer (notice the HP21):

Code:
AppleACPIPlatformExpert/PCI0@0/AppleACPIPCI/EH02@1A/EH02@1a000000/PR21@1a100000/IOUSBHostDevice@1a100000/AppleUSB20InternalHub@1a100000/HP21@1a110000
So how do I input this into the SSDT-USB-Template?
Holy Cow Hey Caleb :D So funny running to you here..
This may be a case of the blind leading the blind, but I used this guide to get my SSDT running (https://www.tonymacx86.com/threads/guide-creating-a-custom-ssdt-for-usbinjectall-kext.211311/)
On that page you can find this url linked (https://www.tonymacx86.com/threads/guide-10-11-usb-changes-and-solutions.173616/) there is a guide for each class of cpu/mobo, with a list of requirements for that class of chip/mobo. I found it helpful.

I do have a Skylake 100 series board though so I don't have to deal with the EHCI->EH. With the guide I could finally figure it out. I guess time will tell if its truly correct :D.

Enjoy your channel as always.
 
Last edited:
Top