Skip to content

Removing USB Port Limit on macOS 26 #364

@Wate321

Description

@Wate321

USB Port Limit Removal Guide (Translated)
XhciPortLimit
Enable XhciPortLimit:
Open OpenCore’s config.plist, go to Kernel -> Quirks, find XhciPortLimit, and set it to True.
OpenCore will apply a patch to the AppleUSBXHCIPCI driver at boot time to allow more than 15 ports.
Removing USB Port Limit on macOS 26
This limitation stems from macOS’s XHCI driver, which restricts each controller to a maximum of 15 USB ports.
Tutorial Overview

  1. Load the macOS kernel cache (BootKernelExtensions.kc) using IDA Pro and analyze the com.apple.driver.usb.AppleUSBXHCI driver.
2. Locate the instruction controlling the USB port limit (e.g., cmp reg, 0Fh) and change 0Fh to 3Fh (i.e., increase from 15 ports to 63).
3. Similarly, modify the relevant functions in IOUSBHostFamily to loosen verification.
4. Convert these changes into binary patches (patched bytes).
    Required Tools
    IDA Pro: https://www.123pan.com/s/HQeA-Ay1Sh
Follow the usage instructions provided with the software for installation.
    I. Locating the Driver File
  2. Open Finder → Go to Folder... → /System/Library/KernelCollections
2. Copy BootKernelExtensions.kc to the desktop.
    II. Common Operations Demonstration
    Loading Driver from Kernel Collection:
- Drag BootKernelExtensions.kc into the IDA Pro window.
- Choose "Apple XNU kernelcache for X86_64 (single kext)"
- Locate com.apple.driver.usb.AppleUSBXHCI in the list.
- Wait until the bottom left shows "idle" indicating loading is complete.

Function Search:
- Right-click → Quick filter → Enter function name

Toggle Views:
- Press Spacebar

Search for Values:
- Search menu → Immediate value... → Enter value → Find all occurrences

Edit Instruction:
- Right-click 0Fh → Choose Assemble... → Change to 3Fh → Enter → Confirm highlight
    Convert to Patch Code
    Edit → Patch program → Patched bytes

Example Patch:
A = Previous 2 instructions:
 44 89 F3
 E9 6A 01 00 00

B = Modified:
 41 83 FE 3F

C = Next 2 instructions:
 0F 83 7C 08 00 00
 41 8D 5E 01

D = Original instruction:
 41 83 FE 0F

Search Pattern = A + D + C
Replace Pattern = A + B + C
    III. Patch for com.apple.driver.usb.AppleUSBXHCI
  • Load com.apple.driver.usb.AppleUSBXHCI
- Find:
 AppleUSBXHCI::createPort(...) → search 0x0F → modify to 3F
 AppleUSBXHCI::createPorts(void) → search 0x0F → modify cmp instruction to 40h
    IV. Patch for com.apple.iokit.IOUSBHostFamily
    Locate:
- AppleUSBHostPort::setPortLocation(...)
- Search for 0x0F
- Modify cmp instructions to 40h
- Other occurrences to 3Fh

Apply all four patches and restart the software.

USBs.docx
11.docx

Metadata

Metadata

Assignees

No one assigned

    Labels

    errorError or typo in the guides

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions