Contribute
Register

A Beginner's Guide to Creating a Custom USB SSDT

Hi there.
...
Have you added or deleted any kexts before or after this?

:)

Yeah well,
If I'm not very clear I'm sorry.
Before going further, could you confirm me that, after applying the SSDT_USB.aml, should I keep
  • USBInjectAll.kext: YES
  • XHCI-unsupported.kext: YES? I think?
  • Clover USB Kext Paches: NO
  • XHC and EHCI rename patches: I don't know?
Thanks and sorry I'm slow learning this.
 
Yeah well,
If I'm not very clear I'm sorry.
Before going further, could you confirm me that, after applying the SSDT_USB.aml, should I keep
  • USBInjectAll.kext: YES
  • XHCI-unsupported.kext: YES? I think?
  • Clover USB Kext Paches: NO
  • XHC and EHCI rename patches: I don't know?
Thanks and sorry I'm slow learning this.

No need to apologise ...

EDIT:

Ah, I see from the other thread that you are posting to about this problem, that you have been experimenting with the codeless kext method (by the way @MacMan has an excellent thread about this topic if you want to learn more). That is not covered by this Beginner's Guide.

It certainly looks as though you have left the port-limit removal patches in place. To test your SSDT you need to either disable them (using Clover Configurator) or remove them. The first option is great for testing.

You have clearly covered this over there.
 
Last edited:
Thanks for the excellent guide UtterDisbelief, I was thinking I would be able to follow all this OK but seem to have stumbled early on.

I have successfully applied the Port Limit patch and seems like all by USB ports are working now, but I cannot find any references to XHC or EH01 or EH02 in IORegistryExplorer.

View attachment 409689

I have connected a Plantronics Headset to a USB port and found that in IORegistryExplorer as per the screenshot above, but for some reason I don't seem to have any XHC or similar entries.

I am using an ASUS Sabertooth X79 mainboard and have a fresh install of 10.14.5. I have also deliberately enabled all the USB ports in the BIOS for this exercise.

I wondered if anyone could point me in the right direction please?

Kind regards

Rob

Hi there,

Yes, as my colleague @Feartech explains, it's better just to scroll down about 3/4 of the way down to find the XHC section of the tree. This is because, as you can see, devices also show up elsewhere under ACPI or Host Resources etc. At this stage we are not concerned with these and the devices themselves, only the ports :thumbup:
 
Ah, I see from the other thread that you are posting to about this problem, that you have been experimenting with the codeless kext method (by the way @MacMan has an excellent thread about this topic if you want to learn more). That is not covered by this Beginner's Guide.
Hi @UtterDisbelief
Yes I also tried the Kext method, well it was more of a easy way because the Kext was already done and ready yo apply. But I still want to be able to create my own SSDT, since it's the method I understand the most (thanks to your guide!).

Now, my SSDT is in place and working.
As I understood, I did first a SSDT without the EHCI ports (4 USB2/3 ports HS09/SS05), but when I was using this SSDT, those ports was not usable. I should have misunderstood something somewhat.
So I did a second SSDT, including those ports, and now everything is smooth, all USB ports running at the right speed.

Here is this SSDT id anyone need it, for a GIGABYTE X99-UD4 (REV 1.0).

:thumbup: for your help!
 

Attachments

  • SSDT-USB-X99UD4.dsl
    3.8 KB · Views: 72
A test you could do...

Did some further analysis and A/B testing. Just writing this for info (might get slightly off topic though so I will open another thread in another forum if needed, but just want to conclude here)
1. Running system with SSDT or port-limit removal patch did not make any difference. The ports show up as they should in IORegistry and are operational on that level (devices shows up and un-mounting resources are reflected in IO-registry with either option).
2. Read up on Steinberg licenser issues and have found a part of the issues are related to the need for Synsopos to be controlled by Steinberg apps. This is reflected in the Automation part of Security&Privacy settings where apps are allowed to control other apps.
2a. I have Dorico associated to Synsopos and every now and then it works. However, I still getting indications that there may still be a glitch: When I start Dorico it sometimes starts Elements version rather than Pro and I suspect that this may be related to authorisation issues with elicenser during a part of the start up sequence. I also just got a plain elicenser error as Pro version did launch, possibly from a latter part of the launch process.
2b. Have not associated Cubase to Synsopos and get a lot of elicenser errors.

So, Synsopos is a part of the issue, but I think I can confirm that there is still a glitch, and your explanation relating to Hackintosh emulation seems relevant @UtterDisbelief .
 
UtterDisbelief, Thank you very much for detailed tutorial.

I did my DSDT_USB.aml (compiled and copied to /ACPI/patched) but no matter i do, it just not working.

USBInjectAll.kext installed, but i'm not sure if its also working. My XHC list in IOReg always stays the same (screenshot attached). With USB Limit patch i can see all the ports but my DSDT_USB.aml and/or USBInjectAll.kext has no effect at all.

Also, do i need XHCI-unsupported.kext for my 8086:A36D device? i've installed it via Hackintool, but in Extensions it always appear as Loaded:No. What could be wrong?

