Contribute
Register

The New Beginner's Guide to USB Port Configuration

Yes, remove FakePCIID_XHCIMux.kext.

FakePCIID.kext is the parent so I'm wary of telling you to remove that as you may have another kext dependent on it.

I'm not at my PC right now. I'll check the IOREG later :thumbup:

Okay, yes, how do things look with that kext removed? Remember to rebuild your kext-caches with either Terminal or Hackintool if you had the kext in Library/Extensions. If it is in your EFI Kexts folder, no need, just remove and reboot.

I've worked through the IOReg export and think it will look a lot healthier with the kext removed. Right now I can see it's in a mess.

Let me know. :thumbup:

My kexts are in the EFI kexts folder.

I removed FakePCIID_XHCIMux.kext and rebooted, but only the same 4 ports are showing as active in Hackintool.

Then I went ahead and removed FakePCIID.kext, too, and rebooted because I'm pretty sure nothing else is dependent on it, but that didn't make any difference either.

Here's my current list of kexts in case you think another one of them is the issue:
  • AppleALC
  • HDMIAudio
  • Lilu
  • SMCBatteryManager
  • SMCLightSensor
  • SMCProcessor
  • SMCSuperIO
  • VirtualSMC
  • WhateverGreen

I've also attached a new ioreg file now that I've removed those two kexts.
 

Attachments

  • Hack Pro.ioreg
    12.4 MB · Views: 45
My kexts are in the EFI kexts folder.

I removed FakePCIID_XHCIMux.kext and rebooted, but only the same 4 ports are showing as active in Hackintool.

Then I went ahead and removed FakePCIID.kext, too, and rebooted because I'm pretty sure nothing else is dependent on it, but that didn't make any difference either.

Here's my current list of kexts in case you think another one of them is the issue:
  • AppleALC
  • HDMIAudio
  • Lilu
  • SMCBatteryManager
  • SMCLightSensor
  • SMCProcessor
  • SMCSuperIO
  • VirtualSMC
  • WhateverGreen

I've also attached a new ioreg file now that I've removed those two kexts.

Okay. A couple of things struck me about the latest.

1) Do you have the ECH Renames in your config.plist?

  • Change EHC1 to EH01
  • Change EHC2 to EH02
  • Change XHCI to XHC_
I suspect not. Add them to the ACPI section. You don't specify whether you are using Clover or OpenCore but you will find each listed in the pull-down menu of both utilities if you use them. If not you can edit them in manually. I cover this in my original guide - Step 3. You need all three - EHCI and XHCI.

2) In the list of kexts in your last post there are a couple of laptop-specific ones. Any reason for this?

:)
 
Alright, I am hoping that someone here can help me out. I am having issues with speed on my usb 3.0 not getting the 5gb's speed on my hackintosh. I followed this to a tee and got all of my ports labeled and rocking and rolling. Here is the main issues.

I am an editor and need my NAS Terramaster to get minimum of 5gbps because I am editing in 4k. I have tried everything, including redoing this a second time and getting the same result. My NAS enclosure shows up on the USB, once as HS10 as the ASM107x at 480mbps and again on my SS10 as ASM107x at 5gbps. When I do a test using BlackMagic Drive Tester, I am getting around 350mbps which is a major issue. The other issue I have is that my USB-C is also not working.

Can anyone help me out because I have several projects coming up and need this problem fixed. Thanks in Advance

Hi there.

ASMedia chipsets ... Are those a part of the NAS enclosures?

Your motherboard doesn't have them etc. Thanks.

Normally in the Mac world, third-party USB chipsets are treated differently to onboard Intel ones. If they are external then no matter how fast they may be, they are limited by their host port. The one they are plugged in to on the motherboard.

:)
 
Hi there.

ASMedia chipsets ... Are those a part of the NAS enclosures?

Your motherboard doesn't have them etc. Thanks.

Normally in the Mac world, third-party USB chipsets are treated differently to onboard Intel ones. If they are external then no matter how fast they may be, they are limited by their host port. The one they are plugged in to on the motherboard.

:)
Yeah, the ASMedia chipsets are part of the enclosure and not part of the motherboard.

The NAS is plugged into USB 3.0 port. On Hackintool, it sees the enclosure as HS10 at 480mbps and SS10 at 5 gbps but when I do a speedcheck, I'm lucky I get 350mbps at most times
 
Yeah, the ASMedia chipsets are part of the enclosure and not part of the motherboard.

The NAS is plugged into USB 3.0 port. On Hackintool, it sees the enclosure as HS10 at 480mbps and SS10 at 5 gbps but when I do a speedcheck, I'm lucky I get 350mbps at most times

1) Curious. The NAS is not attached to the network? Unusual that the enclosure is seen at the HS** port. I take it, it's a USB3 connector? In which case, yes, you'd see it at SS10. Only reason for it to appear at HS10 would be that it was operating as a USB2 device. Maybe a change of cable?

I may be misunderstanding something but to give you an example of what I mean:

