Contribute
Register

The New Beginner's Guide to USB Port Configuration

I am not sure what you mean by 'move to'

The reason there's a Hackintool menu option for switchable/non-switchable Type-C ports, and two different UsbConnector types etc.

:)
 
The reason there's a Hackintool menu option for switchable/non-switchable Type-C ports,
I tried both options and looked to see if the port enumerated differently depending on orientation. I did not see another port number enumerate, so concluded that the port must have an 'internal swicth' so picke 9 as the USB-C Type ie TypeC+Sw.

I did see the same port number in both orientations, with the proviso that not always did the port come up. This was the 'flakyness' I was seeing with USB-C. It seems much more robust with it configured as HS/SS for the hub behaviour.

Anyway. useful observations. But without delving deeper into USB/XHC specs I don't think I have a root cause type answer. It's working now well enough. And all my USB3 ports are working at 5Gbps.

Thanks again for 'The New Easy' and @headkaze for the Hackertool. You have made what has been simple, but detailed process painfree as this technical task can be (and @RehabMan of course for getting the hard part done!) :wave::clap:
 
At first thank you so much for this guide. Since yesterday I've been trying to get through it but after a lot of trial and error and some problems of comprehension I feel like I won't get anywhere without some advice.

MSI Z370m Mortar
1080 TI
i7 8700k
16 GB DDR4
10.13.6 High Sierra (including latest security update 2020-002)

Clover and all kexts up to date.
Installed USBInjectAll to clover/kexts/other via clover configurator (also latest version via Kext Updater).
Applied USB 10.13.6+ by PMHeart via dropdown menu.
Enabled FixUSB via Acpi settings.
As mentioned in various other guides, change XHC1 to XHC, XHCI to XHC, EHC1 to EH01 and EHC2 to EH02 are enabled too (not sure if I need them, but I've already tried with and without them, no difference).

The port limit patch seems to work since Hackintool is listing all of my ports instead of only 15 (it's 26 entries).

The thing that confuses me occurs during Step 2) Check what USB ports you have
no matter which port I plug my USB devices into and whether it's a USB 2 or 3 device, it's ALWAYS one of the HS ports that's responding in IOReg / Hackintool. It's never SS.
Plugging in my USB 2 mouse (I don't have a USB 2 flashdrive, hope that's okay) or my USB 3 flashdrive doesn't make a difference.

My only thought on this was something other guides mention but yours doesn't: exclude the port types via clover arguments to test HS/SS one after another. Could this be the reason? Is it always like that, as long as you don't exclude SS, Hackintool will always highlight HS entries regardless which ports are being used? However, I added uia_exclude=HS05 just for testing but HS05 is still up and running (still listed in Hackintool and keyboard working).

Is that normal and I'm supposed to proceed or is my system just a mess and I need to fix things first (attached some files to give you an insight)?
 

Attachments

  • Screen Shot 2020-04-12 at 09.19.46.png
    Screen Shot 2020-04-12 at 09.19.46.png
    665.3 KB · Views: 48
  • Screen Shot 2020-04-12 at 09.20.37.png
    Screen Shot 2020-04-12 at 09.20.37.png
    91.5 KB · Views: 65
  • config.plist
    10 KB · Views: 70
At first thank you so much for this guide. Since yesterday I've been trying to get through it but after a lot of trial and error and some problems of comprehension I feel like I won't get anywhere without some advice.

MSI Z370m Mortar
1080 TI
i7 8700k
16 GB DDR4
10.13.6 High Sierra (including latest security update 2020-002)

Clover and all kexts up to date.
Installed USBInjectAll to clover/kexts/other via clover configurator (also latest version via Kext Updater).
Applied USB 10.13.6+ by PMHeart via dropdown menu.
Enabled FixUSB via Acpi settings.
As mentioned in various other guides, change XHC1 to XHC, XHCI to XHC, EHC1 to EH01 and EHC2 to EH02 are enabled too (not sure if I need them, but I've already tried with and without them, no difference).

The port limit patch seems to work since Hackintool is listing all of my ports instead of only 15 (it's 26 entries).

The thing that confuses me occurs during Step 2) Check what USB ports you have
no matter which port I plug my USB devices into and whether it's a USB 2 or 3 device, it's ALWAYS one of the HS ports that's responding in IOReg / Hackintool. It's never SS.
Plugging in my USB 2 mouse (I don't have a USB 2 flashdrive, hope that's okay) or my USB 3 flashdrive doesn't make a difference.

My only thought on this was something other guides mention but yours doesn't: exclude the port types via clover arguments to test HS/SS one after another. Could this be the reason? Is it always like that, as long as you don't exclude SS, Hackintool will always highlight HS entries regardless which ports are being used? However, I added uia_exclude=HS05 just for testing but HS05 is still up and running (still listed in Hackintool and keyboard working).

Is that normal and I'm supposed to proceed or is my system just a mess and I need to fix things first (attached some files to give you an insight)?


Hi there,

Okay, a couple of things to note:

1) At this point, as far as I can see, there has been no configuration work done. Just the activating of all ports using USBInjectAll.kext and a PLRP ?

2) Tidy-up your kext directory. You do not need the XHCI-300 injector kext. Remove "hda-verb', remove "Whatevergreen.kext.dSYM". These are not necessarily cauding any problems but good housekeeping.

