Contribute
Register

The New Beginner's Guide to USB Port Configuration

Hello there.

Yes, you are correct, as you have only 15 XHC-ports (4x USB3 + 7x USB2 = 15) you do not need to disable any of them. However, it might be a good idea to check the "UsbConnector" type for each one so that macOS treats them appropriately. So for example, the 2x back-panel USB3 ports need their USB2 configuration set as "3" not "0". :thumbup:

For the ASMedia ports - onboard or on the PCI-e card - macOS treats them as the same external devices. As you would get if you plugged that PCI-e card into a real Mac Pro for instance. So they work, sometimes with the wrong power settings because there are no special drivers included, but for most jobs they are fine. I would leave them alone and use them only when you really need to.

:)

Wow sweet, thank you! So unless the USBConnector type is incorrect, I don’t need to create the patch/kext at all?

I’ll give them a check tonight :)
 
The "PR" ports are EHC and because the controllers are active they show up in IOReg. Previously you had ports PR01, PR11, PR12, and PR21 showing.
I really don't know why those PR ports are keep changing. Now there are 2, PR01 reported as IOUSBHostDevice, connector USB2 and PR12 with connector Internal. PR11 and PR21 are gone. EH01 is gone as well from Controllers section. Check the 2 screens from Mojave and now Catalina.

Hackintool.pngHackintoolCat.png

Remove GenericUSBXHCI.kext if you have it installed and rebuild your kextcaches. Then re-check. although it should not be used with Catalina, Mojave or even High Sierra.
I have one of the most clean hacks. I don't have any unneeded kexts. My kexts are below and all of them in Clover/kexts/other.
AppleALC
AtherosE2200Ethernet
Lilu
USBPorts
VirtualSMC
SMCProcessor
SMCSuperIO
WhateverGreen

The iPad problem is USB power-delivery, but that is way beoynd a beginner's guide. @RehabMan wrote the definitive article on how to configure this.
I did it with a script, it was working fine with Mojave, you can also check the last post of that definitive article, it is mine. :) Also, last posts indicate that the guide does not apply to Catalina as "AppleBusPowerController no longer attaches to EC anymore, instead it is loaded under IOResources".

I'm wondering that is it required to add SSDT-EC.aml to Clover config > ACPI > SortedOrder? I did not add it but it worked with Mojave. It is still working with my iPhone though. iPad is the issue. I have iPad Pro and regular iPad, both do the same repeated plugged in, unplugged behavior.

UsbConnector types do need to be set correctly or the ports being used will not deliver power correctly. So any physical EHC/USB2 ports should show as type "0", any physical XHC, USB3 ports should be type "3", and any internal headers should show as "255" or "0xff". A physical USB3 port can act as both USB3 or USB2 but still has the extra USB3 contacts in it.

I can't see the whole story without looking at the IOReg export file (not just screen-grabs etc), but basically you need to know which ports on your motherboard are USB3 and which USB2. Also, those two red USB ports under the PS/2 port, are they special clean ones for audio or are they for extra-power delivery? The MSI web-site doesn't tell me.
Hmm. Here's my config:

Rear:
HS01-SS01 (USB3)
HS02-SS02 (USB3)
HS03 (USB2 / Red Gaming Port 1) Reported as USB3 Connector in Hackintool
HS04 (USB2 / Red Gaming Port 2) Reported as USB3 Connector in Hackintool
HS05-SS03 (USB3 / USB Audio Power 1)
HS06-SS04 (USB3 / USB Audio Power 2)

Front:
HS07 (USB2 / Internal / Front 1) Reported as USB3 Connector in Hackintool
HS08 (USB2 / Internal / Front 2) Reported as USB3 Connector in Hackintool

Extra:
These are not connected to anything yet, as I said earlier I'll use one of them with PCIe WiFi and BT adapter when I buy one.
HS09 (USB2 / Internal)
HS10 (USB2 / Internal)

PR: These are both shown under EH01 and EH02 in IOReg
PR01 (Hackintool: USB2, IOReg: 0x0)
PR12 (Hackintool: Internal, IOReg: 0xff)

