Contribute
Register

The New Beginner's Guide to USB Port Configuration

Maybe this post is not adding much after all, but I felt compelled to write it.

Last year I wrote a thread with instructions to have your USB 3.0 ports working in a Z390 motherboard using a hackingtool. You can read it there if you like: https://www.tonymacx86.com/threads/...-usb-3-0-ports-working-mojave-10-14-5.279974/.

However, as I mentioned in the last paragraph of such thread, I never understood the consequences of using the "USBInjectAll.kext" and not creating my "USBPorts.kext"

Now it happened to me, I upgraded my PSU to a Corsair HX850i with Corsair Link and such corsair link made my hack to start waking up every minute if set to sleep. @Leesureone pointed me to this thread which I've never seen.

I did what you say in this thread leaving aside the USB port where the Corsair Link is connected and solved that issue (and prevented God knows which other more).

Thank you so much!

Glad you have got that Corsair PSU working as it should. The "i" models are unusual and the USB port they connect to needs configuring to prevent immediate wake from sleep.

:thumbup:
 
Hi :)

What about port mapping on AMD-based rigs?
USBInjectAll.kext is incompatible with those, right?
What does that mean? That AMD users don't need it to see all ports? Or that they need something else (maybe something that doesn't exist, yet?)?

About the 15 ports limit... AFAIU this limit is per controller, right? Not 15 total.
Of course for MBs with a single XHC controller its gonna be 15 ports but for older MBs with an XHC and an EHC controller they could use up to 15 ports per controller, right? Or am I confused?

What about USB3.x PCIe cards? These could allow for up to an extra 15 ports, right?

Thank you very much for the awesome work that you do and the priceless help that you provide.

Best,
-a-
 
Hi :)

What about port mapping on AMD-based rigs?
USBInjectAll.kext is incompatible with those, right?
What does that mean? That AMD users don't need it to see all ports? Or that they need something else (maybe something that doesn't exist, yet?)?

About the 15 ports limit... AFAIU this limit is per controller, right? Not 15 total.
Of course for MBs with a single XHC controller its gonna be 15 ports but for older MBs with an XHC and an EHC controller they could use up to 15 ports per controller, right? Or am I confused?

What about USB3.x PCIe cards? These could allow for up to an extra 15 ports, right?

Thank you very much for the awesome work that you do and the priceless help that you provide.

Best,
-a-


Hi there.

Glad you have found the guides useful :thumbup:

To answer your questions:

1) AMD ports can be mapped using Hackintool and producing a USBPorts.kext. The controller names are just slightly different. There is no executable program, just patches to ACPI. Also, USBInjectAll.kext was optimised for Intel so may or may not work on AMD systems. I don't have enough different motherboard/CPU combo results to be certain in all cases. That will come in time as more systems are built on AMD foundations. However, going forward from Catalina to Big Sur, USBPorts.kext is the way to go anyway.

2) Yes, correct. 15-ports per controller. As Apple didn't fully support mixed EHCI/XHCI setups this is something only PC users find a bonus. It's one of those things that is fine on paper and may indeed work okay in real life. But it wasn't intended by Apple that we should have 45-ports (EHCI1/2 and XHCI etc).

3) USB PCIe cards are fine whatever system you use. The problem is only that 3rd Party vendors rarely write macOS drivers so the ports are generally unconfigurable. macOS treats the add-on cards just as it would PCIe cards in a real Mac Pro. So all the ports work but may be unreliable because of the lack of drivers. There is a kext called GenericUSBXHCI.kext by @RehabMan but it is 5-years old now and no-longer maintained which may, or may not, work as a driver for modern setups. These extra ports do not count towards the chipset 15.

:)
 
USB PCIe cards are fine whatever system you use. The problem is only that 3rd Party vendors rarely write macOS drivers so the ports are generally unconfigurable.
These Inateck cards (KT4006) use a Fresco Logic chip that has native support. Drivers already in macOS.
https://www.amazon.com/dp/B00JFR2H64/?tag=tonymacx86com-20

