USB定制新姿势:Windows下定制黑苹果USB接口详细攻略
前言
本文最后更新:2023/3/14
2022/2/10 更新:陆续接到很多同学反馈 USBMap 定制方法完成后,在高于 11.6 以上的系统中 USB 3.0 失效。针对情况黑苹果星球制作提供一个 kext 补丁,链接放在文件准备说明处,支持 9 系,x299、200、300、400、500、600 系主板,如有遗漏的主板,请联系交流群群主。
2022/3/24 更新:补丁已更新,添加了一个上一版本遗漏的设备 id。
2023/3/14 更新:补丁版本更新,添加了一个上一版本遗漏的设备 id,添加了 700 系主板的设备 id。
一年多前写了一篇使用 Hackintool 定制 USB 接口的方法,时过境迁,其中内容虽然现在仍然有效,不过现在出现了更方便的方法,且自 macOS Big Sur 11.3 正式版更新后,OpenCore 的 USB 相关 Quirks(直译是“怪癖”) XhciPortLimit 失效,导致黑苹果无法使用超出 15 个以上的 USB 端口。
究其原因,其实是 macOS 本身限制了每个 USB 控制器有 15 个端口上限,可能是苹果觉得 0x0F(15) 比 0xFF(255) 更加简洁,也可能是因为苹果的自家产品就没有使用超过 15 个 USB 端口的场景。
这里可能有人要说了,“不对呀,我的白果用 USB 扩展坞加起来妥妥超过 15 个呀?”其实使用 USB 扩展坞,单个 USB 端口理论上最大可以扩展出 127 个接口,但无论扩展多少,它们都是共用同一个 USB 通道接入系统,因此可被视为一个 USB 端口。另外,Mac Pro 用户如果通过 PCI 扩展卡增加另一组 USB 接口,这个 PCI 扩展卡上的 USB 控制器也会有它自己的 15 个端口限制。
光说可能比较难理解,这里做了个简单的思维图来说明上述几种情况的区别(不包括雷电):
其实这也是好事,毕竟 XhciPortLimit 强行打开超 15 个端口,就像在超出纸张范围的地方写上内容,总归是有问题的,不应太过依赖这个特性。但是这样一来,定制 USB 就成了黑苹果的必修课,好在最近有大神开发了一款 USB 定制工具,使用非常方便,定制 USB 不再像 Hackintool 那么麻烦。接下来演示如何通过 Windows 定制黑苹果的 USB 端口文件。
「注意」早期非英特尔制造的 USB3.0 控制器可能无法在新一点的 macOS 中正常驱动使用,例如瑞萨电子 UPD720202(0x00151912),此控制器主要见于第三第四代酷睿平台。在确认 EFI 配置文件正确的情况下,此类控制器如果遇到无法驱动的情况那就真的是无法驱动了。
准备工作
- 一个 USB3.0 接口的 U 盘
- 因为 USB3.0 同时向下兼容 USB2.0 接口,因此 Windows 定制只需要一个 USB3.0 的 U 盘
- 如果你的设备有 Type-c 接口,一并准备好 Type-c 接口的 U 盘
- 如果没有 Windows 系统准备在 macOS 定制,还需要 USB2.0 的 U 盘
- OpenCore Configurator
- 根据你的 OpenCore 版本选择 OCC 版本
- 不喜欢 OCC 的话,OCAuxiliaryTools 或 ProperTree 也是极好的
- Hackintool:用以验证定制结果
- USBToolBox:USB 接口发现及 USBMap.kext 生成工具
- Windows 10 系统
- Windows 系统在后面要说的定制过程中相比 macOS 优势实在太明显,因此强烈建议使用 Windows 10 系统
- USBToolBox 对 Windows 8 和 Windows 7 支持度不佳
- SSDT-USB(x).aml:这是每套 EFI 都应该有的
- SSDT-RHUB.aml:某些主板的 ACPI 确定存在问题,需要使用此文件进行修复调整,例如华硕 B460、部分微星 B460 等
其中需要单独说明的是 SSDT-USB(x).aml 文件,OpenCore 使用了大量的 ssdt 以支持黑苹果的各个功能,其中和 USB 息息相关的 EC 设备也是如此,根据你的硬件平台不同,使用的 SSDT 文件也应该不同。这些文件可以从 OpenCore 的发行包中找到,也可以从黑苹果星球整理好的文件中获取:
「注意」
- 开始定制前,建议拔掉所有 USB 设备,仅保留鼠标键盘(建议插到 USB2.0 接口);
- 本文提供了两种定制方法,一种生成 USBMap.kext,另一种生成 UTBMap.kext;
- 两种方法的区别:USBMap.kext 使用 macOS 原生类进行定制,定制完成直接使用不需要其他文件
- UTBMap.kext 使用 USBToolbox 自有类进行控制,使用时必须搭配 USBToolbox.kext 才能正常工作
Windows 定制过程
软件使用 Python 编写,并且打包成了单文件,因此部分反病毒软件(例如 Windows Defender)可能报告文件存在风险,无视即可。
最后,生成的 USBMap.kext 会出现在软件的目录里,拷贝下来,或使用 Diskgenuis 等软件把它拷贝到 EFI 目录。
如果选择直接回到 macOS,手动把 USBMap.kext 放到 EFI 目录:
- Clover 放到 /EFI/CLOVER/Kexts/Others(或其它数字命名的文件夹如果你知道是起什么作用的话)
- OpenCore 放到 /EFI/OC/Kexts/
最后,OpenCore 还需要把文件添加到 config 中,并启用:
此时可以取消 USBInjectAll.kext 了,XhciPortLimit 在 11.3 以上系统已失效就不要勾选了。
最后重启生效。
macOS 定制过程
macOS 的定制过程和 Windows 大致相同,但是这里提供一个不同选项的定制方案。下载的 USBToolBox 存在 Windows 和 macOS 两个压缩包,解压缩 macOS 的包,直接丢到终端运行,界面和设置和上述 Windows 方法一致。
「但是」这里我们尝试使用 USBToolBox 提供的类接管,不再使用苹果原生的类 AppleUSBHostMergeProperties。运行脚本,首先按 C 进入设置界面,做如下更改:
「提示」Bind Companions 可开可不开,因为在 macOS 里这个脚本无法识别 USB2.0 和 3.0 的绑定关系,笔者实测开和不开最终结果都一样。
下一步就是发现端口,和 Windows 操作方法一致:
下一步,设置各个端口的类型,过程和 Windows 方法完全一致:
最后按 K 生文件,你会发现,该方法生成的文件是「UTBMap.kext」而不是 「USBMap.kext」。UTB 笔者猜测应该是 UsbToolBox 的意思。下一步是把文件加入到你的 config.plist 中进行测试。
「注意」
- 如果选择生成 UTBMap.kext,则还需要搭配 USBToolBox.kext,否则没有作用;
- 如果使用 USBToolBox.kext,如果你有 SSDT-RHUB.aml 之类会修改 USB 相关 ACPI 的文件,请把它们停用,否则 USB 定制文件不生效;
把文件添加到你的 config.plist 中,重启即可测试是否见效:
笔者实测结果如下:
如果你对上述方法结果不满意,笔者之前还写过一篇使用 Hackintool 定制 USB 接口,可参考「使用 Hackintool 定制USB接口」,这里随便再讲下思路:
- 如果你的 macOS 没有升级到 11.3 ,那还好,打开 XhciPortLimit,加入 USBInjectAll.kext,重启后即可开始定制;
- 如果 macOS 已经升级到 11.3 及以上,那就需要分别定制 USB2.0 和 USB3.0 接口,这个过程中接口的绑定关系处理比较麻烦;
验证定制结果
重启后,运行 Hackintool,切换到 USB 选项卡,然后使用 USB3.0 的 U 盘挨个插入各个端口验证有效性和连接速率,这里还需要一个 USB2.0 的 U 盘(或键盘鼠标)来验证 USB2.0 的有效性。
如果验证完发现有些接口错误或不需要,可以编辑 USBMap.kext,在文件上右键 → 显示包含内容:
进入 Contents,使用 ProperTree 或 PlistEdit Pro 打开 Info.plist 文件:
然后根据 Hackintool 的验证结果来决定删除哪个接口:
根据上图所示,Type-c 的 USB2.0 接口(图中 HS04)如果接口总数太多的话可以舍弃,因为 Type-c 几乎没有 USB2.0 的设备。
到这里 USB 新定制方法结束。
常见问题
Q:定制文件没用,USB 接口列表怎么定制都没有变化?
A:常见于 华硕 或 微星 B460 系列主板,如果你使用 USBMap.kext 方法,还需要搭配 SSDT-RHUB.aml 使用;如果你使用 UTBMap.kext 方法,不需要搭配 SSDT-RHUB.aml,且理论上不应该会遇到这类问题。
Q:USB3.0 定制无效?
A:确定以下内容:
- 你的主板是否需要 ACPI 里的重命名补丁,例如 EHC/XHCI(一般老机器需要)
- 是否使用了正确的 SSDT-EC-USB(x).aml 文件
- 主板是否需要 SSDT-RHUB.aml
- 你选择了 USBMap.kext 方法还是 UTBMap.kext 方法?后者还需要搭配 USBToolBox.kext 使用
- 以防有的人不仔细看文字,UTBMap.kext 方法笔者列在了 macOS 定制方法部分,Windows 定制笔者使用的是 USBMap.kext 方法
尾声
这个新的定制方法整个流程比原来使用 Hackintool 效率高了太多,并且接口类型识别,USB3.0 和 2.0 的绑定关系变得非常容易处理,笔者一次完成,根据其工作原理来看整个流程出错概率非常低,强烈推荐此方法。顺带吐槽一下苹果的单控制器 15 端口的限制,笔者这台机器物理上的接口非常少可以说非常丐了,可是随便一插拔总数就达到了 12 个,难以想象 X99/X299/X570 多控制器多端口的用户要如何取舍。
如有问题,欢迎提出。
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!
黑苹果星球 » USB定制新姿势:Windows下定制黑苹果USB接口详细攻略
定制后取消USBInjectAll.kext,usb就全不能用了,请大神解答一下,谢谢
注意UTBMap.kext和USBMap.kext的区别
这是两种完全不同的定制模式
前者必须搭配USBToolBox.kext才能用
您好,我是使用USBmap.kext,也加入了SSDT-USB(x) ,会不会是其他ssdt冲突导致的,还希望您给予帮助,谢谢。
具体情况具体分析,没看到具体设置前,先报一下配置
USBXHCIFixup.kext加了没有
12900KF、ROG STRIX Z690-A GAMING WIFI D4、16g 3600hz、蓝宝石6600xt.
USBXHCIFixup.kext 以加,还请您赐教。
感谢为盼。
已经加你了,注意看下消息
我也是这个情况,10700k,华硕TUF z490 wifi,32g2666,6600xt,macOS 13.6.8 (22G820)
我情况和楼主一样 - -