Contribute
Register

The New Beginner's Guide to USB Port Configuration

Is it possible to configure ports that are DISABLED in the Bios?

I can only boot Mojave when USB 3.0 is DISABLED in the bios. If I enable USB 3.0 in the bios then I get stuck at apple screen with no progress and can't boot.

So, what steps can I take, to be able to boot whilst having USB 3.0 enabled in the Bios, so that I can follow the beginners guide to configure them?

I've searched and I can only find tutorials for installing Mojave (or HS) that say on legacy Mobos to disable USB 3.0 - but there's no mention of when, how, or if, you can ever turn it back on again and have a bootable machine....

Thanks for any help or insight.....
 
Last edited:
Is it possible to configure ports that are DISABLED in the Bios?

No.

(Only as a mental exercise).

These are Renesas USB 3.0 ports, as I understand it. See my reply to your question on the other thread. Please do not duplicate posts on different forums or they will be removed.
 
@UtterDisbelief

I have failed miserably to generate a useful USBPorts.kext for my Z390 build.
(By the way what is the difference or purpose between a USBMaps.kext and a USBPorts.kext ??) I've seen USBMaps.kext referenced but don't understand what it does or role it has.

I posted this also on another thread: https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/ but am reposting here as it really is USB injection specific.

I tried to follow the referenced guide: https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/

I did all the steps up to port discovery, very carefully.

When I got to the port discovery I found a MAJOR difference between the guide and the Hackintool (very latest version)
When I have a USB device plugged into a port, THE HIGHLIGHT DOES NOT happen as shown in the guide - I mean the 'star' or * to the side. So there's no feedback of plugging a device in.

Unless, as I assumed the Green lines are showing ALL the active devices?

So I plugged a device into EVERY port simultaneously. I got something like this (one port turned off in this picture)

Screen Shot 2020-07-08 at 9.20.51 PM.png
I then selected and deleted (minus sign of Hackintool) the inactive ports (not GREEN?) , and exported to USBPorts.kext. Copied the kext to my EFI folder, removed USBInjectAll.kext, changed config.plist to enable USBPorts.kext, removed USBInjectAll.kext reference, and rebooted.

I stupidly also copied the newly created SSDT-UIAC.aml etc files to EFI/OC/ACPI.

I rebooted and the reboot froze.

I removed the newly added SSDT*.aml files from EFI/OC/ACPI and rebooted (lucky to have a USB OC stick too to recover through).

It booted but I have few ports:

Screen Shot 2020-07-08 at 9.21.53 PM.png

No SS ports, most ports gone.

Useless.

And I STILL can't figure out how to identify the INTERNAL MB USB 2.0 port!

What am I doing wrong? I have attached my ENTIRE EFI folder with serial numbers erased.
 

Attachments

  • OC-EFI-TRIAL.zip
    60.2 MB · Views: 192
@UtterDisbelief

I have failed miserably to generate a useful USBPorts.kext for my Z390 build.
(By the way what is the difference or purpose between a USBMaps.kext and a USBPorts.kext ??) I've seen USBMaps.kext referenced but don't understand what it does or role it has.

I posted this also on another thread: https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/ but am reposting here as it really is USB injection specific.

I tried to follow the referenced guide: https://www.tonymacx86.com/threads/the-new-beginners-guide-to-usb-port-configuration.286553/

I did all the steps up to port discovery, very carefully.

When I got to the port discovery I found a MAJOR difference between the guide and the Hackintool (very latest version)
When I have a USB device plugged into a port, THE HIGHLIGHT DOES NOT happen as shown in the guide - I mean the 'star' or * to the side. So there's no feedback of plugging a device in.

Unless, as I assumed the Green lines are showing ALL the active devices?

So I plugged a device into EVERY port simultaneously. I got something like this (one port turned off in this picture)