There may also be a 4 port version that works but I've not tried one of those to verify it.
https://www.amazon.com/dp/B00I027GPC/?tag=tonymacx86com-20
The KT4006 has a Windows 10 driver that I just tried and that works too. See their website for the download.
 
USBInjectAll.kext was optimised for Intel so may or may not work on AMD systems. I don't have enough different motherboard/CPU combo results to be certain in all cases. That will come in time as more systems are built on AMD foundations.

What would be the symptoms if USBInjectAll.kext doesn't work?
How could one realize that not all the ports are listed in hackintool?

If USBInjectAll.kext turns out to be incompatible with a given AMD system, is there any alternative? Or would this make it difficult/impossible to properly map USB ports on such a system?
 
These Inateck cards (KT4006) use a Fresco Logic chip that has native support. Drivers already in macOS.
https://www.amazon.com/dp/B00JFR2H64/?tag=tonymacx86com-20

There may also be a 4 port version that works but I've not tried one of those to verify it.
https://www.amazon.com/dp/B00I027GPC/?tag=tonymacx86com-20
The KT4006 has a Windows 10 driver that I just tried and that works too. See their website for the download.


Yes, FL chips were native but I doubt Apple has updated support lately. Could be wrong, but plenty of examples in this thread of Hackintool and Fresco Logic not being fully supported.

There are many other OEM style PCIe USB cards that work using FL or ASMedia chips. Sadly GenericUSBXHCI.kext is their best hope - and a lot do find it helps - but its age is against it.

:)
 
What would be the symptoms if USBInjectAll.kext doesn't work?
How could one realize that not all the ports are listed in hackintool?

If USBInjectAll.kext turns out to be incompatible with a given AMD system, is there any alternative? Or would this make it difficult/impossible to properly map USB ports on such a system?


Personally, if I was going that deep I'd use IORegistryExplorer to check my ports.

You can easily check if USBInjectAll.kext is loading.

No, there is no alternative to USBInjectAll that uses a macOS "executable" but you can patch the ACPI maually using XML code and do without kexts altogether, if you are keen. I have done this for my builds. However for the ease of helping others I went back to USBPorts.kext. As I said before, for Catalina and Big Sur it - along with the manual method - is the only way to go.
 
Last edited:
i followed this tutorial but i dont know what i did that it mess with all my ubs ports,i had to re install back all the keyts,my issue is really weird,my 16 gbs flash drives run Up to 5 Gb/sec but my 32gbs flash drives run Up to 480 Mb/sec
 
i followed this tutorial but i dont know what i did that it mess with all my ubs ports,i had to re install back all the keyts,my issue is really weird,my 16 gbs flash drives run Up to 5 Gb/sec but my 32gbs flash drives run Up to 480 Mb/sec


What kexts did you have to "re install" and why?

If you created a USBPorts.kext, why not upload it so we can check it for you?

Are those "write" speeds or "read"? There can be a lot of variations in speed between brands of USB sticks. Some are good, some are bad. I even have write problems with genuine Sony flash-drives. They seem fine for read though.

:)
 
Hey everyone!

Thanks @UtterDisbelief for the extensive guide and all the other guidance you give to us lost Mac-lovers:). I've been running my hack for a while now, and decided to finally do something about the lack of WiFi & BT after messing around with a cheap card for a bit, and bought a new Fenvi HB1200, which was said to work OOB. Sadly, the BT didn't (although the WiFi is great). I read online that the card shouldn't need any kexts, and that adding them would only decrease its functionality. So I reckoned the problem must be the USB configuration, a task I had been putting off for a while. I just mapped my ports, and edited my configuration using your great guide. But I still can't get the Bluetooth to work. Do you have any idea for something else I could try? I'll attach my CLOVER folder, IOreg, bootlog & created files from my Hackintool adventure!
 

Attachments

  • bootlog.txt
    48.1 KB · Views: 58
  • iMac IOservice.ioreg
    5.6 MB · Views: 54
  • CLOVER.zip
    8.5 MB · Views: 40
  • USB Ports kext.zip
    5 KB · Views: 42
Back
Top