What to do?

1) Check your BIOS setting for XHCI-Hand-off.

2) Correct you do not need the EHCI renames in your config.plist because the Z370 does not have an ECHI controller.

3) Because you have a Z370 chipset, configure the ports as you need them, "blind". I know you can't double-check by inserting and removing a USB flash drive, but assume that, for example, the HS01 port is the same physical port as SS01.

4) Mark and delete the unwanted ports as per the main guide to get down to the 15-limit. Export the configuration files.

5) Method 1 - Remove the USBInjectAll.kext, disable the PLRP, place USBPorts.kext in EFI/CLOVER/kexts/Other. Reboot.

Check the result with IORegistryExplorer. Upload an export file if the problem persists.

6) Method 2 - As an alternative keep USBInjectAll.kext and, instead, place SSDT-UIAC.aml and SSDT-EC.aml in the EFI/CLOVER/ACPI/patched folder, and reboot etc.

Let me know if anything changes :thumbup:
 
@UtterDisbelief
That's a lot, thank you!

Yes, activating the ports was all I did until then.
I got rid of those kexts and also checked on XHCI Hand off (was already enabled).
The EHCI patches are gone now.
So far so good.

I followed your steps until 5) Method 1 and got through without any issues, but I think I haven't achieved much.
The ports are functional just like before. I was always able to use them.
My reason to do that port mapping thing is my utterly bad bluetooth performance (which is still the case now). I keep getting occasional mouse and audio lags from time to time, sometimes even total disconnections. This is completely unrelated to distance, which BT devices I'm using (i.e. I have multiple BT speakers/mice) and system utilization (also happens when I'm not doing much). However none of these issues occur when I'm on Windows.

(I also can't charge my iPad over USB, but that's a secondary thing)

When searching for Hackintosh BT issues, USB mapping is always the thing people talk about, so I thought I might be able to fix it.

I would now start with method 2 but I'm only getting USBPorts.kext, SSDT-UIAC.aml and SSDT-UIAC.dsl when I export. There is no SSDT-ED.aml, is that a mistake?
 

Attachments

  • SSDT-UIAC.aml
    810 bytes · Views: 56
  • SSDT-UIAC.dsl
    3.7 KB · Views: 38
  • USBPorts.kext.zip
    1.3 KB · Views: 50
@UtterDisbelief
That's a lot, thank you!

Yes, activating the ports was all I did until then.
I got rid of those kexts and also checked on XHCI Hand off (was already enabled).
The EHCI patches are gone now.
So far so good.