View attachment 479682
I then selected and deleted (minus sign of Hackintool) the inactive ports (not GREEN?) , and exported to USBPorts.kext. Copied the kext to my EFI folder, removed USBInjectAll.kext, changed config.plist to enable USBPorts.kext, removed USBInjectAll.kext reference, and rebooted.

I stupidly also copied the newly created SSDT-UIAC.aml etc files to EFI/OC/ACPI.

I rebooted and the reboot froze.

I removed the newly added SSDT*.aml files from EFI/OC/ACPI and rebooted (lucky to have a USB OC stick too to recover through).

It booted but I have few ports:

View attachment 479681

No SS ports, most ports gone.

Useless.

And I STILL can't figure out how to identify the INTERNAL MB USB 2.0 port!

What am I doing wrong? I have attached my ENTIRE EFI folder with serial numbers erased.


Hi there.

To address your questions one a at a time:

1) USBMap.kext is a similar method for configuring USB ports to the one used by Hackintool, USBPorts.kext.

I am not going to offer support for both methods. Only Hackintool.

2) When using Hackintool to identify your USB ports there is no "star" or "*" in the individual port entry. I added these to the graphics in the guide to highlight the port moving as it does, from a USB2.0 port to a USB3.0 port.

3) For the ASUS Z390-I Gaming motherboard you have, not all the ports will be present as it is an ITX one. However, because the Z390 is the same as in bigger boards, the full 24/26 ports will still be visible, although many will not be connected.

Do the ports indentification process for all the ports you have then remove the others from Hackintool. This doesn't actually remove anything, but prevents macOS from seeing them.

4) Without USBInjectAll.kext the SSDT-UIAC.aml should not be loaded. A mystery why that froze your machine, but we learn something new every day. Maybe this is a bug in OpenCore.

5) You need to clean-up your config.plist. You have old Clover settings in there alongside OpenCore settings. For example: you have the Clover Port-Limit Removal patches in place and Enabled (see Kernel/Patch). OpenCore uses the XhciPortLimit Quirk instead anyway. Neither are needed once the USBPorts.kext has been created.

6) The USBPorts.kext you have created with Hackintool looks fine. It should configure your ports. So check there are no other kexts hiding in Drive: Library/Extensions or even S/L/E concerning USB settings.

:)
 
@UtterDisbelief

Thanks for the answers. I have port injection working, and something plugged into EVERY usb port on the chassis. Here's what I see:
Screen Shot 2020-07-09 at 8.11.39 PM.png

Now obviously I delete/remove HS08,HS09, HS10, HS11, SS01-SS05, SS10.

But that leaves me with 17 GREEN active ports!

Some like HS01 port 0x01, and HS03, port 0x03 have unknowns but are still GREEN. Does that mean I can delete them?

If I delete all these 'unknowns' I'm down to 9 USB ports.

So I could add BACK 6 ports, and if so which 6 ports?


So I took a stab at picking 15 ports. I have attached the output USBPorts.kext.

Why does the Info.plist list like two usb controllers?

iMac19,1-XHC

and

iMac19,1-XHC-8086_a2af

Should I remove one of these definitions?

***********************

Post install results:

I disabled the USBInjectAll.kext in config.plist. I enabled the USBPorts.kext.

I am missing the Chassis Front Panel USB3 and USB-C and ONE rear (mb front panel) USB.

Screen Shot 2020-07-09 at 8.41.20 PM.png

I'm missing, as I said, comparing with first Hackintool image, HD Docking Station, and USB Storage, which were on SS08 and SS09, and as ports are still seen in this second image, but plugging the devices in and out does not make them seen to the OS.

Finally I have attached the IORegs screen shot, which shows 12 devices, but not the missing ones.
Screen Shot 2020-07-09 at 8.42.08 PM.png
???

Sorry for being so long winded. :crazy:
 

Attachments

  • USBPorts.kext.zip
    2.1 KB · Views: 78
Last edited by a moderator:
@UtterDisbelief

