EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
3,644
Motherboard
Supermicro X11SPA-T
CPU
Intel Xeon W-3275 28 Core
Graphics
2xAMD RX 580 8GB
OS X/macOS
11.0.x
Bootloader
  1. OpenCore
Mac
  1. Mac mini
  2. MacBook Pro
Mobile Phone
  1. Android
  2. iOS
How to Fix USB Ports on macOS

This guide covers fixing of USB Ports on macOS. By following this guide, you'll be able to fix your USB Ports on macOS. This guide is applicable for both Desktops and Laptops and supports Clover and OpenCore Bootloader.

Overview


When using macOS, the USB ports may not work as desired. This is due to missing the Device ID of the USB Controller present in your system, no renames available and incorrect or no power properties available. macOS expects certain renames and power properties for the USB ports to work.

Fixing USB Ports


To fix the USB ports, follow the steps below.

STEP 1: Setup BIOS
The very first step is to set up BIOS to have the USB Ports Enabled on your System. Follow the steps below to set up your BIOS for USB Ports.

1. On your target computer, boot to BIOS. Refer to your user manual for the BIOS Key
2. Set the following parameters as shown.

SettingsValueNotes
Legacy USB SupportEnabledEnables USB Support during System Boot when the operating system isn't fully loaded
USB 3.0 SupportEnabledEnables USB 3.0 Support
OnBoard USB 3.0 ControllerEnabledEnables USB 3.0 Controller (Typically non-Intel Chipsets such as AsMedia or FrescoLogic)
EHCI Hand-offAuto/EnabledEnables USB 2.0 Ports
Depending on your System's BIOS, use one of the Values available
XHCI Hand-offEnabledEnables USB 3.0 Ports

3. Save & Exit Setup

NOTES:
  • The above settings are for USB only. See BIOS Settings for more information.
  • If your system does not have any of the above settings in BIOS, ignore such settings.

STEP 2: Fix EC and USB Power
To enable USB ports, you'll need to fix EC and USB Power. To fix EC and USB Power, follow the steps below

1. Download the OpenCore Bootloader from the downloads section of this forum.
2. Copy the USB SSDT as per your platform (reference given below) from Docs>AcpiSamples>Binaries
3. Mount your ESP

For Clover:
If you're using Clover, copy SSDT to EFI/Clover/ACPI/patched

For OpenCore:
If you're using OpenCore, copy SSDT to EFI/OC/ACPI. You'll also need to add the ACPI entry in ACPI>Add section of your config.plist

SSDT Reference

PlatformSSDT
PenrynSSDT-EC
LynfieldSSDT-EC
ClarkdaleSSDT-EC
NehalemSSDT-EC
WestmereSSDT-EC
Sandy BridgeSSDT-EC
Ivy Bridge and Ivy Bridge-ESSDT-EC
HaswellSSDT-EC
Haswell-ESSDT-EC-USBX
BroadwellSSDT-EC
Broadwell-ESSDT-EC-USBX
SkylakeSSDT-EC-USBX
Skylake-X/WSSDT-EC-USBX
Kaby LakeSSDT-EC-USBX
Coffee LakeSSDT-EC-USBX
Comet LakeSSDT-EC-USBX
AMD RyzenSSDT-EC-USBX


NOTE:
  • For HEDT series CPUs, including AMD, it's recommended to use the Prebuilt SSDT from Dortania.

STEP 3: Add ACPI Renames
The next step is to add the ACPI renames for USB functionality. To add the ACPI renames for USB, follow the steps below.

1. Depending on the Bootloader you use, add the following patch in the ACPI section of your config.plist. For Clover, it is Acpi>DSDT. For OpenCore, it is ACPI>Patch.

ACPI Renames
Depending on the system type, use the ACPI renames in your config.plist.

FindReplaceCommentNotes
4548433145483031Rename EHC1 to EH01*
  • Renames EHC1 to EH01 for proper USB functioning.
  • This rename is required for fixing USB Ports with EHCI Controller.
  • Required for Broadwell and older.
  • Avoids conflicts with built-in port injectors for Apple computers.
4548433245483032Rename EHC2 to EH02*
  • Renames EHC2 to EH02 for proper USB functioning.
  • This rename is required for fixing USB Ports with EHCI Controller.
  • Required for Broadwell and older.
  • Avoids conflicts with built-in port injectors for Apple computers.
4548433045483032change EHC0 to EH02
  • Renames EHC0 to EH02 for proper USB functioning.
  • This rename is required for 5 Series Motherboard.
  • Do not use if your motherboard doesn't have EHC0
  • Avoids conflicts with built-in port injectors for Apple computers.
4555534245483031change EUSB to EH01*
  • Renames EUSB to EH01 for proper USB functioning.
  • This rename is required for HEDT Series Motherboard.
  • Only required for X79 systems.
  • Avoids conflicts with built-in port injectors for Apple computers.
