Contribute
Register

macOS Catalina 10.15.0 - USB Port-Limit Removal Patch

Thanks for your support, UtterDisbelief. Since I have no idea how to go forward from here, I have attached a zipped copy of my CLOVER folder, less the contents of "doc," misc," "themes," and "tools." (Hopefully that just reduced the size of the file, but not any of its necessary functions.) Would you please look at it and let me know if you see anything, like unchecked or checked boxes in config.plist, or any of the other contents that could block the port limit removal procedure from going through? I would definitely appreciate it!
(P.S.) All the stuff in the right-hand panel with triangles open look to be consistent as far as for numbers and port "count."

Hey, that EFI looks pretty darn good. :thumbup: Nothing unnecessary or pointless.

Not related to your USB issues, but I would select the tick-boxes I've highlighted here:

Plug1.jpg

Then Save and Reboot etc. These two changes will improve CPU power-management and fix bounce awake (in some cases) from shutdown.

Back to USB ...

There are no SSDT's or USBPorts.kext in the EFI folder but you do have USBInjectAll.kext and the PLRP in place. This set up should be expected to give you HS01 to HS14 and SS01 to SS08 + USR1 and USR2 (probably)

HOWEVER ... Let's get complicated for a second or two:

USBInjectAll.kext is set up for the 8086:a12f device ID of the H170/Z170 Skylake chipsets. BUT the H170 implements two less USB3 ports than the Z170. USBInjectAll only has one entry per device ID, as you'd expect, so this explains why your earlier IORegistryExplorer output showed HS01-HS13 and SS01-SS10 + the USRs. The device ID seems to be the same for both, which to me is a bit odd and illogical.

Whether this causes knock-on problems I simply don't know. But this might explain why you get either SS01 or USR1 on occasion, because they come directly after the HS** ports in the address scheme.

As to why no USB3 (SS**) ports are appearing with that setup, I don't know. The PLR-Patch you are using is correct for Catalina.

There has to be a reason we are not seeing, but ... as yet I haven't spotted it, despite all the digging we've been doing. Just double-check no kexts have slipped into the Library/Extensions folder.

:)
 
There has to be a reason we are not seeing, but ... as yet I haven't spotted it, despite all the digging we've been doing. Just double-check no kexts have slipped into the Library/Extensions folder.

As a matter of fact... this computer has been given to my next-door neighbor, and I have it back on loan to try and fix the USB issue.

I note that he has an anti-virus program installed called "Bit Defender." There are indeed more extensions in Library/Extensions than I had in there originally. Three in particular are related to the anti-virus program: "File Protect.kext," "SelfProtect.kext," and "TMProtection.kext." I have contacted the neighbor and am waiting to see if he would consent to me temporarily uninstalling "Bit Defender." Haven't heard back yet.

In case you think there might be a problem with one or more of these current extensions, I have attached a zipped screenshot of "Extensions" below. I would appreciate comments if you have any. Once again, thank you very much for your time and support!
 

Attachments

  • Library:Extensions.jpg.zip
    73.5 KB · Views: 79
I slimmed down the /Library/Extensions folder after getting approval from my neighbor to uninstall "Bit Defender." No change either after the uninstallation or after the slim-down. Current /Library/Extensions zipped screenshot attached.
 

Attachments

  • :Library:Extensions.jpg.zip
    30.6 KB · Views: 72
Does the Terminal command <sudo mount -uw /> have to be input prior to the USB Port Limit removal procedure? My impression is that nothing in this procedure tries to write on the System volume of the APFS container. Is that wrong?
 
Does the Terminal command <sudo mount -uw /> have to be input prior to the USB Port Limit removal procedure? My impression is that nothing in this procedure tries to write on the System volume of the APFS container. Is that wrong?

Hi there.

Your Library/Extensions folder is clean enough :thumbup:

If you install any 3rd-party kexts to the main Catalina drive, yes you need to run the Terminal script and make the disk Read/Write for the duration. Also check your SIP settings.