Thanks for the answers. I have port injection working, and something plugged into EVERY usb port on the chassis. Here's what I see:
View attachment 479829

Now obviously I delete/remove HS08,HS09, HS10, HS11, SS01-SS05, SS10.

But that leaves me with 17 GREEN active ports!

Some like HS01 port 0x01, and HS03, port 0x03 have unknowns but are still GREEN. Does that mean I can delete them?

If I delete all these 'unknowns' I'm down to 9 USB ports.

So I could add BACK 6 ports, and if so which 6 ports?


So I took a stab at picking 15 ports. I have attached the output USBPorts.kext.

Why does the Info.plist list like two usb controllers?

iMac19,1-XHC

and

iMac19,1-XHC-8086_a2af

Should I remove one of these definitions?

***********************

Post install results:

I disabled the USBInjectAll.kext in config.plist. I enabled the USBPorts.kext.

I am missing the Chassis Front Panel USB3 and USB-C and ONE rear (mb front panel) USB.

View attachment 479832

I'm missing, as I said, comparing with first Hackintool image, HD Docking Station, and USB Storage, which were on SS08 and SS09, and as ports are still seen in this second image, but plugging the devices in and out does not make them seen to the OS.

Finally I have attached the IORegs screen shot, which shows 12 devices, but not the missing ones.
View attachment 479833
???

Sorry for being so long winded. :crazy:


Hi there.

Something is wrong here and I can't see what it is. A lot of the USB ports are duplicated. HS03 for example, and it has a different location ID for each port. However HS14 is also duplicated but each port has the same location ID.

Physcally your motherboard has 5x USB3.0 ports on the back panel, plus 2x USB2.0 ports. Internally 4x USB3.0 and 2x USB2.0. This totals 9x USB3.0 and 2x USB2.0 If we double the USB3.0 ports, because a USB3.0 port can be USB2.0 as well, we get a grand total of 22x possible USB ports. As I said before, a little less than the number possible on a Z390.

The extra controller problems (XHC and XHC-8086) we are seeing must be caused by something, and usually this is a kext that shouldn't be there.

Check what kexts are in Drive Library/Extensions. Otherwise I must admit to being baffled as to why this duplication is happening.

You can always follow the non-Hackintool guide here. This one allows you to manually configure everything and by using it you should not have the extra controller.

:)
 
@UtterDisbelief

Hi again,

I've made some progress. But NOT fully there yet.
I took your advice that there was an extra Kext somewhere messing up my USB. There was ONE kext in L/E something like AppleMobileSupport.kext that looked suspicious. I was not allowed by the main OS to delete this kext either in Finder, or on a terminal prompt using sudo. Nothing would allow it to be deleted.
So I installed a fresh copy of Catalina on an extra SSD in the system, booted off my USB stick into that OS. Won't go into the problems I had with Apple iCloud and permissions/verification.
However in this OS I was able to a) see there was no AppleMobileSupport.kext in L/E, b) I was able to delete the kext from the OTHER drive.
I re-configured the boot EFI (in config.plist) to disable the old USBPorts.kext and enable the USBInjectAll.kext (and enabled the XHC flag in config.plist) and rebooted.
This time in a vanilla OS I got a better Hackintool USB map. (mmm should have saved that image...). There were 17 ports listed by Hackintool.
I deleted SS10, and one other (I forget) and created a new USBPorts.kext, which I have attached it here (2.zip). There is only ONE XHC controller defined in this Info.plist !

I rebooted into the standard drive/OS, and now this is what Hackintool shows for USB ports. Looks way better.

Screen Shot 2020-07-10 at 8.41.18 PM.png


I looked at IORegs, and this is what it shows:

Screen Shot 2020-07-10 at 8.41.43 PM.png


There is ONE major problem. The USB-C port on the chassis front panel is not present. I have a USB-C flash plugged into it, as I run the experiments with something in EVERY port.

I know the port is good because when I boot into Windows 10 it sees the attached USB-C flash on the front panel.

