Contribute
Register

Mojave 10.14.4 Port Limit Removal Patch

Status
Not open for further replies.
Joined
Aug 30, 2018
Messages
1,467
Motherboard
Asus ROG Strix Z390 I-Gaming
CPU
i7-8700K
Graphics
Vega 64
Mac
  1. MacBook
Classic Mac
  1. 512K
  2. iMac
Mobile Phone
  1. iOS
Some people say there might be memory error by allowing port number to go above 15. That is not true because AppleUSBXHCI actually read hardware registers to allocate memory, for example activeDeviceSet is constructed from Max Device Slots value in HCSPARAMS1. Port limit checks can be safely removed. People might wonder why the first place to limit ports is in AppleUSBXHCI not AppleUSBXHCIPCI. Well, AppleUSBXHCIPCI constructs ports property and calls super class (AppleUSBXHCI) method to enumerate ports. If ports property is defined, only ports listed will be constructed. If no such property exists, AppleUSBXHCI goes through all capabilities defined in the controller. That means by deleting all ACPI USB port definitions, all ports will be enumerated!

The only credit I claim for the following patch is having great search skills :)

10.14.4 Port Limit Removal Patch by PMHeart

Seems to work perfectly but more testing needed to confirm full functionality.

com.apple.iokit.IOUSBHostFamily
83FB0F0F 870B0400 00
83FB3F0F 870B0400 00
USB Port Limit Patch 1 ©PMHeart
10.14.4

com.apple.driver.usb.AppleUSBXHCI
4183FF0F 0F839404 0000
4183FF3F 0F839404 0000
USB Port Limit Patch 2 ©PMHeart
10.14.4

com.apple.iokit.IOUSBHostFamily
83E30FD3 E34109DF
83E33FD3 E34109DF
USB Port Limit Patch 3 ©PMHeart
10.14.4

Plist code below if you prefer:

Code:
<dict>
                <key>Comment</key>
                <string>USB Port Limit Patch 1 ©PMHeart</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                g/sPD4cLBAAA
                </data>
                <key>InfoPlistPatch</key>
                <false/>
                <key>MatchOS</key>
                <string>10.14.4</string>
                <key>Name</key>
                <string>com.apple.iokit.IOUSBHostFamily</string>
                <key>Replace</key>
                <data>
                g/s/D4cLBAAA
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>USB Port Limit Patch 2 ©PMHeart</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                QYP/Dw+DlAQAAA==
                </data>
                <key>InfoPlistPatch</key>
                <false/>
                <key>MatchOS</key>
                <string>10.14.4</string>
                <key>Name</key>
                <string>com.apple.driver.usb.AppleUSBXHCI</string>
                <key>Replace</key>
                <data>
                QYP/Pw+DlAQAAA==
                </data>
            </dict>
            <dict>
                <key>Comment</key>
                <string>USB Port Limit Patch 3 ©PMHeart</string>
                <key>Disabled</key>
                <false/>
                <key>Find</key>
                <data>
                g+MP0+NBCd8=
                </data>
                <key>InfoPlistPatch</key>
                <false/>
                <key>MatchOS</key>
                <string>10.14.4</string>
                <key>Name</key>
                <string>com.apple.iokit.IOUSBHostFamily</string>
                <key>Replace</key>
                <data>
                g+M/0+NBCd8=
                </data>
            </dict>
 
Or just build a proper SSDT and not have these issues of USB3 ports not working. It only takes 10-15 minutes and saves a lot of hassle in the future as each .x is released.
 
Or just build a proper SSDT and not have these issues of USB3 ports not working. It only takes 10-15 minutes and saves a lot of hassle in the future as each .x is released.
it would make sense :)
 
Or just build a proper SSDT and not have these issues of USB3 ports not working. It only takes 10-15 minutes and saves a lot of hassle in the future as each .x is released.

I just realized something, are you saying that if I build a custom SSDT I am NOT limited to 15 ports? If that's the case that is the way to go for sure!
 
I just realized something, are you saying that if I build a custom SSDT I am NOT limited to 15 ports? If that's the case that is the way to go for sure!

Yes, this is true. Follow @RehabMan's guide to creating a custom SSDT and you can define them all. However what is explained is that you should also "-uia_exclude" and "-uia_ignore" surplus ones to get down to the 15 :thumbup:
 
I already have one and it's included in my post for people who don't want to use PLRP but still limited to 15 ports so limited functionality.
15 ports as per Apple design
 
If you have an ASUS motherboard you can always use my kext free USB3 SSDT guide.

I do need to update it and also publish the Gigabyte version.
 
Status
Not open for further replies.
Back
Top