您的 PC 主板可能具有比迄今为止生产的任何 Apple Mac 多的 USB 端口。甚至是基本的 Mini-ITX 主板。因此,我们需要减少现有的数量,直到达到与苹果 macOS 期望的数量相符的水平,并确保我们以正确的速度运行,提供正确的电源并在需要时安全地进行装卸,以确保数据安全。
所需的所有“工具”
1. 软件
Disk Utility(磁盘分区工具)
Terminal(终端)
Clover Configurator /OpenCore Configurator / PlistEdit Pro
USBInjectAll.kext
Hackintool
IORegistryExplorer.app
2. 硬件
一个 USB2.0 闪存驱动器
一个 USB3.0 闪存驱动器
操作步骤
步骤 1 - 安装 USBInjectAll.kext 和端口限制删除补丁程序(建议直接安装到引导文件的驱动目录下)
我们需要使 PC 主板拥有所有可用的端口。
要加载隐藏的 EFI 分区,首先需要检查它的磁盘名称。打开我们的磁盘工具。并检查您在这里看到的内容:

在所有 GUID / GPT 分区磁盘的 EFI 文件夹会 之前 ,甚至在主磁盘之前,任何的 APF“集装箱”。上面的图像实际上来自 High Sierra,即使我们还看不到 EFI 分区,它实际上也位于主分区 之前。因为在这种情况下,磁盘的主要区域是“disk0s 2”,所以 EFI 分区将位于“disk0s 1”。(您可以在屏幕抓图中看到的另一个磁盘是我单独的 500GB 数据驱动器。我们忽略了这一点)。
现在我们知道了磁盘的名称,我们可以使用终端 Terminal 命令的方式来加载该隐藏的 EFI 分区:
代码:
sudo mkdir /Volumes/EFI sudo mount -t msdos /dev/disk0s1 /Volumes/EFI
你发现了什么在 你的 EFI 分区将取决于引导加载器使用的是 - 四叶草 clover 或着 OpenCore。都可以。
对于四叶草 - 将 USBInjectAll.kext 复制到 EFI / CLOVER / kexts / Other 中
对于 OpenCore-将 USBInjectAll.kext 复制到 OC / Kexts 中 - 并将新的 kext 节添加到config.plist 中。如果您是 OpenCore 的较早采用者,您将知道必须声明每个 kext 及其可执行文件的路径等。(请参见下面的 screengrab)。
Port_limit 移除补丁
我们先打如下的补丁,使我们的 USB 能正常工作
High Sierra 在 Skylake / 100 系列产品上为 USB 3 提供了一个新的提升端口限制补丁。
这是四叶草的 KextstoPatch 的数据:
代码:
Comment Change 15 port limit to 24 in XHCI kext 10.13 PB1 Find g32MEA== Name AppleUSBXHCIPCI Replace g32MGw==
Comment: Change 15 port limit to 24 in XHCI kext 10.13 PB1
Find: 837D8C10
Name: AppleUSBXHCIPCI
Replace: 837D8C1B
Mojave 适用于 14.1、14.2、14.3、14.5、14.6 的 USB 端口限制补丁
以下修补程序允许根集线器端口限制从 0xf 到 0x3f。
修补程序 1
Comment: USB port limit patch 10.14.x (credit ydeng)
Name: IOUSBHostFamily
Find: c20200e0 83fb0f
Replace: c20200e0 83fb3f
这需要与 AppleUSBXHCI 修补程序一起使用
补丁 2
Comment: USB Port limit patch 10.14.1, 10.14.2,10.14.3
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 00 00 83 FB 0F 0F 83 8F 04 00 00
Replace: 00 00 83 FB 3F 0F 83 8F 04 00 00
补丁 2
Comment: USB Port limit patch 10.14.5,10.14.6
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 4183ff0f 0f839404 0000
Replace: 4183ff3f 0f839404 0000
Mojave 14.1 在 AppleUSBHostPort : setPortLocation 中进行了附加检查,以将最大端口数限制为 0xf。
__text:0000000000015CC6 test ebx, ebx; port number passed in the argument, zero for root hub ports
__text:0000000000015CC8 jnz short loc_15CD2
__text:0000000000015CCA mov ebx, [r12 0D0h] ; port id from port property
__text:0000000000015CD2 loc_15CD2:
__text:0000000000015CD2 mov r14d, 0E00002C2h
__text:0000000000015CD8 cmp ebx, 0Fh ; check port id is not above 0xf
__text:0000000000015CDB ja loc_160F7
macOS Catalina 10.15.0-USB 端口限制删除补丁
对于 Catalina,我们只需要两个补丁,而对于 Mojave,则只需要四个补丁。
第 1 行 -
Name*:com.apple.iokit.IOUSBHostFamily
Find *:83FB0F0F
Replace *:83FB3F0F
第 2 行 -
Name* com.apple.driver.usb.AppleUSBXHCI
Find *:83F90F0F
Replace *:83F93F0F
请记住,您将需要 USBInjectAll.kext 安装,以使其工作。
四叶草 - 在config.plist 中 输入 PLRP。这是在 Clover Configurator 中 查看过的 Catalina。

作为参考,这是使用 PlistEdit Pro 插入的相同补丁。您可以看到有五个Kexts 到 Patch,其中两个是 Catalina PLR-Patch。

对于 OpenCore-将 Quirk“XhciPortLimit”设置为“/ true”。这是 OpenCore Configurator 中的 外观。请参阅下面的内容,了解 PlistEdit Pro 中的 外观。