Any suggestions? Should I not have deleted SS10, even though it seemed to be NOT active in the Hackintool?

And sleep does NOT work. It sleeps for 2 seconds and then wakes up again. Blast it!

Thanks for all the help so far. Feel like I'm making slow and very painful progress

;)
 

Attachments

  • USBPorts.kext 2.zip
    2 KB · Views: 73
@UtterDisbelief

Hi again,

I've made some progress. But NOT fully there yet.
I took your advice that there was an extra Kext somewhere messing up my USB. There was ONE kext in L/E something like AppleMobileSupport.kext that looked suspicious. I was not allowed by the main OS to delete this kext either in Finder, or on a terminal prompt using sudo. Nothing would allow it to be deleted.
So I installed a fresh copy of Catalina on an extra SSD in the system, booted off my USB stick into that OS. Won't go into the problems I had with Apple iCloud and permissions/verification.
However in this OS I was able to a) see there was no AppleMobileSupport.kext in L/E, b) I was able to delete the kext from the OTHER drive.
I re-configured the boot EFI (in config.plist) to disable the old USBPorts.kext and enable the USBInjectAll.kext (and enabled the XHC flag in config.plist) and rebooted.
This time in a vanilla OS I got a better Hackintool USB map. (mmm should have saved that image...). There were 17 ports listed by Hackintool.
I deleted SS10, and one other (I forget) and created a new USBPorts.kext, which I have attached it here (2.zip). There is only ONE XHC controller defined in this Info.plist !

I rebooted into the standard drive/OS, and now this is what Hackintool shows for USB ports. Looks way better.

View attachment 479936


I looked at IORegs, and this is what it shows:

View attachment 479935


There is ONE major problem. The USB-C port on the chassis front panel is not present. I have a USB-C flash plugged into it, as I run the experiments with something in EVERY port.

I know the port is good because when I boot into Windows 10 it sees the attached USB-C flash on the front panel.

Any suggestions? Should I not have deleted SS10, even though it seemed to be NOT active in the Hackintool?

And sleep does NOT work. It sleeps for 2 seconds and then wakes up again. Blast it!

Thanks for all the help so far. Feel like I'm making slow and very painful progress

;)


Good work so far :thumbup:

Looking at the Hackintool screen there are stiil duplicates - HS03, HS06 and HS14. HS14 is where your Bluetooth controller is attached at @14900000 and this port is usually the one to cause the instant wake problem. I guess you deleted the first of the two ports @14a00000, the one with the "Unknown" against it, before compiling USBPorts.kext.

As for the USB-C port ... That seems to be SS06 from your graphic. The tricky thing here is to find out what the USB2.0 equivalent for it is, because people rarely have a USB2.0 spec USB-C device. What I do is use a USB-C to USB-A cable and then plug a USB2.0 flash drive into that. This shows me where the USB2 port is. However I undserstand you may not be able to do this. Normally if the USB3.0 port is at SS06 you would expect the USB2.0 port to be at HS06, but we can see here that's not likely as you have an optical mouse attached there. Manufacturers sometimes configure ports like this. The reason i mention all this is to see if the USB2 side of the USB-C port is working.

As we seem up against something not quite obvious with those duplicated ports, I would be tempted to try an earlier version of Hackintool to see if we are up against a "bug". Could also be OpenCore too.

Finally, please list the kexts in your Drive: Library/Extensions folder just to see the lie of the land.

:)
 
@UtterDisbelief :

Looking at the Hackintool screen there are stiil duplicates - HS03, HS06 and HS14. HS14 is where your Bluetooth controller is attached at @14900000 and this port is usually the one to cause the instant wake problem. I guess you deleted the first of the two ports @14a00000, the one with the "Unknown" against it, before compiling USBPorts.kext.

