Contribute
Register

The New Beginner's Guide to USB Port Configuration

Hi there.

What exactly do you mean by "is no longer working" ? Are ports dead? Are there less than you expect? More than you expect? Etc. etc...

Did you use the same system definition back in your original build? MacMini8,1 or iMac14,2 ?

:)

Sorry I should have been clearer - The USB ports work but mostly only at USB 2.0. If I don't have the Port Limit Removal Patch installed I get a total of 15 ports (14 x HS and 1 x SS). After installing the patch I get all 22 ports but as we know the limit should be 15. I want to prune those 22 ports and only use the ones listed below.

1577492429484.png


Currently, I only get HS 01-14 and SS01 even though I have created the custom kext file using the method described in the guide.

Interesting you should mention about the system definition - My original build was with MacMini8,1, but when I was trying to fix my EFI Partition, I ended up installing Clover again and I think that at one point had iMac14,2. But I ended up restoring my config.plist file which made it revert back to MacMini8.1.

Product Name in the config.plist file is currently MacMini8.1. If I go to "About This Mac" it says iMac (27-inch, Late 2013). I thought that actually said MacMini before but can't be certain.

I hope that makes sense.
 
Sorry I should have been clearer - The USB ports work but mostly only at USB 2.0. If I don't have the Port Limit Removal Patch installed I get a total of 15 ports (14 x HS and 1 x SS). After installing the patch I get all 22 ports but as we know the limit should be 15. I want to prune those 22 ports and only use the ones listed below.

View attachment 442289

Currently, I only get HS 01-14 and SS01 even though I have created the custom kext file using the method described in the guide.

Interesting you should mention about the system definition - My original build was with MacMini8,1, but when I was trying to fix my EFI Partition, I ended up installing Clover again and I think that at one point had iMac14,2. But I ended up restoring my config.plist file which made it revert back to MacMini8.1.

Product Name in the config.plist file is currently MacMini8.1. If I go to "About This Mac" it says iMac (27-inch, Late 2013). I thought that actually said MacMini before but can't be certain.

I hope that makes sense.

Hi there.

Yes, look in your SMBIOS. You can see the Product Name is one thing but the BIOS Version another.

Okay, the result you are getting shows that the port-limit removal patch works when in place, or you wouldn't get 22x ports. And that without it you get the standard 15. That's correct.

As to why the number is not being "trimmed" with your kext in place...

Try this experiment (by the way, your choice, please back-up anything vital just in case). Use Hackintool to export the USBPorts.kext and the pair of SSDT files.

Instead of installing USBPorts.kext, remove it and rebuild your kext-caches. Then put the SSDT-UIAC.aml and SSDT-EC.aml files in EFI/CLOVER/ACPI/patched and install USBInjectAll.kext in EFI/CLOVER/kexts/Other.

Make sure you haven't duplicated any of these in L/E. Make sure you've disabled the port-limit removal patch.

Reboot.

See if that makes a difference. Report back etc.

:)
 
Last edited:
Yes, look in your SMBIOS. You can see the Product Name is one thing but the BIOS Version another.
Ah yes I have fixed this up. The BIOS version and serial number were for an iMac14,2 but the Product Name was Macmini. Since I don't want to change my serial number I updated the Product Name so that it now matches the BIOS version and serial number. That's that problem solved :)

Okay, the result you are getting shows that the port-limit removal patch works when in place, or you wouldn't get 22x ports. And that without it you get the standard 15. That's correct.
Correct

Try this experiment (by the way, your choice, please back-up anything vital just in case). Use Hackintool to export the USBPorts.kext and the pair of SSDT files.

Instead of installing USBPorts.kext, remove it and rebuild your kext-caches. Then put the SSDT-UIAC.aml and SSDT-EC.aml files in EFI/CLOVER/ACPI/patched and install USBInjectAll.kext in EFI/CLOVER/kexts/Other.

Make sure you haven't duplicated any of these in L/E. Make sure you've disabled the port-limit removal patch.

Reboot.
Ok, I deleted USBPorts.kext from L/E
Rebuilt cache
Moved SSDT-UIAC.aml and SSDT-EC.aml to patched folder and installed USBInjectAll.kext (v0.7.1) to Other folder.
Both PLRPs are disabled.
Rebooted.
And it worked!
CloverBoot log showed it loading the aml files