Could you please assist me here? :wave:

EDIT: It seems this method doesn't work with iMac19,2 definition. As long as i changed it to 19,1 everything appears to be working. Any ideas why its not working with iMac19,2?
 

Attachments

  • Screenshot 2019-06-12 at 02.59.53.png
    Screenshot 2019-06-12 at 02.59.53.png
    217.7 KB · Views: 40
  • SSDT-USB-Template.dsl
    3.7 KB · Views: 66
Last edited:
UtterDisbelief, Thank you very much for detailed tutorial.

I did my DSDT_USB.aml (compiled and copied to /ACPI/patched) but no matter i do, it just not working.

USBInjectAll.kext installed, but i'm not sure if its also working. My XHC list in IOReg always stays the same (screenshot attached). With USB Limit patch i can see all the ports but my DSDT_USB.aml and/or USBInjectAll.kext has no effect at all.

Also, do i need XHCI-unsupported.kext for my 8086:A36D device? i've installed it via Hackintool, but in Extensions it always appear as Loaded:No. What could be wrong?

Could you please assist me here? :wave:

EDIT: It seems this method doesn't work with iMac19,2 definition. As long as i changed it to 19,1 everything appears to be working. Any ideas why its not working with iMac19,2?

Hi there.

Hmmm...

Okay,

1) Double-check your SS port addresses. I have a feeling they will be different to those showing in your SSDT template. For example SS01 = 0x11 BUT I think it may be lower because the B360 chipset only has 12 ports rather than the 14 of the full 300-series. Maybe "0x0f" ? Check IORegistryExplorer et. If that is the case then all your SS ports need rejigging :thumbup:

2) Check you have the latest version of USBInjectAll.kext. You probably have, but it is worth asking (November 2018).

3) Your screen grab shows 15-ports and that they have actually been configured, but obviously not as per the template. Did you remove the port-limit removal patch once the template was compiled and put in the "patched" folder?

4) The XHCI-unsupported.kext should not be needed with your motherboard. However @RehabMan states that it does no harm to leave it in place. Given your problems though try removing it to check.

As always when you are changing system kexts and configuration, back-up all you can and have a current UniBeast installer drive handy if anything goes wrong.:thumbup:

:)
 
Hi there.

Hmmm...

Okay,

1) Double-check your SS port addresses. I have a feeling they will be different to those showing in your SSDT template. For example SS01 = 0x11 BUT I think it may be lower because the B360 chipset only has 12 ports rather than the 14 of the full 300-series. Maybe "0x0f" ? Check IORegistryExplorer et. If that is the case then all your SS ports need rejigging :thumbup:

2) Check you have the latest version of USBInjectAll.kext. You probably have, but it is worth asking (November 2018).

3) Your screen grab shows 15-ports and that they have actually been configured, but obviously not as per the template. Did you remove the port-limit removal patch once the template was compiled and put in the "patched" folder?

4) The XHCI-unsupported.kext should not be needed with your motherboard. However @RehabMan states that it does no harm to leave it in place. Given your problems though try removing it to check.

As always when you are changing system kexts and configuration, back-up all you can and have a current UniBeast installer drive handy if anything goes wrong.:thumbup:

:)

Thank you for reply! My SSDT is fine, I've found a problem. It was iMac 19,2 definition. Its just refuses to load my SSDT on 19,2 but works perfectly on 19,1...I found other users also can't get it to work on 19,2. Is this a Clover bug or just MacOS doing something differently on 19,2 ?
 
Thank you for reply! My SSDT is fine, I've found a problem. It was iMac 19,2 definition. Its just refuses to load my SSDT on 19,2 but works perfectly on 19,1...I found other users also can't get it to work on 19,2. Is this a Clover bug or just MacOS doing something differently on 19,2 ?

Well that is interesting to learn, thank you :thumbup: I am still surprised about the port addresses being correct though...

I do not think your problem is Clover.

I am guessing that MSI uses an add-on chipset for the Gen 2 USB ports the motherboard has. Sadly their website doesn't seem to tell me which one... The kexts that help us with these third-party chipsets have not been updated recently. These should appear in the PR section of your IORegEx tree.

However, as you say, maybe the system-definition can get 'confused'.

iMac19,1 is the definition which covers i9 9900k whereas iMac19,2 only covers up to i7 8700.

I will do research into this.

:)
 
Well that is interesting to learn, thank you :thumbup: I am still surprised about the port addresses being correct though...

I do not think your problem is Clover.

I am guessing that MSI uses an add-on chipset for the Gen 2 USB ports the motherboard has. Sadly their website doesn't seem to tell me which one... The kexts that help us with these third-party chipsets have not been updated recently. These should appear in the PR section of your IORegEx tree.

However, as you say, maybe the system-definition can get 'confused'.

iMac19,1 is the definition which covers i9 9900k whereas iMac19,2 only covers up to i7 8700. These are different CPUs and perhaps are not 100% compatible with any other 300-series chipset than the z390 despite us being told differently.

I will do research into this.

:)
this may help in showing supported models:

mergeModelData "iMac19,1" is the last supported definition
 
Back
Top