As for the USB-C port ... That seems to be SS06 from your graphic. The tricky thing here is to find out what the USB2.0 equivalent for it is, because people rarely have a USB2.0 spec USB-C device. What I do is use a USB-C to USB-A cable and then plug a USB2.0 flash drive into that. This shows me where the USB2 port is. However I undserstand you may not be able to do this. Normally if the USB3.0 port is at SS06 you would expect the USB2.0 port to be at HS06, but we can see here that's not likely as you have an optical mouse attached there. Manufacturers sometimes configure ports like this. The reason i mention all this is to see if the USB2 side of the USB-C port is working.

As we seem up against something not quite obvious with those duplicated ports, I would be tempted to try an earlier version of Hackintool to see if we are up against a "bug". Could also be OpenCore too.

Finally, please list the kexts in your Drive: Library/Extensions folder just to see the lie of the land.

So I went back to my 'vanilla' install of Catalina - I called the drive Mac-2. This is because the OS version on the SAM-0970-NVME drive ALSO contains my Time Machine restore from the OS I have been using for 7+ years. So that image is not vanilla, and also certainly contained .kexts in L/E from years ago - but I have cleaned them out now.
Screen Shot 2020-07-11 at 10.32.10 AM.png

The above image is captured from a boot on the Mac-2 drive. On the LEFT is the NVMe drive open to L/E, on the RIGHT is the same L/E on the Mac-2 (vanilla) drive. They seem the same to me. Now. As with your advice I made them the same.

Chassis Front Panel USB-C problem

I have a USB-C multiplexer, it connects to USB-C and breaks out to USB-C and USB-A ports. I plugged a USB 2.0 and USB-C flash drives into the multiplexer. The BIOS sees these as TWO possible boot drives.

I have disabled yesterday's USBPort.kext, and enabled USBInjectAll.kext (0.7.5) to re-do the port tests and booted to the vanilla Mac-2 drive.

This is what Hackintool shows now - all ports injected:
Screen Shot 2020-07-11 at 10.28.43 AM.png

First notice there are NO duplicate ports - do you agree?

As far as I can tell there is NO recognition of the USB-C port, as a USB 2.0 or USB 3.1 port. The light on the multiplexer goes ON/OFF if I plug and unplug the two USB sticks in it. So there's power, but as far as I can see there in no USB Inject All recognition of the ports. The Hackintool does not see the insert extraction process nor does the OS.

Not sure that it is on SS06 as you suggested. But don't know where it is.

My chassis is a NZXT H201i - chosen partly because it has a USB-C and a USB-A ports on the front. So I want this to work.
Notice that diskUtil does NOT see the USB-C multiplexer drives either:

Screen Shot 2020-07-11 at 10.28.26 AM.png

If I boot into Windows-10 drive the NZXT led controller gets initialized. Nice flashing. If I don't power off, and reboot to OS X, the LEDs continue to flash.

So the next picture is of IORegs where this time the vanilla Mac-2 OS, in the same USBInjectAll state as the Hackintool image, is on the LEFT and the screen shot I took yesterday of the NVMe drive OS state is on the right. Notice there is no 'NZXT' controller at 0x14710000 seen by IORegs on the Mac-2. But it is there. I assume not seen since I booted from a power off state. This is an internal USB port of the MB.

Screen Shot 2020-07-11 at 10.44.32 AM.png

So I'm stumped. @ModMike thread on the Z390-I ASUS does not seem to have an answer to my port problem - I'm not going through ever page of the 430 in the thread to find a USBPort.kext. Google doesn't help, and the search capability on this tonyMacx86 site isn't good enough, for me, to find a USBPort.kext that I could test.

Someone out there must have a solution?

@UtterDisbelief : thanks for all the help. What do you suggest I do next?
 

Attachments

  • Screen Shot 2020-07-11 at 10.29.57 AM.png
    Screen Shot 2020-07-11 at 10.29.57 AM.png
    1.2 MB · Views: 44
@UtterDisbelief :