5553424545483032change USBE to EH02*
  • Renames USBE to EH02 for proper USB functioning.
  • This rename is required for HEDT Series Motherboard.
  • Only required for X79 systems.
  • Avoids conflicts with built-in port injectors for Apple computers.

NOTES:
  • The EHC renames must be used in conjunction to enable the proper USB renaming.
  • *Requires both renames for full function.
  • The above renames are only required upto Broadwell.

STEP 4: Add Required Kext
The next step is to add the required kext to enable USB Ports. Until you map USB Ports, it is strongly recommended to use this kext. Once mapped, it is advised to remove this kext.

1. Download USBInjectAll.kext from the downloads section of this forum.
2. Mount your ESP.

For Clover:
If you're using Clover, copy the kext to EFI/Clover/Kext/Others

For OpenCore:
If you're using OpenCore, copy the kext to EFI/OC/Kexts. You'll also need to add the kext entry in the Kernel section of your config.plist.

NOTES:
  • Download the latest version for better support.
  • Download only the RELEASE.zip file.
  • If the kext is already present in the directory, replace them with a new version
  • This kext does not work on AMD Systems.
  • For 400 series, 0.7.6 or later is required.
  • For 500 series, 0.7.7 or later is required.
  • For 600 series, 0.7.8 or later is required.

3. Save your config.plist

QUICK INFO:
  • If you have any USB Controller which requires additional kexts (see the reference table below) add the required kexts accordingly.

USB Controllers needing additional Kext(s)
For a few USB controllers, you may need to add additional kext(s) to enable USB Port.

ControllerSeriesDEV ID:VEN IDKexts
Intel7 Series
  • 1E31:8086
  • FakePCIID.kext
  • FakePCIID_XHCIMux.kext
Intel8 and 9 Series
  • 9C31:8086
  • 9CB1:8086
  • 8C31:8086
  • 8CB1:8086
  • 8D318086
  • FakePCIID.kext
  • FakePCIID_XHCIMux.kext
IntelX99 Series
  • 8D31:8086
  • XHCI-unsupported.kext
Intel200, X299 Series
  • A2AF:8086
  • XHCI-unsupported.kext
Intel300 Series
  • 9DED:8086
  • A36D:8086
  • 02ED:8086
  • XHCI-unsupported.kext
Intel400 Series
  • A3AF:8086
  • 34ED:8086
  • 06ED:8086
  • XHCI-unsupported.kext
Intel500 Series
  • 43ED:8086
  • A0ED:8086
  • XCI-Unsupported.kext
Intel600 Series
  • 7AE0:8086
  • XHCI-Unsupported.kext
ASMedia
  • 2142:1B21
  • ASMedia.kext


NOTES:
  • For 9 series USB Controller (8CB1:8086), you can also use XHCI-Unsupported.kext

STEP 5: Add Missing Controller
This step is only required for 600 Series users. For 600 Series USB XHC Controller, you need to add 600 Series Controller info. Follow the steps below to add the controller info.

1. Download XHCI-Unsupported.kext from the download section of this forum.
2. Right click on XHCI-Unsupported.ket and select Show Package Contents
3. Open Info.plist from Contents folder.
4. Find the line 126 and add the following
XML:
<key>AppleUSBXHCISPT 600</key>
        <dict>
            <key>CFBundleIdentifier</key>
            <string>com.apple.driver.usb.AppleUSBXHCIPCI</string>
            <key>IOClass</key>
            <string>AppleUSBXHCISPT</string>
            <key>IOPCIPauseCompatible</key>
            <true/>
            <key>IOPCIPrimaryMatch</key>
            <string>0x7ae08086</string>
            <key>IOPCITunnelCompatible</key>
            <true/>
            <key>IOProbeScore</key>
            <integer>900</integer>
            <key>IOProviderClass</key>
            <string>IOPCIDevice</string>
        </dict>
5. Save the Info.plist file.

STEP 6: Enable XHCI Port Limit
The next step is to enable XHCI Port Limit which will enable all the ports on a system. To enable XHCI Port Limit, follow the steps below.

1. Mount your ESP.

For Clover:
If you're using Clover, enable XhciPortLimit in the Quirks>Kernel section of your config.plist

For OpenCore:
If you're using OpenCore, enable XhciPortLimit in the Kernel>Quirks section of your config.plist

2. Save your config.plist

NOTE:
  • Due to the broken PortLimit Quirk on Big Sur 11.3 and above, enabling the XhciPortLimit will enable USB 3.0 ports and disabling will enable all USB 2.0 ports.

STEP 7: Setup SMBIOS
The next step is to set up an appropriate SMBIOS for your system. To set up SMBIOS for your system, follow the guide linked below.

STEP 8: Restart your System
After performing all the above steps, restart your system for the applied changes to take effect.

STEP 9: Map your USB Ports
The final step is to map your USB Ports. To map your USB ports, follow the guide linked below.
 
Last edited:
  • Like
Reactions: oldman20

Trending Threads

Forum statistics

Threads
720
Messages
7,471
Members
6,299
Latest member
acaballeroa