Contribute
Register

The New Beginner's Guide to USB Port Configuration

SMBIOS = iMac19,1.
USBPorts.kext = iMac18,3.

thank you!! this was it - knew it had to be something simple.

it is interesting that the newly generate file i made did not work - Thinking about it - since kext wasn't loading, its odd to me that hackintool even showed the USB3 ports that weren't working - when i removed USBPorts.kext hackintool only showed 15 ports (only 1 usb3 port - same as IORegistryExplorer), but when i was working on this, hackintool showed 6 usb3 ports (again interesting that there are 8 and 2 i removed from USBPorts.kext), so i tried removing the usb2 ports that are not in the USBPorts.kext that i created (and wasn't loading due to being 18,3), and then exported a new USBPorts.kext from Hackintool and that one did not work. I can't find this one now as i overwrote it to the backup now.. but i would think hackintool would have exported it with the proper 19,1 ...

just tested this again and checked and hackintool does output a correct file - however i am running system on the fixed USBPorts.kext now... only thing i can think of is having the wrong one in clover was somehow making hackintool export the wrong 18,3.

now to check wife's computer

thanks to all who looked in to this!
 
I have all the USB ports working, but all USB 2 except 1 port work USB 3, I have exports USBports.kext and followed the steps but didn't work, how to change detected USB 2 ports to USB 3.
can you advise

I am running macOS Monterey 12.3.1, using opencore
 

Attachments

  • Screen Shot 2022-05-09 at 7.16.59 PM.png
    Screen Shot 2022-05-09 at 7.16.59 PM.png
    229 KB · Views: 39
  • ioreg.ioreg
    8.8 MB · Views: 36
The Hackintool screenshot you posted above is only showing the first 15 ports. This is the default setting for macOS on a Hackintosh when no USB configuration has been implemented.

The remainder of your USB3 ports are not visible or active. Only one USB3 port is active, port SS01.

The USB2 ports HS01, HS02, HS03, HS04, HS05, HS06, HS07 and HS08 are not all likely to be Internal ports, requiring the connector Type 'Internal' (255). They are more likely to be a mix of physical USB2 ports and virtual USB2 ports served from the USB3 physical ports, i.e. SS01, SS02 etc. The ports served from a physical USB3 port are usually set in pairs, so one USB3 port might serve HS01 and SS01, another HS02 and SS02 etc.

Unfortunately, the Kernel > Quirks > XhciPortLimit entry found in the OC config.plist doesn't work in Monterey, or the later versions of Big Sur. It has not worked since Big Sur 11.3.

It is much easier to undertake the USB configuration in macOS Mojave and Catalina. A lot of users end up installing Mojave or Catalina on a spare drive, so they can use the XhciPortLimit quirk. This would be my advice to you. Install Catalina on a spare drive, you don't have to keep the Catalina installation after you have created your custom USB configuration, as the USBPorts.kext you create will be backwards and forwards compatible with macOS from El Capitan through to the current/latest release of Monterey.

When setting the connector type for your USB ports, it is essential you get this correct, as one port with an incorrect port type can mess up all the other ports and sleep in macOS.
  1. Any USB2 port served from a USB3 physical port should be set as 'USB3', the same as the physical port. These are usually set with a Blue or Red inner tang.
  2. Any Physical USB2 port should be set as 'USB2', these always have a black coloured tang to the physical port.
  3. Any USB3 header ports served from the motherboard should be set as 'USB3', this includes any USB2 ports served from the USB3 header. These ports usually serve the case front USB3 ports (blue tang).
  4. Any USB2 header ports served from the motherboard should be set as 'Internal'. These are the only ports that you need to set as internal. These ports usually serve the USB2 case front ports, USB card readers and internal bluetooth connections.
  5. Any USB Type-C ports need careful consideration, as they can be either Type-c+sw or Type-c.
    1. They way you tell the difference is by flipping the USB Type-c device 180°.
    2. If the port name remains the same, then this is a Type-c+sw port (9).
    3. If the port name changes then it is a Type-c port (10).
Hope this helps.
 
I have all the USB ports working, but all USB 2 except 1 port work USB 3, I have exports USBports.kext and followed the steps but didn't work, how to change detected USB 2 ports to USB 3.
can you advise

I am running macOS Monterey 12.3.1, using opencore

You need to select the correct UsbConnector type for each port. Most of yours are set to "Internal" or "USB2". Any HS** ports that are physically USB3 should be correctly configured (for e.g they have the blue or red internals).

On the back-panel of your motherboard only the two ports above the PS/2 port are USB2-only. So the rest should be set to UsbConnector type "3".

BP.jpg

Use Hackintool to do this:

HT.jpg
:)
 
You need to select the correct UsbConnector type for each port. Most of yours are set to "Internal" or "USB2". Any HS** ports that are physically USB3 should be correctly configured (for e.g they have the blue or red internals).

On the back-panel of your motherboard only the two ports above the PS/2 port are USB2-only. So the rest should be set to UsbConnector type "3".


Use Hackintool to do this:

:)
I have followed this one using hackintool, and exported new USBports.kexts installed on OC-EFI-Kexts then reboot.
and its like that now.
 

Attachments

  • Screen Shot 2022-05-10 at 1.23.19 PM.png
    Screen Shot 2022-05-10 at 1.23.19 PM.png
    217.7 KB · Views: 27
  • USBPorts.kext.zip
    2.1 KB · Views: 30
Last edited:
Your USBPort.kext is useless if it's configuration doesn't match you're SMBIOS, it will be ignored.
Just out of curiosity: how could I tell which config is specified in my USBports.kext? I prepared it awhile back and it seems to be working with my hack (SMBIOS=iMac20,2), but I don't know if they really do match.
 
Just out of curiosity: how could I tell which config is specified in my USBports.kext? I prepared it awhile back and it seems to be working with my hack (SMBIOS=iMac20,2), but I don't know if they really do match.
open the info.plist in the kext file, scroll to the bottom
 
Just out of curiosity: how could I tell which config is specified in my USBports.kext?
First, right click the kext then show package contents.

Screen Shot.jpg


Open Contents folder then open up the info.plist with PlistEditPro app or some other plist editor.

Then you'll see the SMBIOS the kext is set to work with (under IOKitPersonalities).

Screen Shot 1.jpg
 
Last edited:
Just out of curiosity: how could I tell which config is specified in my USBports.kext? I prepared it awhile back and it seems to be working with my hack (SMBIOS=iMac20,2), but I don't know if they really do match.
EDIT: A little late to respond, I forgot all about the Show Package Contents option. That's definitely the easiest way.

Open the kext using a Plist Editor is the easiest way and then look under IOKitPersonalities.
IOKit.png
 
Last edited:
Back
Top