Below left (or first), we see all ports except PR ones detected as USB3 whether internal or external IOReg also shows all HS and SS ports under XHC and all of them have UsbConnector as 0x3. And below right (or second) I've changed the internal ones as internal, USB2 ones as USB2 even if they share the same physical ports with SS ports on the second screen. Is it correct now? PR01 detected as USB2 and it is active with IOUSBHostDevice Device name. Should I change this one as Internal too? or Should I delete these 2 PR ports? I already deleted all of them when creating USBPorts.kext file but some of them somehow resurrected. :)

HackintoolCat.pngHackintoolCat2.png
Btw, you said "any physical EHC/USB2 ports should show as type "0", any physical XHC, USB3 ports should be type "3"" but my USB2 ports (HSs) are under XHC, not EHC, then what should I set them, USB2 or leave them as USB3?

Thanks!
 
I really don't know why those PR ports are keep changing. Now there are 2, PR01 reported as IOUSBHostDevice, connector USB2 and PR12 with connector Internal. PR11 and PR21 are gone. EH01 is gone as well from Controllers section. Check the 2 screens from Mojave and now Catalina.

View attachment 448308View attachment 448309


I have one of the most clean hacks. I don't have any unneeded kexts. My kexts are below and all of them in Clover/kexts/other.
AppleALC
AtherosE2200Ethernet
Lilu
USBPorts
VirtualSMC
SMCProcessor
SMCSuperIO
WhateverGreen


I did it with a script, it was working fine with Mojave, you can also check the last post of that definitive article, it is mine. :) Also, last posts indicate that the guide does not apply to Catalina as "AppleBusPowerController no longer attaches to EC anymore, instead it is loaded under IOResources".

I'm wondering that is it required to add SSDT-EC.aml to Clover config > ACPI > SortedOrder? I did not add it but it worked with Mojave. It is still working with my iPhone though. iPad is the issue. I have iPad Pro and regular iPad, both do the same repeated plugged in, unplugged behavior.


Hmm. Here's my config:

Rear:
HS01-SS01 (USB3)
HS02-SS02 (USB3)
HS03 (USB2 / Red Gaming Port 1) Reported as USB3 Connector in Hackintool
HS04 (USB2 / Red Gaming Port 2) Reported as USB3 Connector in Hackintool
HS05-SS03 (USB3 / USB Audio Power 1)
HS06-SS04 (USB3 / USB Audio Power 2)

Front:
HS07 (USB2 / Internal / Front 1) Reported as USB3 Connector in Hackintool
HS08 (USB2 / Internal / Front 2) Reported as USB3 Connector in Hackintool

Extra:
These are not connected to anything yet, as I said earlier I'll use one of them with PCIe WiFi and BT adapter when I buy one.
HS09 (USB2 / Internal)
HS10 (USB2 / Internal)

PR: These are both shown under EH01 and EH02 in IOReg
PR01 (Hackintool: USB2, IOReg: 0x0)
PR12 (Hackintool: Internal, IOReg: 0xff)

Below left (or first), we see all ports except PR ones detected as USB3 whether internal or external IOReg also shows all HS and SS ports under XHC and all of them have UsbConnector as 0x3. And below right (or second) I've changed the internal ones as internal, USB2 ones as USB2 even if they share the same physical ports with SS ports on the second screen. Is it correct now? PR01 detected as USB2 and it is active with IOUSBHostDevice Device name. Should I change this one as Internal too? or Should I delete these 2 PR ports? I already deleted all of them when creating USBPorts.kext file but some of them somehow resurrected. :)

View attachment 448309View attachment 448313
Btw, you said "any physical EHC/USB2 ports should show as type "0", any physical XHC, USB3 ports should be type "3"" but my USB2 ports (HSs) are under XHC, not EHC, then what should I set them, USB2 or leave them as USB3?

Thanks!

Wow, there is a lot there to work through there - and to be honest it is way, way beyond a "Beginner's Guide" ...

Okay, without an IOReg export file I have no way of knowing what is happening. Certainly the port layout using USBPorts.kext and Clover should not change between Mojave and Catalina, unless it had been installed on the system-drive, which you say it hasn't.

