前言
本文最后修改时间:2021 年 5 月 27 日,推荐使用新方法在 Windows 下定制
黑苹果安装好 macOS 后,定制 USB 端口也是一项必不可少的操作。
很多新手看到装好系统后插个 U 盘可以正常工作就再不管了,其实这是因为配置好的引导工具里包含了 USB-Inject-All 等驱动,默认开启十多个 USB 端口,但这样是不对的,因为自动开启可能没有正确识别你的主板 / 笔记本电脑上各个端口的类型,进一步还可能带来供电管理问题,长期使用有可能会损坏 USB 端口(可能性不高,但是有)。
本文将介绍一种目前较为简单通用的方法(兼顾 OpenCore)进行 USB 端口定制,除特殊情况外,可解决大部分机型的 USB 定制需求。如果未能解决你的问题,请见谅。
准备工作
- 一个 USB3.0 和一个 USB2.0 接口的 U 盘
- USBInjectAll.kext:调试 / 注入 USB 端口需要的驱动,@Rehabman 更新到了 0.7.1 版,@Sniki 的分支更新到了 0.7.5 版
- Hackintool.app:堪称黑苹果里的瑞士军刀
- Clover Configurator.app:针对 Clover 方法
- OpenCore Configurator:针对 OpenCore 方法,和 Plistedit Pro 二选一
- Plistedit Pro.app:针对 OpenCore 方法,和 OpenCore Configurator 二选一
- SSDT-USB(x).aml:这是每套 EFI 都应该有的
其中需要单独说明的是 SSDT-USB(x).aml 文件,OpenCore 使用了大量的 ssdt 以支持黑苹果的各个功能,其中和 USB 息息相关的 EC 设备也是如此,根据你的硬件平台不同,使用的 ssdt 文件也应该不同。这些文件可以从 OpenCore 的发行包中找到,也可以从黑苹果星球整理好的文件中获取:
已有 174817 次阅读
开始定制之前,把所有外置 USB 设备全部拔下,仅保留键盘鼠标(插在 USB2.0 接口)。
OpenCore 引导的 USB 定制方式
下面这个部分将同时展示使用 Plistedit Pro 和 OpenCore Configurator 的 USB 定制方法,二选一即可,老手推荐 Plistedit Pro,新手推荐 OpenCore Configurator。默认你已经把 USBInjectAll.kext 放到了 OpenCore 引导的驱动目录:/EFI/OC/Kexts。如果 config.plist 中没有启动驱动,参阅下图:
然后,开启所有 USB 端口,见图:
接下来,在 NVRAM 的 Add 下 7C436110-AB2A-4BBB-A880-FE41995C9F82 添加引导参数:-uia_exclude_ss
config.plist → NVRAM → Add → 7C436110-AB2A-4BBB-A880-FE41995C9F82 → boot-args
这是一个 USBInjectAll 的启动参数,意思是不启动 USB3.0 接口支持(HS=HighSpeed,这里指 USB2.0,SS=SuperSpeed,这里指 USB3.0)。
- 「重要提示」演示机的主板除了 USB2.0 和 USB3.0 以外还有第三方 USB3.1 总线,为方便演示,采取分别屏蔽 USB2.0 和 USB3.0 的步骤,如果你的不是 X99、X299 系列等动不动就二十多个 USB 接口的主板,可以不用分别屏蔽,直接跳到下面 Hackintool 插拔 U 盘环节;
- 「重要提示」如果不分别屏蔽,在插拔过程中可能出现以下情况:U 盘插入 USB2.0 端口,Hackintool 里 HS 和 SS 端口同时亮起,请先确认插入的是正确的 USB2.0 端口(见上图),确定是 USB2.0 的情况下删除 Hackintool 里亮起的 SS 端口;如果插入 USB3.0 端口,Hackintool 里同时亮起 HS 和 SS 端口,先找纸笔记录下来,例如:
- 主板后置 01(编号自定,你自己知道指的是哪个口就行):亮起 HS01 和 SS01;
- 主板后置 02:亮起 HS02 和 SS02;
- 主板后置 03:亮起 HS03 和 SS03;
- ……以此类推
- 这是因为 USB3.0 接口同时兼容 USB2.0,因此存在同一接口不同通道的情况。但是这样一来,中高端主板很容易出现 USB 端口总数超 15 个的情况,此时可根据你之前的端口笔记适当删除主板后置 USB2.0 的兼容通道。
然后保存退出,重启。
重启后,运行 Hackintool 开始插拔 U 盘步骤,切换到 USB 选项卡,见图:
这时应该出现类似下图的显示:
这个时候,所有显示的接口都是 USB2.0,接下来拿出准备好的 U 盘,把主机所有的 USB2.0 接口都插拔一遍(包括键盘鼠标,机箱前面板和后挡板所有的 USB2.0 接口),速度不宜过快,最好插上去看一下系统有没有反应,如果系统挂载了 U 盘,弹出,再插下一个端口。全部插拔一遍以后,你会发现插拔过的接口会显示绿色。
已有 174817 次阅读
桌面上会生成以下三个文件,代表两种不同的打补丁方式,这里推荐使用 kext。把生成的 USBPorts.kext 放到 /EFI/OC/Kexts 目录。
到这里基本上就完成了,现在需要回到 config.plist,删除上面添加的启动参数:
uia_include=HS01,HS02 -uia_exclude_hs
然后编辑 config.plist,主要是禁用 USBInjectAll,启用刚生成的 USBPorts。
保存 config.plist,重启。到这里 USB 端口定制完成。
Clover 引导的 USB 定制方式
鉴于 Clover Configurator 已经成熟可靠,Clover 定制方法采用 Clover Configurator + Hackintool。默认你已经把 USBInjectAll.kext 放到了该放的地方,如果没有,运行 Clover Configurator,挂载 EFI 分区,并把 USBInjectAll.kext 放到 Clover 的驱动文件夹:/EFI/Clover/kexts/other
接下来,需要开启 Clover 引导 USB 端口限制,运行 Hackintool,见图:
图中由上往下第 1 - 2 是解锁 USB 端口限制补丁,剩下的是设备重命名补丁。如图所示 EHC 和 XHCI 重命名补丁根据自己的主板选择,演示主板是 Z370 可以只用 XHCI 重命名,但加上也没有影响。如上图所示,在第四步点击应用后,会导出 config.plist 文件,可直接覆盖 EFI 分区中 Clover 的配置文件(Hackintool 会自动备份原文件)。重启系统,运行 Clover Configurator,切换到引导参数一栏,添加引导参数:
-uia_exclude_ss
该参数的意思是关闭 USB3.0 支持(SS=SuperSpeed,指 USB3.0;HS=HighSpeed,指 USB2.0)
- 「重要提示」小编的电脑主板和机箱除了 USB2.0 和 USB3.0 以外还有第三方 USB3.1 总线,为方便演示,采取分别屏蔽 USB2.0 和 USB3.0 的步骤,如果你的主板不是 X99、X299 系列,可以不用分别屏蔽,直接跳到下面 Hackintool 插拔 U 盘环节;
- 「重要提示」如果不分别屏蔽,在插拔过程中可能出现以下情况:U 盘插入 USB2.0 端口,Hackintool 里 HS 和 SS 端口同时亮起,请先确认插入的是正确的 USB2.0 端口(见上图),确定是 USB2.0 的情况下删除 Hackintool 里亮起的 SS 端口;如果插入 USB3.0 端口,Hackintool 里同时亮起 HS 和 SS 端口,先找纸笔记录下来,例如:
- 主板后置 01(编号自定,你自己知道指的是哪个口就行):亮起 HS01 和 SS01;
- 主板后置 02:亮起 HS02 和 SS02;
- 主板后置 03:亮起 HS03 和 SS03;
- ……以此类推
- 这是因为 USB3.0 接口同时兼容 USB2.0,因此存在同一接口不同通道的情况。但是这样一来,中高端主板很容易出现 USB 端口总数超 15 个的情况,此时可根据你之前的端口笔记适当删除主板后置 USB2.0 的兼容通道。
然后保存退出,重启。
重启后,打开 Hackintool,并切换到 USB 选项卡,删除所有端口并刷新,此时应该仅显示 HS01..HS02..HS03 等十多个端口,见图:
此时应该类似下图显示:
这个时候,所有显示的接口都是 USB2.0,接下来拿出准备好的 U 盘,把主机所有的 USB2.0 接口都插拔一遍(包括键盘鼠标,机箱前面板和后挡板所有的 USB2.0 接口),速度不宜过快,最好插上去看一下系统有没有反应,如果系统挂载了 U 盘,弹出,再插下一个端口。全部插拔一遍以后,你会发现插拔过的接口会显示绿色。
已有 174817 次阅读
桌面上会生成以下三个文件,代表两种不同的打补丁方式,这里推荐使用 kext。把生成的 USBPorts.kext 放到 /EFI/Clover/kexts/other 目录。
到这里基本上就完成了,现在需要启动 Clover Configurator,切换到引导参数界面,删除上面添加的启动参数:
uia_include=HS01,HS02 -uia_exclude_hs
把 /EFI/Clover/kexts/other 目录中原来的 USBInjectAll.kext 删除,或备份到其它地方即可,定制完成。
解决休眠 / 唤醒 USB 供电方法参考
这部分内容已经过时,OpenCore 使用 SSDT 修正供电参数
- 如果你的 USB 端口定制正确,Hackintool 生成的最终文件中应该已经 已经包含解决休眠供电的补丁。如果无效,则参考以下部分。
- 为了节省电池,笔记本电脑多数都要经历解决休眠问题的痛苦,而台式机黑苹果不建议使用休眠功能,休眠后大概率会遇到 USB 接口断电不能自动恢复的问题,这里提供解决休眠 USB 供电的思路。
- Hackintool 生成的 USBPorts.kext 其实是一种“Codeless Kernel Extensions”,字面意思是无代码核心扩展(简称 codeless kext),其核心作用是使新设备与现有驱动程序匹配。
- codeless kext 是不包含可执行文件的核心扩展包(kext bundle),其中 info.plist 的 IOKitPersonalities 节点(字典类型)会在遇到匹配的新设备时使之与现有的驱动程序(kext)匹配。而后者都必须具有一个可执行文件。codeless kext 通常与用于驱动用户的 USB 和 HID 设备(HID:Human Interface Device,例如触摸板,手柄等)。由于内核驱动程序(kext)实现了标准协议,因此这些类别中的几乎所有设备都可以使用它。
- 在这个例子中,USB 端口上的 U 盘共享 macOS 提供的通用驱动程序 AppleUSBMergeNub.kext。在 U 盘连接到计算机后,USBPorts.kext 匹配到 USB 设备后将加载 AppleUSBMergeNub.kext 来驱动它。下图是生成的 USBPorts.kext 中的 IOKitPersonalities 截图:
已有 174817 次阅读
如有错误,欢迎指正。
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后 24 小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到 QQ 群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!
黑苹果星球 » 使用 Hackintool 定制黑苹果 USB 端口,适用于 Clover & OpenCore