I have an external USB3 HDD. If I plug it in to a USB3 port then it attaches to an SS** and I get a blue light on the drive. If I plug in to a USB2 port then it attaches to an HS** port and I get a white LED to show the operating speed.

How come your enclosure can attach to 2x ports?

2) I notice your Hackintool screengrab shows 16x configured ports. Did you set up a USBPorts.kext or an SSDT? You don't need to keep the USR ports.

:)
 
1) Curious. The NAS is not attached to the network? Unusual that the enclosure is seen at the HS** port. I take it, it's a USB3 connector? In which case, yes, you'd see it at SS10. Only reason for it to appear at HS10 would be that it was operating as a USB2 device. Maybe a change of cable?

I may be misunderstanding something but to give you an example of what I mean:

I have an external USB3 HDD. If I plug it in to a USB3 port then it attaches to an SS** and I get a blue light on the drive. If I plug in to a USB2 port then it attaches to an HS** port and I get a white LED to show the operating speed.

How come your enclosure can attach to 2x ports?

2) I notice your Hackintool screengrab shows 16x configured ports. Did you set up a USBPorts.kext or an SSDT? You don't need to keep the USR ports.

:)
It actually is just a raid enclosure and not a NAS. The NAS is on my laptop currently and I use that mostly for time machine backups and cloud storage mainly.

So the Raid Enclosure connects to the computer from USB-C to USB 3.0. It also has two USB 3.0 ports on the back of it to attach additional drives. This could possible be the main reason why it's connected to HS and SS, maybe?

I have the USBPorts.kext attached to my kext folder. I also did an SSDT as well and I am completely losing my **** trying to figure this out
 
Okay. A couple of things struck me about the latest.

1) Do you have the ECH Renames in your config.plist?

  • Change EHC1 to EH01
  • Change EHC2 to EH02
  • Change XHCI to XHC_
I suspect not. Add them to the ACPI section. You don't specify whether you are using Clover or OpenCore but you will find each listed in the pull-down menu of both utilities if you use them. If not you can edit them in manually. I cover this in my original guide - Step 3. You need all three - EHCI and XHCI.

2) In the list of kexts in your last post there are a couple of laptop-specific ones. Any reason for this?

:)

1) I added the ECH Renames in my config.plist (I'm using Clover).

2) If you're referring to SMCBatteryManager and SMCLightSensor, I had just installed all the sensors when I installed VirtualSMC. I was just thinking I could remove them after I sent my list of kexts, so I went ahead and removed them now.

I rebooted, and now Hackintool is showing a lot more ports! Also, when I connect a USB 2.0 stick, it shows in Hackintool. Thank you! :thumbup:

However, as you said might be the case, when I connect my USB 3.0 drive, it doesn't show in Hackintool. So how do I determine which ports to keep and which to remove?

Also, BRCM20702 Hub is my Bluetooth card and should be set to "Internal" instead of "USB2", correct?
Hackintool.png
 
Also, BRCM20702 Hub is my Bluetooth card and should be set to "Internal" instead of "USB2", correct?

Yes, that is correct.

Now you can follow the guide. Use USB stick to determine which ports are active and you wish to keep. They will light up in Hackintool etc. Once the discovery process is done delete the other ports and create your USBPorts kext.

:)
 
Yes, that is correct.

Now you can follow the guide. Use USB stick to determine which ports are active and you wish to keep. They will light up in Hackintool etc. Once the discovery process is done delete the other ports and create your USBPorts kext.

:)
OK. I tried following the guide again. I tested each of the ports with a USB 2 stick and a USB 3 drive.

When I connected devices to the USB 2 ports on the front of my case showed up in Hackintool as EH01-HP13 and EH01-HP14.

However, when I connected devices to the USB 3 ports on the front of my case and the back of my motherboard, none of them showed up in Hackintool. When I looked in IOReg, though, I could see them appearing under the USB hubs at 0x1D150000 (EH01-HP15), 0x1D160000 (EH01-HP16), 0x14300000 (XHC-SS05), and 0x14400000 (XHC-SS06). I wasn't sure if that was correct or if they should be showing up in Hackintool.

But I went ahead and deleted all the ports that didn't show up as a device or hub in Hackintool.

There were also some hubs that showed up as active in Hackintool, but no devices showed up under them in IOReg (EH01-PR11, EH02-PR21, EHC1-PR01, and EHC2-PR01). I kept those just to be safe.

I set the port for my Bluetooth card (EH01-HP17) to Internal and then exported USBPorts.kext.

I replaced USBInjectAll with USBPorts.kext and disabled the port limit removal patches in my config.plist.

After rebooting, all my USB ports seemed to be working fine, BUT I had no Bluetooth. :banghead: While the port was still active in Hackintool, it no longer showed "BRCM20702 Hub" as the device (on the plus side, I found that could get my computer to sleep again without immediately waking).

As a test, I set that port back to USB2, exported a new USBPorts.kext, and rebooted. Now I have Bluetooth again, BUT I can't get my computer to sleep without it immediately waking up. :banghead:

I'm not sure what I'm doing wrong. Here are screenshots of what I saw in Hackintool vs. IOReg when I was testing ports with USBInjectAll.kext in case I did something wrong with that part. You can see how all the devices I was using for testing showed up under the Hubs in IOReg:

Hackintool USBInjectAll.png
IOReg USBInjectAll.png


And here's what's Hackintool and IOReg look like now with USBPorts.kext and the Bluetooth port set to USB2:

Hackintool USBPorts.png
IOReg USBPorts.png

I'm also attaching ioreg files for each of those IOReg screenshots if it helps.

(As an aside, my computer stopped detecting and connecting to wifi networks earlier today. This happened before I replaced USBInjectAll.kext with USBPorts.kext or made changes to my config.plist, so I think the wifi/BT card might be bad. :banghead:)
 

Attachments

  • Hack Pro - USBInjectAll.ioreg
    38.7 MB · Views: 21
  • Hack Pro - USBPorts.ioreg
    12.1 MB · Views: 24
OK. I tried following the guide again. I tested each of the ports with a USB 2 stick and a USB 3 drive.

When I connected devices to the USB 2 ports on the front of my case showed up in Hackintool as EH01-HP13 and EH01-HP14.

However, when I connected devices to the USB 3 ports on the front of my case and the back of my motherboard, none of them showed up in Hackintool. When I looked in IOReg, though, I could see them appearing under the USB hubs at 0x1D150000 (EH01-HP15), 0x1D160000 (EH01-HP16), 0x14300000 (XHC-SS05), and 0x14400000 (XHC-SS06). I wasn't sure if that was correct or if they should be showing up in Hackintool.

But I went ahead and deleted all the ports that didn't show up as a device or hub in Hackintool.

There were also some hubs that showed up as active in Hackintool, but no devices showed up under them in IOReg (EH01-PR11, EH02-PR21, EHC1-PR01, and EHC2-PR01). I kept those just to be safe.

I set the port for my Bluetooth card (EH01-HP17) to Internal and then exported USBPorts.kext.

I replaced USBInjectAll with USBPorts.kext and disabled the port limit removal patches in my config.plist.

After rebooting, all my USB ports seemed to be working fine, BUT I had no Bluetooth. :banghead: While the port was still active in Hackintool, it no longer showed "BRCM20702 Hub" as the device (on the plus side, I found that could get my computer to sleep again without immediately waking).

As a test, I set that port back to USB2, exported a new USBPorts.kext, and rebooted. Now I have Bluetooth again, BUT I can't get my computer to sleep without it immediately waking up. :banghead:

I'm not sure what I'm doing wrong. Here are screenshots of what I saw in Hackintool vs. IOReg when I was testing ports with USBInjectAll.kext in case I did something wrong with that part. You can see how all the devices I was using for testing showed up under the Hubs in IOReg:

View attachment 514594View attachment 514595

And here's what's Hackintool and IOReg look like now with USBPorts.kext and the Bluetooth port set to USB2:

View attachment 514596View attachment 514598
I'm also attaching ioreg files for each of those IOReg screenshots if it helps.

(As an aside, my computer stopped detecting and connecting to wifi networks earlier today. This happened before I replaced USBInjectAll.kext with USBPorts.kext or made changes to my config.plist, so I think the wifi/BT card might be bad. :banghead:)

Well done on all your efforts to get this sorted. It's not always as easy as others would have you believe. :thumbup:

My initial reaction on seeing the Hackintool screengrabs was that there's a confusion caused by the Renesas piggy-back controller here. According to Gigabyte your motherboard only has 2x native Intel USB3 ports and these are on internal header(s). There are also just 4x Intel USB2 ports, again on internal headers. The external ports are a mix of Intel USB2 ports augmented by the Renesas chipset to make them USB3 compatible. As I mentioned before, there are two common ways to implement 3rd-party controllers - one is to use an extra controller for both USB3 and USB2 ports in addition to the Intel ones. The other is to piggy-back on Intel USB2 ports to give them USB3 functionality. This second method is always more difficult to sort out on macOS.

The Renesas controller provides "Hubs". This can be a cause of the devices you plug in not appearing on a specific port, only the hubs you see in Hackintool.

So that's all the background. What to do?

1) Plug your Bluetooth adapter into an internal USB2 port and when it appears in Hackintool set the 'Connector' to Internal. It shows up in your screengrabs at HP17, but obviously I don't know where that is physically. If you can do that it should cure your PC of instant wake from sleep.

2) Double-check you don't have any USB related 3rd-party kexts lurking anywhere - Library/Extensions as well as EFI-Kext folder.

3) Are you still on High Sierra or have you upgraded and I've missed you mentioning it? The reason I ask is because an old kext called GenericUSBXHCI.kext by @RehabMan is one that worked with this chipset, creating an XHC IOReg entry for the ports to attach to and thus act more like conventional USB. It rarely works with later macOS versions so is not recommended nowadays, but for High Sierra may help.

4) If nothing else works and as none of your external, back-panel ports are native Intel, and you need some, then perhaps consider a USB PCIe add-on card which uses a fully supported controller chip. macOS treats these just as though they were inserted in a real Mac Pro.

:)
 
Back
Top