这是使用 PlistEdit Pro 编辑的相同“Quirk”。很简单:

保存并重新启动
步骤 2)检查您拥有哪些 USB 端口。
运行 Hackintool 并在菜单栏中选择 USB 图标:

不同的芯片组具有不同数量的端口,但是以上内容非常典型。您可以在蓝色突出显示的栏中看到我的 Z370 芯片组。
步骤 3)端口发现
要确定主板上要保留和配置的端口,您需要使用 USB 闪存驱动器测试每个端口,以查看其在 Hackintool 输出中的位置。
这是使用第一个 USB2.0 驱动器 和第二个 USB3.0 / 3.1 驱动器 对同一端口的测试:


物理端口是相同的,但根据插入的设备类型的不同,枚举的方式也有所不同 -USB2.0 是HS **端口,USB3.0 / 3.1是 SS ** 端口。如您所见,单个物理 USB3 端口在我们的 15 个限制中算作 2 个端口,因为可以插入任何一种类型的设备。
对主板上的每个端口重复此过程,并在某处进行记录。
这是我为 Z370M-D3H 主板制定的两个计划:


有了这个,我们现在可以从不需要的 Hackintool 列表中删除端口,这样我们就可以降低到 Apple 规定的神奇数字 15。为此,我们使用 cmd mouse 方法 突出显示不需要的每个端口:

完成此操作后,我们在上面的屏幕截图中用鼠标圈单击我用红色圆圈圈出的“删除”图标。这将删除我们不希望使用或配置的端口。
最终列表如下:

步骤 4)导出我们的配置文件
在上方的屏幕抓图中选择我用红色圆圈圈出的图标,以导出所有工作:

最后的 USBPorts.kext 是我们想要的文件。另外两个对于其他配置方法很有用,但是我们今天不需要它们。
步骤 5)安装我们的配置并进行清理
如果你仍然有 EFI 分区安装,那么你可以:
四叶草 - 删除 USBInjectAll.kext,取而代之的是USBPorts.kext 在EFI/CLOVER/kexts/Other。通过使用 Clover Configurator 编辑或在“禁用”框中打勾,从 config.plist 中 删除 PLR 修补程序。
支持 OpenCore - 删除 USBInjectAll.kext,取而代之的是 USBPorts.kext 在OC / kext 文件 - 不要忘记在修改内核扩展名的config.plist。要删除 PLR 修补程序,请将其编辑为“/ false”,或取消选中该 Quirk-“XhciPortLimit”。
保存并重新启动
步骤 6)完成作业 - 检查您的工作
或者运行 Hackintool 并选择该 USB 图标以查看您的端口,或者运行 IORegistryExplorer 并将左窗格向下滚动到 XHC 部分。

而已。在完成 USB 端口配置方面做得很好!
ps:
1
您的 config.plist 是纯文本格式,称为 xml,您需要文本编辑器对其进行修改。您选择哪种取决于您是否感到满意。许多人推荐 PlistEdit Pro,而其他人则喜欢 A pple 的 Xcode 编辑器。还有许多其他功能,但是无论您选择哪种功能,都必须能够以 纯文本 格式进行编辑,而不仅仅是以富文本格式或某些专有格式进行编辑。如果您知道如何设置,甚至 macOS 的 TextEdit 也可以完成这项工作。
虽然我说明了 Clover Configurator 和OpenCore Configurator的用法引导”,是他们的软件复杂的作品,可以偶尔得到的东西混起来使用(虽然他们 都在积极更新),所以不必依靠他们 conpletely。切记要仔细检查您的工作并经常备份
2
请记住,端口限制删除修补程序 不是 为永久使用而设计的,因为它们会覆盖并超出 Apple 预留给工作的内存区域。可以将您的 USB 端口想像成一盒十二个鸡蛋,两行六个鸡蛋。装满盖子后,便可以安全使用了。如果您在中间再放五个鸡蛋,它们看起来很合适 - 但是现在您无法关闭盖子。鸡蛋可能会破裂。
简而言之,长期使用该补丁程序意味着数据丢失和系统崩溃仅需一小段时间。
3
本教程重点介绍所有现代英特尔芯片组所具有的 XHCI 控制器。一些较旧的主板具有既具有以前的 EHCI 标准又具有更新的 XHCI 的芯片组。即使年龄更大,也可能只有两个 EHCI。如果你看到 3 行 Hackintool 的顶部面板有两个 EHC 和一个 XHC 控制器则 优先考虑 的 XHC,因为这是 USB3.0 的来源。如果您 仅看到两个 EHC 控制器,则您的系统卡在 USB2.0 上。但是,当您进入下一阶段时,可以使用这些端口。因为您需要放置一些在您的config.plist 中重命名。
说明:由于 Apple 在控制可以安装哪些第三方 kexts,因此最初担心使用 任何 形式的 kext 安装来修改 ACPI / USB 端口会在将来被阻止。但是,通过将 USBPorts.kext 放入 EFI / 或 OC / 文件夹中,macOS 不会“看到”它。此外,如果从 Terminal 运行kextstat,您会注意到,尽管其他 kext 对 macOS 可见,但 USBPorts.kext 却不可见。我对此的看法是因为它的容器中没有“可执行文件”。
Hackintosh 适用于构建器的实用工具的出色工具箱。在本指南中,我们仅涉及其功能的一部分。