I followed your steps until 5) Method 1 and got through without any issues, but I think I haven't achieved much.
The ports are functional just like before. I was always able to use them.
My reason to do that port mapping thing is my utterly bad bluetooth performance (which is still the case now). I keep getting occasional mouse and audio lags from time to time, sometimes even total disconnections. This is completely unrelated to distance, which BT devices I'm using (i.e. I have multiple BT speakers/mice) and system utilization (also happens when I'm not doing much). However none of these issues occur when I'm on Windows.

(I also can't charge my iPad over USB, but that's a secondary thing)

When searching for Hackintosh BT issues, USB mapping is always the thing people talk about, so I thought I might be able to fix it.

I would now start with method 2 but I'm only getting USBPorts.kext, SSDT-UIAC.aml and SSDT-UIAC.dsl when I export. There is no SSDT-ED.aml, is that a mistake?

No, not a mistake. Hackintool does some internal checking and if your system does not need an embedded controller (SSDT-EC.aml) then it doesn't produce one. No worries.

However, to get your iPad charging you need to modify power output via USB. Usually that is done by a combination of SSDT-EC.aml AND SSDT-USBX aml.

Ensure you are using the latest version on of Hackintool. The dev updates it regularly :thumbup:

As for why your USB ports are still not behaving as they should, I don't have enough info to go on. Maybe consider uploading an export file from IORegistryExplorer etc.

What type of Bluetooth adapter are you using? It's attached to HS03, I can see that, and marked as Internal...

:)
 
@UtterDisbelief
It's BCM94352Z with an M.2 E/A+E adapter, I'm hoping that card wasn't a bad choice.

And here's a copy of my IORegistryExplorer, can you open that?

Thanks again for your effort!
 

Attachments

  • iMac.ioreg
    3.6 MB · Views: 69
@UtterDisbelief
It's BCM94352Z with an M.2 E/A+E adapter, I'm hoping that card wasn't a bad choice.

And here's a copy of my IORegistryExplorer, can you open that?

Thanks again for your effort!


Hello,

Thanks for the IOReg export. It looks like everything is actually working fine :thumbup:

XHC.png

I would not bother with the USR ports. There's no reason for you to configure them. Maybe consider other ports you might find useful.

HS05 is still there, as you say. There must be an error in the *.aml or kext to cause that. Perhaps a comma or a missed } etc., otherwise I can't see why it is not being disabled. For that I guess we'd need to check the *.dsl template etc.

The Broadcom bluetooth chip you have is a standard one used by macOS, however you might need to use the BrcmPatchRAM kexts created by @RehabMan to update the firmware. Take a look through his guide here for how to use them and what they do. He specifically mentions the BCM94352Z down near the bottom of the article. The Download is here.

:)
 
Hello,

Thanks for the IOReg export. It looks like everything is actually working fine :thumbup:

I would not bother with the USR ports. There's no reason for you to configure them. Maybe consider other ports you might find useful.

HS05 is still there, as you say. There must be an error in the *.aml or kext to cause that. Perhaps a comma or a missed } etc., otherwise I can't see why it is not being disabled. For that I guess we'd need to check the *.dsl template etc.

The Broadcom bluetooth chip you have is a standard one used by macOS, however you might need to use the BrcmPatchRAM kexts created by @RehabMan to update the firmware. Take a look through his guide here for how to use them and what they do. He specifically mentions the BCM94352Z down near the bottom of the article. The Download is here.

:)

May also need Bluetooth injector kext, with Ram3 patch for Catalina.
 

Attachments

  • BrcmBluetoothInjector.kext.zip
    3.5 KB · Views: 45
Gotta admit, when it comes to configuration I'm not always the sharpest knife in the drawer, and it often takes me reading an article 10-15 times before it takes.

However, this new guide only took me about six reads before everything began to make sense.

So this afternoon, using a whole bunch of USB 2 thumb drives and a USB 3 backup drive, I finally mapped out everything using Hackintool, saved the file, substituted it for USBInjectAll in my Other folder, and deactivated the patches in Clover config. One reboot later, all my ports are working properly.

Thank you so much for this very understandable guide.
 
Back
Top