Your H97 chipset has 2x EHCI controllers along with 1x XHCI, and because there are 8x USB2 ports available, you usually find 4x USB2 ports hanging off each of the two controllers, so EH01 = PR01, PR**, PR**, PR** and EH02 = PR01, PR**, PR**, PR**. Now depending on how MSI have configured them there may be other hubs attached. IOReg will show you that. That one EHC controller keeps disappearing points to an ACPI patch but I have no way of knowing what that may be from here.

Yes, I saw your post about power delivery. Sadly @RehabMan has not been back recently to update any of his posts, certainly beyond system-definition iMac19,1 and Mojave. The recommended ways to increase power delivery usually involve "_SB.USBX" , as I am sure you know. This can be added to SSDT-UIAC.aml, but doing this with USBPorts.kext is not straightfoward and so you could add an SSDT-USBX.aml to inject the properties in to ACPI.

UsbConnector types can be simplified to the number of contacts inside the USB socket. A USB2 port has 4 whereas a USB3 port has 9 (or 11) and a USB-C has 12/24. So a USB3 physical socket will be a type "3" even when in USB2 mode etc. I would suspect your Red USB2 ports are type "0". Sadly, when I check the MSI web-pages it doesn't let me see the Overview so I don't know what the "red" part means for gaming? Often these have either extra power delivery or they are specially "clean" for audio use.

:)
 
Wow, there is a lot there to work through there - and to be honest it is way, way beyond a "Beginner's Guide" ...

Okay, without an IOReg export file I have no way of knowing what is happening. Certainly the port layout using USBPorts.kext and Clover should not change between Mojave and Catalina, unless it had been installed on the system-drive, which you say it hasn't.

Your H97 chipset has 2x EHCI controllers along with 1x XHCI, and because there are 8x USB2 ports available, you usually find 4x USB2 ports hanging off each of the two controllers, so EH01 = PR01, PR**, PR**, PR** and EH02 = PR01, PR**, PR**, PR**. Now depending on how MSI have configured them there may be other hubs attached. IOReg will show you that. That one EHC controller keeps disappearing points to an ACPI patch but I have no way of knowing what that may be from here.

I don't think it's either complicated or there is a lot work here. Port layout isn't changed, I thought it is. It's just EH01 controller is disappeared and took its ports (PR11 and PR21) with itself. PR01 and PR12 that belong to EH02 are still with us. My ACPI patches are below. Do you think any one of them is responsible for the disappearance of EH01?

Patches:

EHC1 to EH01
EHC2 to EH02
XHCI to XHC
XHC1 to XHC
SAT0 to SATA

IOReg-EH.png


IOReg shows I still have EH01, it's just not showing up on Hackintool. Even if it's showing up, PR11 and PR21 are still missing, in IOReg too. Strange.

PRSituation.png


And this was with USBInjectAll kext. This kext was doing some diversion or injection that changes the port layout. And brings back EH01 which btw, I didn't have EH01 when I first installed Mojave too, it appeared with USBInjectAll kext.

Here from RehabMan's github:
This kext attempts to inject all ports for each controller, and for hubs as well. You can use this kext (temporarily) to enable all ports so you can determine which ports really need to be in the final injector. Only the (potential) hub on EH01.PRT1 and EH02.PRT1 are injected. Other hubs would require modifications. So far, I haven't seen internal hubs connected to other ports. The kext automatically determines the ports (and their addresses) based on the specifc USB controller chipsets.

EH01: 8-USB2 ports PR11-PR18.
EH02: 6-USB2 ports PR21-PR28.
EH01 hub: 8-USB2 ports HP11-HP18.
EH02 hub: 8-USB2 ports HP21-HP28.

Yes, I saw your post about power delivery. Sadly @RehabMan has not been back recently to update any of his posts, certainly beyond system-definition iMac19,1 and Mojave. The recommended ways to increase power delivery usually involve "_SB.USBX" , as I am sure you know. This can be added to SSDT-UIAC.aml, but doing this with USBPorts.kext is not straightfoward and so you could add an SSDT-USBX.aml to inject the properties in to ACPI.

I don't need USBX as I use iMac15,1 SMBIOS and it's in IOUSBHostFamily.

SSDT-EC.png

