EliteMacx86

Administrator
Staff member
Joined
Jul 22, 2018
Messages
3,424
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

An EliteMacx86 Exclusive Guide - This guide covers fixing of USB Ports on macOS

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: BIOS Settings
The BIOS settings have been provided in a separate thread. For more information on BIOS settings, refer to the thread linked below.

STEP 2: Fixing EC and USB Power
To enable USB ports, you'll need to fix EC and USB Power.

1. Download the OpenCore boot loader 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

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


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

STEP 3: Adding ACPI Renames
The first step is to add the ACPI renames for USB functionality.

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.
4548433245483032Rename EHC2 to EH02*
  • Renames EHC2 to EH02 for proper USB functioning.
  • This rename is required for fixing USB Ports with EHCI Controller.
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
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.
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.

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.


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
  • XCI-Unsupported.kext
Intel600 Series
  • 7AE0:8086
  • XHCI-Unsupported.kext
ASMedia
  • 2142:1B21
  • ASMedia.kext


NOTES:
  • For 9 series USB controllers, you can use XHCI-Unsupported.kext
  • For macOS Big Sur 11.2.3 and earlier, select XhciPortLimit under Kernel for OpenCore and for Clover, under Quirks.
  • For macOS Big Sur 11.3 and later, uncheck XhciPortLimit under Kernel for OpenCore and for Clover, under Quirks.

STEP 4: Add Missing Controller
For 600 Series USB XHC Controller, you need 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 5: Adding Required Kext
The next step is to add the required kexts to enable USB ports.

1. Download USBInjectAll 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.
  • If the kext is already present in the directory, replace them with a new version
  • 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.
  • If your system requires any additional kext than USBInjectAll, you must use the required kexts.

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 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

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.

Mapping USB Ports
To map your USB ports, follow the guide linked below.
 
Last edited:

Similar threads

Forum statistics

Threads
673
Messages
7,057
Members
5,913
Latest member
timmckey