12:842 0:003 === [ ACPIPatchedAML ] ====================================
12:983 0:140 AutoMerge pass 2
12:987 0:003 Unsorted
12:990 0:003 Inserting SSDT-EC.aml from EFI\CLOVER\ACPI\patched: size=91 ... Success
13:002 0:011 Inserting SSDT-UIAC.aml from EFI\CLOVER\ACPI\patched: size=699 ... Success
13:013 0:011 ApicCPUNum=1
13:017 0:003 Maximum control=0x1C
13:021 0:003 Turbo control=0x28
13:025 0:004 P-States: min 0x8, max 0x28
13:029 0:003 SSDT with plugin-type without P-States is generated
13:032 0:003 Cleanup XSDT: count=23, length=220
13:036 0:003 corrected XSDT count=23, length=220


And it prepared the extra kext
13:289 0:013 Preparing kexts injection for arch=x86_64 from EFI\CLOVER\kexts\Other
13:293 0:003 Extra kext: EFI\CLOVER\kexts\Other\USBInjectAll.kext (v.0.7.1)


IO reg explorer shows the 15 USB ports I specified, but Hackintool shows all 22 still (I assume this is by design).

As a test, I then moved the USBInjectAll.kext into L/E instead of Other (as it is my understanding that is the correct location for them to be installed permanently. Rebooted and success still!

Ok, what about if I removed the SSDT-EC.aml and SSDT-UIAC.aml files, and installed USBPorts.kext back into EFI/Clover/kext/Other folder again. This time it failed. back to the 15 HS USB ports.

So I wonder why the USBPorts.kext file isn't working for my system... I guess it will be ok to continue using the SSDT.aml files long term or should I persist with trying to get the kext file to work?
 
Ah yes I have fixed this up. The BIOS version and serial number were for an iMac14,2 but the Product Name was Macmini. Since I don't want to change my serial number I updated the Product Name so that it now matches the BIOS version and serial number. That's that problem solved :)


Correct


Ok, I deleted USBPorts.kext from L/E
Rebuilt cache
Moved SSDT-UIAC.aml and SSDT-EC.aml to patched folder and installed USBInjectAll.kext (v0.7.1) to Other folder.
Both PLRPs are disabled.
Rebooted.
And it worked!
CloverBoot log showed it loading the aml files

12:842 0:003 === [ ACPIPatchedAML ] ====================================
12:983 0:140 AutoMerge pass 2
12:987 0:003 Unsorted
12:990 0:003 Inserting SSDT-EC.aml from EFI\CLOVER\ACPI\patched: size=91 ... Success
13:002 0:011 Inserting SSDT-UIAC.aml from EFI\CLOVER\ACPI\patched: size=699 ... Success
13:013 0:011 ApicCPUNum=1
13:017 0:003 Maximum control=0x1C
13:021 0:003 Turbo control=0x28
13:025 0:004 P-States: min 0x8, max 0x28
13:029 0:003 SSDT with plugin-type without P-States is generated
13:032 0:003 Cleanup XSDT: count=23, length=220
13:036 0:003 corrected XSDT count=23, length=220


And it prepared the extra kext
13:289 0:013 Preparing kexts injection for arch=x86_64 from EFI\CLOVER\kexts\Other
13:293 0:003 Extra kext: EFI\CLOVER\kexts\Other\USBInjectAll.kext (v.0.7.1)


IO reg explorer shows the 15 USB ports I specified, but Hackintool shows all 22 still (I assume this is by design).

As a test, I then moved the USBInjectAll.kext into L/E instead of Other (as it is my understanding that is the correct location for them to be installed permanently. Rebooted and success still!

Ok, what about if I removed the SSDT-EC.aml and SSDT-UIAC.aml files, and installed USBPorts.kext back into EFI/Clover/kext/Other folder again. This time it failed. back to the 15 HS USB ports.

So I wonder why the USBPorts.kext file isn't working for my system... I guess it will be ok to continue using the SSDT.aml files long term or should I persist with trying to get the kext file to work?

Good news. Glad it worked :thumbup:

You will be fine using the USBInjectAll.kext and SSDT method. (My earlier guide is based on this ;) )

I wrote this new guide using Hackintool because I really wanted to make use of this superb utility. It allows most of us to 'reduce our footprint' into macOS, and because it's a codeless kext is less likely to fall foul of any new security measures Apple might impose going forward.

But I have seen a few samples like yours, where USBPorts.kext doesn't appear to work as intended - and also Hackintool still reports all available ports even when we've successfully applied our 15-port configuration.

However, it's unfair to complain. The dev has done so much great work - for free. But maybe bugs exist.