So I went back to my 'vanilla' install of Catalina - I called the drive Mac-2. This is because the OS version on the SAM-0970-NVME drive ALSO contains my Time Machine restore from the OS I have been using for 7+ years. So that image is not vanilla, and also certainly contained .kexts in L/E from years ago - but I have cleaned them out now.
View attachment 480015

The above image is captured from a boot on the Mac-2 drive. On the LEFT is the NVMe drive open to L/E, on the RIGHT is the same L/E on the Mac-2 (vanilla) drive. They seem the same to me. Now. As with your advice I made them the same.

Chassis Front Panel USB-C problem

I have a USB-C multiplexer, it connects to USB-C and breaks out to USB-C and USB-A ports. I plugged a USB 2.0 and USB-C flash drives into the multiplexer. The BIOS sees these as TWO possible boot drives.

I have disabled yesterday's USBPort.kext, and enabled USBInjectAll.kext (0.7.5) to re-do the port tests and booted to the vanilla Mac-2 drive.

This is what Hackintool shows now - all ports injected:
View attachment 480013

First notice there are NO duplicate ports - do you agree?

As far as I can tell there is NO recognition of the USB-C port, as a USB 2.0 or USB 3.1 port. The light on the multiplexer goes ON/OFF if I plug and unplug the two USB sticks in it. So there's power, but as far as I can see there in no USB Inject All recognition of the ports. The Hackintool does not see the insert extraction process nor does the OS.

Not sure that it is on SS06 as you suggested. But don't know where it is.

My chassis is a NZXT H201i - chosen partly because it has a USB-C and a USB-A ports on the front. So I want this to work.
Notice that diskUtil does NOT see the USB-C multiplexer drives either:

View attachment 480012

If I boot into Windows-10 drive the NZXT led controller gets initialized. Nice flashing. If I don't power off, and reboot to OS X, the LEDs continue to flash.

So the next picture is of IORegs where this time the vanilla Mac-2 OS, in the same USBInjectAll state as the Hackintool image, is on the LEFT and the screen shot I took yesterday of the NVMe drive OS state is on the right. Notice there is no 'NZXT' controller at 0x14710000 seen by IORegs on the Mac-2. But it is there. I assume not seen since I booted from a power off state. This is an internal USB port of the MB.

View attachment 480016

So I'm stumped. @ModMike thread on the Z390-I ASUS does not seem to have an answer to my port problem - I'm not going through ever page of the 430 in the thread to find a USBPort.kext. Google doesn't help, and the search capability on this tonyMacx86 site isn't good enough, for me, to find a USBPort.kext that I could test.

Someone out there must have a solution?

@UtterDisbelief : thanks for all the help. What do you suggest I do next?


Hi there.

Well it's good to see the duplicates removed :thumbup:

The Library/Extensions folders look fine. No problem.

So we are bascially left with that NZXT hub which Apple doesn't like. That's annoying but your case wasn't designed with macOS in mind. If there is any hub electronics in the NZXT then while Windows might be okay with it, macOS may not. Usually you see this in IORegistryExplorer. It has an "address" but it may not be reporting what ports it has in a way macOS understands. Hence the lack of USB-C. You'll have to open-up the NZXT node (the triangle) and see what's there.

Only a full *.IOReg export will give us more details, but I understand some people are not happy to upload this.

What made me think you had a USB-C port at SS06 was because Hackintool identified it as "TypeC". (There are two varieties "TypeC" and "TypeC SW").

I don't think ModMike will have uploaded a USBPorts.kext for his guide, but his is a good, solid tutorial for your motherboard all the same.

Two points to make after all we've discussed here:

1) Any ports on Hubs in a system are only controllable as far as the root port. The ones springing off that are not.

2) When Hackintool fails you can do everything manually. My earlier guide shows you how to configure the ports if you really want to dig deeper. The only extra information you need is in Useful Fact no.4 the “UsbConnector”, 9, and the “UsbConnector”, 10, values which stand for the two types of USB-C port.

:)
 
Back
Top