My preference is to install either USBInjectAll.kext or USBPorts.kext in EFI/CLOVER/kexts/Other, but I know others disagree with me. (If you do decide move your own, don't forget to rebuild the kextcaches while read/write is in operation).

:)
 
I tried running Kext Utility, which was successful doing everything except the last item which is working the kextcache. I think that utility might not be appropriate for Catalina. So I downloaded Onyx for Catalina and ran maintenance after using Hackintool to mount the System volume. None of that had any effect on IORegistryExplorer output. Still 14 HS ports and USR1 are the only active ones. I'm going to try the Hackintool procedure described in their "Help" page (attached below). The first sentence seems to be relevant and may explain why the port limit removal patch doesn't work... it's a MacOS thing, starting with MacOS 10.14.1+ I guess. But why hasn't it affected other folks in this thread?

USB Port Patching.jpg
 
Last edited:
I tried running Kext Utility, which was successful doing everything except the last item which is working the kextcache. I think that utility might not be appropriate for Catalina. So I downloaded Onyx for Catalina and ran maintenance after using Hackintool to mount the System volume. None of that had any effect on IORegistryExplorer output. Still 14 HS ports and USR1 are the only active ones. I'm going to try the Hackintool procedure described in their "Help" page (attached below). The first sentence seems to be relevant and may explain why the port limit removal patch doesn't work... it's a MacOS thing, starting with MacOS 10.14.1+ I guess. But why hasn't it affected other folks in this thread?

View attachment 439587

Simply because their first sentence is not true ?

Also they are ill-informed about certain Device IDs and and don't explain the difference between XHCI and EHCI controllers.
 
Last edited:
I tried the above attachment's procedure. Didn't need steps 3 or 6, but otherwise everything through step 12 worked fine. Step 13 excludes the hs ports, which means the keyboard and trackball are unresponsive, since HS05 is not loaded. And if I first exclude hs and add "uia include=HS05" in the same Options line, all of the HS ports come back along with the USR1, with no SS ports.

So I ran steps 4,5, and 7-12 again and got all the desired HS ports green. Then I "exported" that state to a file. But I cannot find a way to select boot arguments that enable my keyboard and trackball (HS05) and disable all the other HS ports. I have to do that to have "room" for the SS ports, and I was planning to "import" the desired (green) HS ports back in with the desired SS ports.

I need some way to "bring in" the SS ports to Hackintool's listing after getting the desired HS ports as attached below, but I can't figure out how to do that. I can't create a USB ports.kext with just the HS ports... I need the SS ports too! The attachment below is as far as I can get; Step 12 completed. How do I magically get the SS ports to show up on this listing?

Hackintool Port List.jpg
 
Last edited:
... But I cannot find a way to select boot arguments that enable my keyboard and trackball (HS05) and disable all the other HS ports. I have to do that to have "room" for the SS ports, and ...

Again, another omission in their instructions at point 13.

As @RehabMan explains in his original guide you can use the following sequence of command options, otherwise the keyboard and mouse will indeed be disabled as you discovered:

"... boot with -uia_exclude_hs uia_include=HS05 to test SSxx and USRx ports" .

Otherwise just list all the other individual HS** ports you wish to exclude except HS05. For example:

-uia_exclude=HS01,HS02,HS03,HS04,HS06 - etc.
 
Last edited:
Thanks again, Utter Disbelief. The quote from RehabMan doesn't work... I do retain use of the keyboard and trackball, i.e. HS05 is indeed enabled, but Hackintool still shows all the HS ports in its listing. Back to square 1. I will try your alternate approach now.

[Edit: Nope, neither suggestion works. Returning to Hackintool I get all HS ports plus USR1, and in IORegistryExplorer I get the same list I have always had. Mounting the System volume via <mount -uw /> in Terminal immediately after each reboot does not help, even though the command is accepted in Terminal (but only if I precede it with <sudo>).]
 
Last edited:
Back
Top