您的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.0HS **端口,USB3.0 / 3.1SS **端口。如您所见,单个物理USB3端口在我们的15个限制中算作2个端口,因为可以插入任何一种类型的设备。

对主板上的每个端口重复此过程,并在某处进行记录。

这是我为Z370M-D3H主板制定的两个计划:

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

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

最终列表如下:

步骤4)导出我们的配置文件

在上方的屏幕抓图中选择我用红色圆圈圈出的图标,以导出所有工作:

最后的USBPorts.kext是我们想要的文件。另外两个对于其他配置方法很有用,但是我们今天不需要它们。

 

步骤5)安装我们的配置并进行清理

如果你仍然有EFI分区安装,那么你可以:

四叶草 -删除USBInjectAll.kext,取而代之的是USBPorts.kextEFI/CLOVER/kexts/Other。通过使用Clover Configurator编辑或在“禁用”框中打勾,从config.plist中删除PLR修补程序。

支持OpenCore -删除USBInjectAll.kext,取而代之的是USBPorts.kextOC / 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 ConfiguratorOpenCore 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适用于构建器的实用工具的出色工具箱。在本指南中,我们仅涉及其功能的一部分。