As I said at the beginning, as macOS stands right now - 10.15.2 - you will be fine using the SSDTs and USBInjectAll.kext, which one of our Mods has now picked-up and is keeping updated.

:)
 
Last edited:
Good news. Glad it worked :thumbup:

You will be fine using the USBInjectAll.kext and SSDT method. (My earlier guide is based on this ;) )

I wrote this new guide using Hackintool because I really wanted to make use of this superb utility. It allows most of us to 'reduce our footprint' into macOS, and because it's a codeless kext is less likely to fall foul of any new security measures Apple might impose going forward.

But I have seen a few samples like yours, where USBPorts.kext doesn't appear to work as intended - and also Hackintool still reports all available ports even when we've successfully applied our 15-port configuration.

However, it's unfair to complain. The dev has done so much great work - for free. But maybe bugs exist.

As I said at the beginning, as macOS stands right now - 10.15.2 - you will be fine using the SSDTs and USBInjectAll.kext, which one of our Mods has now picked-up and is keeping updated.

:)

Thanks @UtterDisbelief for writing the tutorial and sorry if I'm re-posting the same question again. How can you mark an USB port as internal (like making it 255 in SSDT-UIAC) if some one perfers to use USBPorts.kext?
 
Thanks @UtterDisbelief for writing the tutorial and sorry if I'm re-posting the same question again. How can you mark an USB port as internal (like making it 255 in SSDT-UIAC) if some one perfers to use USBPorts.kext?

Hi there,

With Hackintool it's just a question of using the pull-down menu and changing the port type. You can see the menu selection chevrons in this picture, circled in red:

how2.jpg


... Internal for example being "0xff" or "255".

:)
 
Good news. Glad it worked :thumbup:

You will be fine using the USBInjectAll.kext and SSDT method. (My earlier guide is based on this ;) )

I wrote this new guide using Hackintool because I really wanted to make use of this superb utility. It allows most of us to 'reduce our footprint' into macOS, and because it's a codeless kext is less likely to fall foul of any new security measures Apple might impose going forward.

But I have seen a few samples like yours, where USBPorts.kext doesn't appear to work as intended - and also Hackintool still reports all available ports even when we've successfully applied our 15-port configuration.

However, it's unfair to complain. The dev has done so much great work - for free. But maybe bugs exist.

As I said at the beginning, as macOS stands right now - 10.15.2 - you will be fine using the SSDTs and USBInjectAll.kext, which one of our Mods has now picked-up and is keeping updated.

:)

Thanks! Not complaining at all with the new method and the work that the dev has put into Hackintool. Not to mention your guide. I'm just curious to know why the original .aml file that I created stopped working, but I'm not going to loose any sleep over it.

If I can help you or the dev out with any troubleshooting I'm happy to do so as you are right, it is a great method to fix the USB ports.

Thanks again.
 
Hi there,

With Hackintool it's just a question of using the pull-down menu and changing the port type. You can see the menu selection chevrons in this picture, circled in red:

... Internal for example being "0xff" or "255".

:)

What is the purpose of marking the port as USB3, USB2, Internal etc? When I did the export through Hackintool I just left all Connector types as internal. Should I have been marking some as USB2/USB3?
 
What is the purpose of marking the port as USB3, USB2, Internal etc? When I did the export through Hackintool I just left all Connector types as internal. Should I have been marking some as USB2/USB3?
yes, the point is to set the ports to either usb2, usb3 or internal
 
Sorry if this has been asked before, I tried searching prior to posting. I'm having trouble with my USB3 ports quickly disconnecting with external drives. They seem to mount okay, but disconnect relatively quickly when in use (copying files, sometimes even browsing folders). I tried two different external drives with the same result, but USB3 flash drives appear to work just fine. If I plug the same drives into a USB2 port, everything works fine, just at a lower speed. These drives also work fine on a MacBook Pro. Sort of stumped as to what may be the cause.

I believe unrelated, two entries pop up in the USB section of Hackintool even after I removed them prior to exporting my USBPorts.kext (PR01 and PR12). Initially I had XHC, EHC1, and EHC2. After renaming and adding USBPorts.kext, I'm down to XHC and EH01. Hackintool tells me PR01 and PR12 are both from EH01. Let me know if I can provide anything what would be helpful.

Thanks!
 

Attachments

  • Screen Shot 2019-12-29 at 12.25.37 PM.png
    Screen Shot 2019-12-29 at 12.25.37 PM.png
    129 KB · Views: 73
Back
Top