Contribute
Register

The New Beginner's Guide to USB Port Configuration

Hi, I'm back! I thought I was done back here, but it seems I can't stay away......

Previous setup and discussion: https://www.tonymacx86.com/threads/...to-usb-port-configuration.286553/post-2145201

So, in summary, I had an Utter Disbelief approved setup in Clover with the exception of HP 11 and HP 13 which I couldn't get rid of. But hey, I was happy. Until....

I recently moved to Open Core with the help of Edhawk in this loooong thread: https://www.tonymacx86.com/threads/graphics-corruption-60hz-on-dp.304330/

However, as that thread shows, I've had problems with my USB since migration, mainly:

  • USB init beeps: When my iPads (two) are attached they beep when USB is initialized during the startup. Under Clover both devices beeped ONCE during that startup, when the progress bar was about half-way done (under the middle of the Apple logo). Now with OC, I get the iPad on the EH01 controller beeping once at the very start of the boot process/progress bar, then again when the progress bar is at the mid-point (same as Clover), for a total of two times (one more than before). For my iPad on the XHC controller, I get an additional (total of three!) beep, with the third beep just after the 2nd beep (just after half-way point). I know this is wrong for sure!

  • Wake from SLEEP: If my computer goes to sleep, four things happen on wake:
    • I get a notice of "Disk not ejected Properly" for my USB HD, and my USB flash drive.
    • USB HD: Comes back after wake.
    • USB Flash drive: No longer seen by system after wake.
    • While not USB related I notice my default NIC no longer works after wake, I need to reset to get it back.

I redid my port mapping from scratch within Open Core and the latest version of Hackintool, and it now looks the same as my previously working Clover setup, except, I have the problems listed above. I'm thinking the problem is not/not USBPorts.kext related?

thanks,
RDP
@RDPRDP

Your USB Configuration is still wrong. The issues I see are as follows:

You have multiple instances of the same port identifier, i.e. 4 x 0x01, 3 x 0x03, 2 x 0x04, 0x05, 0x07 and 0x08.

The only unique port identifier is 0x06.

You have the hubs PR11 and PR21 identified as 'Internal' this is wrong. They are not actual ports, but rather the Hubs the ports are connected through.

As you have the 2 x Hub connections included your kext is trying to activate 16 No ports.

I would recommend you use the SSDT-EHCx-Off.aml attached, to move all your EHC1 and EHC2 ports to the XHC controller. That way you have a chance of getting the ports a unique identity and working correctly. This will in eliminate the PR11 and PR21 hubs from the list. It will also expand the number of HSXX ports.

You will need to remove your current USBPorts.kext and reboot. Clear all the current USB ports and refresh the USB window in Hackintool. This should reset the USBPorts to show them under the XHC controller. The XHC controller should be the only one listed in the upper window on the USB tab in Hackintool. As shown in my Haswell systems setup, screenshot below.

Screenshot 2021-02-20 at 18.29.16.png USB tab with SSDT-EHCx-Off.aml used

Don't try to mix this way of dealing with the USB ports with any other, as all you will do is mess up the USB configuration.

Start a new help thread if you need more assistance.
 

Attachments

  • SSDT-EHCx_OFF.aml.zip
    820 bytes · Views: 32
@Edhawk

I literally have multiple (real Intel and ASMedia -and one might be a piggyback) controllers on my system (around page 82/83 of this thread), but you indicate my ports should all be under XHC, whereas under Clover the way they were presented as three controllers was deemed acceptable. With that noted:

As you can see from the attached I've achieved what you requested by enabling SSDT-EHCx-Off.aml, removing my USBPorts.kext mapping, and making a major BIOS discovery that was preventing my using USB from working on the true XHC ports when SSDT-EHCx-Off.aml was enabled:

  • To get USB (keyboard/mouse) connected on the XHC controller to work doing your method I need to disable "Intel USB2.0 EHCI Controller" in my BIOS, or the ports do not work (took major trial and error testing to find this restriction/requirement).
  • By doing this change I've lost so many physical ports on my system that I was using before without needing hubs. With OC am I limited to just XHC? Or am I confusing what step we might do next?
  • ISSUE: I don't have USB device access until I'm into OSX. With the BIOS changed as above I no longer can access my BIOS, or enter the early boot options menu. The BIOS says "NO KEYBOARD" every boot. Now I've got to figure out how to get in. I can't imagine a setup can be "working" if I can't access the BIOS or early boot menu. Update: I am very luck to have a PS/2 port on my MB, and an old PS/2 keyboard in my closet. So I use that when needed for BIOS and early boot options (which is unsustainable as it doesn't work in OSX).
  • To show you what I really have I've attached a shot from Windows showing the complete map. Note: I do not/not use the ASMedia controllers , just the two Intel and the one XHC port (total of three).
  • To recap: at this juncture I still have the three port renames in my config, and port limit is set to false.

And now, I guess I need to know what I should do next!

thanks,
RDP
 

Attachments

  • Screen Shot 2021-02-21 at 9.07.57.png
    Screen Shot 2021-02-21 at 9.07.57.png
    157.6 KB · Views: 42
  • IMG_5089.JPG
    IMG_5089.JPG
    774.7 KB · Views: 46
  • Capture.PNG
    Capture.PNG
    34.8 KB · Views: 45
Last edited:
Hi there.

First up, the x79 does not have native XHCI, only EHCI.

The ASMedia chipset gives you USB3 and can be - perhaps - activated using GenericUSBXHCI. However it's not guaranteed because the kext was last updated 2015 and knows nothing of Catalina's security. The 1042 is one chip it was designed to work with.

That it gave you power to the ports is a good sign :thumbup:

The card with Fresco Logic FL1100 is still native so should work as intended.

You can modify power delivery using an SSDT and Hackintool might output one for you along with an embedded controller. Export as SSDTs and see.

Depending on how proficient you are at SSDT edits you can alter power delivery for the ASMedia, but it's not easy. The ports should be in IOReg around the PXSX nodes.
Thankyou for your reply!

So i gave this a shot, I made USBPorts.kext as per your guide (although had to do it blind as no power on the usb3 ports) just to see if it changed anything, it didnt unfortunately but i expected that

I tried reverting to GenericUSBXHCI just to test the ports that had power and realised that it must be split between the two main ASmedia hosts, the second supplied power to one of the onboard usb3 ports and to the connected case front case ports, all other usb3.0 ports were ignored. The working USB 3.0s were showing under PXSX in IOregistry

I'm not very experienced with SSDT's so had a google and tried to figure out how to modify power delivery using hackintool but didnt get far. Hackintool also wont list anything other than the EH01 and EH02 ports, so i cant actually see the Asmedia ones, it seems like a really messy setup compared to others ive seen in this guide!

Is there any sources you could point me to for learning how to modify power delivery with SSDTs please?

In all honesty, as I have the FL1100 expansion im not that bothered about getting my on board USB3.0 ports working, but I do want to have the correct configuration to avoid issues and stop using GenericUSBXHCI.

Ultimately i'm still confused as to why i get lower speeds on the FL1100 expansion and the onboard usb3.0 in catalina as opposed to windows, is there any way to check how the configuration is effecting this?
i.e. same drive, same ports, different speeds :/
windows 120MB/s write 90MB/s read
mac 80MB/s write 60MB/s read

Thanks for all your help
 
@Edhawk

I literally have multiple (real Intel and ASMedia -and one might be a piggyback) controllers on my system (around page 82/83 of this thread), but you indicate my ports should all be under XHC, whereas under Clover the way they were presented as three controllers was deemed acceptable. With that noted:

As you can see from the attached I've achieved what you requested by enabling SSDT-EHCx-Off.aml, removing my USBPorts.kext mapping, and making a major BIOS discovery that was preventing my using USB from working on the true XHC ports when SSDT-EHCx-Off.aml was enabled:

  • To get USB (keyboard/mouse) connected on the XHC controller to work doing your method I need to disable "Intel USB2.0 EHCI Controller" in my BIOS, or the ports do not work (took major trial and error testing to find this restriction/requirement).
  • By doing this change I've lost so many physical ports on my system that I was using before without needing hubs. With OC am I limited to just XHC? Or am I confusing what step we might do next?
  • ISSUE: I don't have USB device access until I'm into OSX. With the BIOS changed as above I no longer can access my BIOS, or enter the early boot options menu. The BIOS says "NO KEYBOARD" every boot. Now I've got to figure out how to get in. I can't imagine a setup can be "working" if I can't access the BIOS or early boot menu. Update: I am very luck to have a PS/2 port on my MB, and an old PS/2 keyboard in my closet. So I use that when needed for BIOS and early boot options (which is unsustainable as it doesn't work in OSX).
  • To show you what I really have I've attached a shot from Windows showing the complete map. Note: I do not/not use the ASMedia controllers , just the two Intel and the one XHC port (total of three).
  • To recap: at this juncture I still have the three port renames in my config, and port limit is set to false.

And now, I guess I need to know what I should do next!

thanks,
RDP
No, you are not limited to XHC under OC. I would recommend you re-enable the USB2 controller in the Bios. So all the physical ports are working.

I may just have my head too far up my own rear end, with regards your USB setup. I should know better, what works for one persons system may not work with another. No matter how similar.

The screenshot showing the 8# USB ports under the XHC controller does look good. Pity you can't get them showing like this with the USB2 ports enabled.

Did you extract a USBPorts.kext when you had this setup in place? As I am wondering if this and your other USBPorts kext, containing the USB2 port setup can be joined to proved an all-in-one USB solution to your issues. A bit like when using the USB exclude boot argument options, so all the usable ports are detected and whittled down to those required. Especially as each USB controller can contain up to 15 ports, and this USB3 controller is obviously separate to the EH01 and EH02 USB2 port controllers.
 
Thankyou for your reply!

So i gave this a shot, I made USBPorts.kext as per your guide (although had to do it blind as no power on the usb3 ports) just to see if it changed anything, it didnt unfortunately but i expected that

I tried reverting to GenericUSBXHCI just to test the ports that had power and realised that it must be split between the two main ASmedia hosts, the second supplied power to one of the onboard usb3 ports and to the connected case front case ports, all other usb3.0 ports were ignored. The working USB 3.0s were showing under PXSX in IOregistry

I'm not very experienced with SSDT's so had a google and tried to figure out how to modify power delivery using hackintool but didnt get far. Hackintool also wont list anything other than the EH01 and EH02 ports, so i cant actually see the Asmedia ones, it seems like a really messy setup compared to others ive seen in this guide!

Is there any sources you could point me to for learning how to modify power delivery with SSDTs please?

In all honesty, as I have the FL1100 expansion im not that bothered about getting my on board USB3.0 ports working, but I do want to have the correct configuration to avoid issues and stop using GenericUSBXHCI.

Ultimately i'm still confused as to why i get lower speeds on the FL1100 expansion and the onboard usb3.0 in catalina as opposed to windows, is there any way to check how the configuration is effecting this?
i.e. same drive, same ports, different speeds :/
windows 120MB/s write 90MB/s read
mac 80MB/s write 60MB/s read

Thanks for all your help

Okay. To go deeper and explain - but hopefully not lecture!

Looking at Hackintool, it is not able to locate the ASMedia ports but you know they are PXSX because you found them :thumbup: . You might want to search further to find out what has caused that ASMX controller line, otherwise try and delete it before creating USBPorts.kext or SSDT-UIAC.aml etc.

As for SSDTs for ASMedia power ... There are some great guides but honestly you don't need to torture yourself trying to learn it. The ASMedia ports which control those blue back-panel ports are basically loose-cannons. Yes, GenericUSBXHCI.kext gave you some power delivery but not uniformly. Part of its present unreliability, having not been updated recently. It is possible to write an SSDT to access the power delivery settings for the ASMedia but you have to find the settings in IOReg (as in the guide I linked to) then patch them. You could also examine the source code for GenericUSBXHCI.kext and recompile. BUT that is no fun and would take too long, realistically.

Your add-on FL1100 card should work properly. Nothing to add there except that it is treated by macOS as an external device, just as if it was a card inserted in a real Mac Pro. Therefore its ports do not count in your 15-limit, just the same as the ASMedia.

Moving on to EHCI ...

This is something we can positively address. The IOReg output you uploaded looks wrong at the PR11 entry. It should be a 'hub' not a port, just as PR21 is. The X79 EHCI consists of two hubs from which 6x and 8x USB2 ports would hang. Check Hackintool. PR11's should be HP11 to HP16 and PR21's ports are HP21 to HP28.

So something is causing this. Likely it is an errant kext or ACPI patch. Make sure you do not have FakePCIIDXHCIMux.kext installed. Check EFI as well as Library/Extensions. Check for any other USB-related kexts and SSDTs.

That the FL1100 works better when you run Windows is just down to drivers. Did you install any for Windows or did it, like macOS, have its own built-in?

To go any deeper into this we'd need to see a full IORegistryExplorer export file.

:)
 
@UtterDisbelief not lecture, quite informative, thank you.

@PTuser His setup is as follows:

New OC bootloader v 0.6.6, with all essential third-party kexts moved from /L/E to EFI/OC/Kexts folder. Only a few App installed kexts plus the normal vanilla kexts are present in the /L/E folder.