UsbConnector types can be simplified to the number of contacts inside the USB socket. A USB2 port has 4 whereas a USB3 port has 9 (or 11) and a USB-C has 12/24. So a USB3 physical socket will be a type "3" even when in USB2 mode etc. I would suspect your Red USB2 ports are type "0". Sadly, when I check the MSI web-pages it doesn't let me see the Overview so I don't know what the "red" part means for gaming? Often these have either extra power delivery or they are specially "clean" for audio use.

:)
Red USB2 ports are indeed type 0, in port discovery none of the USB3 ports shared the same places with red ports. Hackintool USB Port Patching document is also states that "HSxx ports connected to USB3 ports should be set to USB3".

Set each port to the appropriate Connector using the drop down list
  • USB ports with devices permanently attached (eg. M.2 Bluetooth card) should be set to “Internal”
  • HSxx ports connected to USB3 ports should be set to USB3
  • Internal HUBs are typically connected to ports PR11 and PR21 and therefore should be set to “Internal”
So, my previous Connector setting is not correct. Only the USB2 ports that do not share the same physical port with USB3 ports should be USB2 connector. So, the only Red ones, HS03 and HS04.

Now the question is, what about the other internal ones?
HS07-HS08 these are internal and connected to the front PC case ports. Internal? USB2? They are both USB2 and Internal. What should I set?


MSI-H97-GAMING-3-Motherboard.jpg


Red ports are for Gaming Device Ports, probably for gaming controllers.
USB Audio Power ports are for USB DACs, don't mind the picture, it's highlighted with red color, these ports are blue as other USB3 ports. Also these are the mismatch ones:
HS05-SS03 (USB3 / USB Audio Power 1)
HS06-SS04 (USB3 / USB Audio Power 2)

I'll be happy to hear what you think about these all and I've questions as bold text, if you can answer them, I'll appreciate it.

Thanks!
 
UsbConnector types can be simplified to the number of contacts inside the USB socket. A USB2 port has 4 whereas a USB3 port has 9 (or 11) and a USB-C has 12/24. So a USB3 physical socket will be a type "3" even when in USB2 mode etc. I would suspect your Red USB2 ports are type "0". Sadly, when I check the MSI web-pages it doesn't let me see the Overview so I don't know what the "red" part means for gaming? Often these have either extra power delivery or they are specially "clean" for audio use.

This actually leads into my last question before I start working on this tonight. I only use two internal USB ports, they’re both HS ports. They hard wired to an external front panel unit that I have and act as two USB 2 ports that I can use for thumb drives, etc. Would I label these as “255” for internal or “0” since they are behaving as external ports?


EDIT: so looking at my ports, and I realized that none of my Intel 3.0 ports are working, at all, it will only see USB 2.0 devices. Tried two different USB 3 devices and both received power but never showed up in macOS. This is puzzling!

46FD8EA1-46E1-4D8D-9C29-430AEF068DCB.png

EDIT 2: Figured I’d try applying the port limit removal patch for giggles to see if that helped. In the mean time I found I had a “Rename EC0 to EC” patch which I figured I’d try disabling before adding the other.

Now it won’t boot! Dragging out my MacBook to tenable the EC0 patch in Clover. I also have a “change _DCM to XDCM” patch and I’ve no idea what that does, googling isn’t giving me any conclusive reason. I need to do a better job of making notes of why I did things!

EDIT 3: okay, so I got it up again. Removed an ancient port limit removal patch, and add the two new ones for Catalina. Now the ports work! Now I just have to go through and sort them out. I wonder why they didn’t show up before I used the port limit removal patch?
BA78D9B1-3243-47B9-9634-3CD240BC4681.png
Also - what are AppleUSBXHCI Root Hub Simulator and IOUSBHostDevice? Is that normal for them to be there? Also strange that I have 22 ports instead of just 15! For instance it shows 6 SS ports; my motherboard has 4 Intel SS ports, and 2 ASMedia, so I’m assuming it’s including the ASMedia ports in the list... I’ll just disable them in BIOS then if they’re going to be a problem. Strange they’re showing up in the same XHC controller!

And lastly I’m going to remove my PCIe card while I set this up just so I don’t risk muddying with what mess I already have!

EDIT 4: last edit! Took out the PCIe card and as expected, no change in amount of ports in Hackintool. Still odd that I’m seeing 22 ports when
my motherboard only has 19 when you count the Intel and ASMedia chips together!
 