No extraneous USB kexts in the kexts folder. Here is a Tree view of @PTusers OpenCore EFI folder.
Screenshot 2021-02-21 at 20.55.43.png

This is a screenshot from the Custom SSDT for the Fresco Logic FL1009 and FL1100 USB ports.
All four USB3 ports work as expected.
Screenshot 2021-02-21 at 20.55.08.png FL1009 device

Screenshot 2021-02-21 at 20.54.48.png FL1100 device

This is a screenshot from the Custom SSDT for the X79 Board, which includes entries for EUSB to EH01 and USBE to EH02. These were previously EUSB to EHC1 and USBE to EHC2 but it has recently been edited to use the EH01 and EH02 USB device names.
Screenshot 2021-02-21 at 20.53.16.png USB settings in SSDT

Previous Hackintool screenshots and IOReg's didn't show the Asmedia USB ports in that fashion. Previously the Asmedia ports were not all shown in any Hackintool USB window/screenshot.

That is why when I saw the XHC controller with all 8 USB ports active I said it looked really good. It is why I got so wrapped up in the idea of using a USBPorts.kext with these ports active, alongside the previous Intel USB instance to create a combined USBPorts.kext. So both the Intel USB2 and Asmedia USB3 ports were activated via one USBPorts.kext.
 
@UtterDisbelief not lecture, quite informative, thank you.

@PTuser His setup is as follows:

New OC bootloader v 0.6.6, with all essential third-party kexts moved from /L/E to EFI/OC/Kexts folder. Only a few App installed kexts plus the normal vanilla kexts are present in the /L/E folder.

No extraneous USB kexts in the kexts folder. Here is a Tree view of @PTusers OpenCore EFI folder.
View attachment 510124

This is a screenshot from the Custom SSDT for the Fresco Logic FL1009 and FL1100 USB ports.
All four USB3 ports work as expected.
View attachment 510123 FL1009 device

View attachment 510122 FL1100 device

This is a screenshot from the Custom SSDT for the X79 Board, which includes entries for EUSB to EH01 and USBE to EH02. These were previously EUSB to EHC1 and USBE to EHC2 but it has recently been edited to use the EH01 and EH02 USB device names.
View attachment 510121 USB settings in SSDT

Previous Hackintool screenshots and IOReg's didn't show the Asmedia USB ports in that fashion. Previously the Asmedia ports were not all shown in any Hackintool USB window/screenshot.

That is why when I saw the XHC controller with all 8 USB ports active I said it looked really good. It is why I got so wrapped up in the idea of using a USBPorts.kext with these ports active, alongside the previous Intel USB instance to create a combined USBPorts.kext. So both the Intel USB2 and Asmedia USB3 ports were activated via one USBPorts.kext.

Very interesting, thank you :thumbup:.

It would be useful to know how the DSDT implementation differs for the 3rd-party USB controllers. The Asus and Gigabyte motherboards use two different ones for USB3 - the ASMedia 1042 for the Asus Rampage IV Extreme and the Fresco FL1009 chipset for the Gigabyte X79-UP4.

Fresco's FL1100 should be native in Catalina and Big Sur. It seems a great survivor with Apple, featuring as the USB3 controller for M1 Macs, so we might expect it to be recognised as internal except for the fact it is in a PCI slot, which I guess macOS spots, hence the need for XHC5 in your SSDT.

Sadly I don't have one to play with!

:)
 
No, I doubt many people have, as the Gigabyte X79-UP4 board is fairly old.

I will converse with PTuser and see what we can come up with regarding his USB Configuration, and drop you a note once we have something to report. But in a separate thread.
 
Sadly I don't have one to play with!

I bought two of these from this seller for about 7 dollars each by making an offer they accepted.
Doesn't look like they take offers on the UK site. This worked great with my Z68 Gigabyte mobo which doesn't have a USB 3.0 header and the existing 3.0 ports will not work. It lets you connect up your front USB 3.0 case ports. Very handy to have for an older Gigabyte Z68 system that still runs like a top.
 
Last edited:
I recently bought one on Amazon in the UK (£19), for my son's MSI Z97-GD65 board. As the USB3 header's pins have been damaged, forcing the header with the connecter not aligned correctly. The only way to get the Fractal Design R5 front USB ports working in macOS and Windows was with one of these cards.

As you say very good for boards which don't have USB3 or have damaged or malfunctioning USB3 headers.
 
Back
Top