Last edited:
Red ports are for Gaming Device Ports, probably for gaming controllers.

In the case of my computer, I have two USB ports below my PS2 port as well, one of them is programmable with special software that lets you reprogram a keyboard that’s plugged into that port. I bet that’s what they’re for - tied with the right utility it probably allows you to modify the behavior of a keyboard and/or mouse...
 
I don't think it's either complicated or there is a lot work here.


Okay. I stand corrected.

To answer your bold text questions then:

No, those patches will not be causing your disappearing EH01 controller.

External ports connected to an onboard header are external. How they are configured though, does also depend on whether the header is a 9-pin or 19-pin. Internal ports connected to an onboard header are internal.
 
In the case of my computer, I have two USB ports below my PS2 port as well, one of them is programmable with special software that lets you reprogram a keyboard that’s plugged into that port. I bet that’s what they’re for - tied with the right utility it probably allows you to modify the behavior of a keyboard and/or mouse...

Hi.

Special USB ports for programming keyboards? That's a new one on me. Don't see what it would do but you live and learn ...

As for the number of ports you have:

1) You do not have an EHC1 to EH01, or EHC2 to EH02 controller rename in place.

2) The ASMedia controller does not show up in Hackintool, so those extra ports are probably caused by a kext. Do you have GenericUSBXHCI.kext installed?

3) Internal headers wired to external ports are configured as external (0 or 3 or 9 or 10). However how they are configured depends on whether they are 9-pin or 19-pin headers.

:)
 
Hi.

Special USB ports for programming keyboards? That's a new one on me. Don't see what it would do but you live and learn ...

As for the number of ports you have:

1) You do not have an EHC1 to EH01, or EHC2 to EH02 controller rename in place.

2) The ASMedia controller does not show up in Hackintool, so those extra ports are probably caused by a kext. Do you have GenericUSBXHCI.kext installed?

3) Internal headers wired to external ports are configured as external (0 or 3 or 9 or 10). However how they are configured depends on whether they are 9-pin or 19-pin headers.

:)

Here’s the description on mine for that port: “Fancy a free keyboard upgrade? That's what KeyBot gives you — instantly. Just plug your existing keyboard into the dedicated USB socket to activate the exclusive KeyBot microprocessor on the Maximus VII Gene. Use the easy-to-use utility to assign macros to function keys F1-F10, launch any application with a single press or control multimedia playback.”

1) Do I need such a rename?
2) I’ll check - EDIT: checked, I do not have that installed.
3) Thanks! That’s what I figured but wanted to be safe

Last oddity for tonight. Plugging in a 3.0 USB thumb drive into a port actually makes it show up twice in my list:
Screen Shot 2020-02-05 at 3.08.14 AM.png
 
Last edited:
Here’s the description on mine for that port: “Fancy a free keyboard upgrade? That's what KeyBot gives you — instantly. Just plug your existing keyboard into the dedicated USB socket to activate the exclusive KeyBot microprocessor on the Maximus VII Gene. Use the easy-to-use utility to assign macros to function keys F1-F10, launch any application with a single press or control multimedia playback.”

1) Do I need such a rename?
2) I’ll check - EDIT: checked, I do not have that installed.
3) Thanks! That’s what I figured but wanted to be safe

Well that depends. If you want to configure the USB2 ports then yes, you need the rename.

Your missing EHC2 (should be EH02) controller hints that something is going on with ACPI. An IOReg export would help diagnose that but I understand some people don't like to upload these.

Also, there is often a rogue kext, or some *.aml file in the EFI/CLOVER/ACPI/patched folder changing things, but again I have no way to check from here.

Sometimes trying to mend a broken configuration can lead to big confusion, as with the previous users USB problems. Personally I would start again with a clean slate. I would remove previous kext and *.aml patches. I would install USBInjectAll.kext in EFI/CLOVER/kexts/Other. I would add the correct port-limit removal patch to my config.plist. I would add the XHC1 to XHC_ rename to my config.plist. I would add the two EHCI renames, EHC1 to EH01 and EHC2 to EH02, to my config.plist. I would reboot and check with IORegistryExplorer to see what I then had available.

:)
 
Back
Top