USB定制新姿势:Windows下定制黑苹果USB接口详细攻略

前言

本文最后更新:2021/6/5

一年多前写了一篇使用 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 盘(不推荐使用 macOS 定制)
  • OpenCore Configurator
  • Hackintool:用以验证定制结果
  • USBToolBox:USB 接口发现及 USBMap.kext 生成工具
  • Windows 10 系统
    • Windows 系统在后面要说的定制过程中相比 macOS 优势实在太大,因此强烈建议使用 Windows 10 系统
    • USBToolBox 对 Windows 8 和 Windows 7 支持度不佳
  • SSDT-USB(x).aml:这是每套 EFI 都应该有的

其中需要单独说明的是 SSDT-USB(x).aml 文件,OpenCore 使用了大量的 ssdt 以支持黑苹果的各个功能,其中和 USB 息息相关的 EC 设备也是如此,根据你的硬件平台不同,使用的 SSDT 文件也应该不同。这些文件可以从 OpenCore 的发行包中找到,也可以从黑苹果星球整理好的文件中获取:

已有5199次阅读

「注意」开始定制前,建议拔掉所有 USB 设备,仅保留鼠标键盘(建议插到 USB2.0 接口)。

 

Windows 定制过程

软件使用 Python 编写,并且打包成了单文件,因此部分反病毒软件可能报告文件存在风险,无视即可。

已有5199次阅读

最后,生成的 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 定制过程

因为之前写过一篇使用 Hackintool 定制 USB 接口,所以这个部分详细步骤就略过了,只说一下大概思路。

  • 如果你的 macOS 没有升级到 11.3 ,那还好,打开 XhciPortLimit,加入 USBInjectAll.kext,重启后即可开始定制;
  • 如果 macOS 已经升级到 11.3 及以上,那就需要分别定制 USB2.0 和 USB3.0 接口,这个过程中接口的绑定关系非常难处理,具体参考旧文「使用 Hackintool 定制USB接口」;
  • 在 macOS 中,直接双击运行 USBToolBox 的 macOS 版本,弹出命令行窗口,其余过程和 Windows 是一样的。

 

验证定制结果

重启后,运行 Hackintool,切换到 USB 选项卡,然后使用 USB3.0 的 U 盘挨个插入各个端口验证有效性和连接速率,这里还需要一个 USB2.0 的 U 盘(或键盘鼠标)来验证 USB2.0 的有效性。

如果验证完发现有些接口错误或不需要,可以编辑 USBMap.kext,在文件上右键 → 显示包含内容:

进入 Contents,使用 ProperTreePlistEdit Pro 打开 Info.plist 文件:

然后根据 Hackintool 的验证结果来决定删除哪个接口:

根据上图所示,Type-c 的 USB2.0 接口(图中 HS04)如果接口总数太多的话可以舍弃,因为 Type-c 几乎没有 USB2.0 的设备。

到这里 USB 新定制方法结束。

 

尾声

这个新的定制方法整个流程比原来使用 Hackintool 效率高了太多,并且接口类型识别,USB3.0 和 2.0 的绑定关系变得非常容易处理,笔者一次完成,根据其工作原理来看整个流程出错概率非常低,强烈推荐此方法。顺带吐槽一下苹果的单控制器 15 端口的限制,笔者这台机器物理上的接口非常少可以说非常丐了,可是随便一插拔总数就达到了 12 个,难以想象 X99/X299/X570 多控制器多端口的用户要如何取舍。

如有问题,欢迎提出。

 

 

0. 本站所有资源解压密码均为 heipg.cn
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!
扫描QQ二维码加入【黑苹果星球交流群】

黑苹果星球 » USB定制新姿势:Windows下定制黑苹果USB接口详细攻略

5 评论

  1. \"但是在这一步无法单独剔除绑定的 2.0 接口,需要修改成品 USBMap.kext,后面验证环节会说明\",我生成的USBMap.kext里面的编号与hackintool对应不起来,不知道删哪个,win下又无法解除绑定,所以我把win下生成的usb.json、settings.json复制到mac下,就可以用win生成的信息配置了。

    1. 忘说了,先要把usb.json里的companion_info全删掉

    2. 赞,办法总比困难多

  2. 求助:升级之前一切正常,昨晚将OC从067升级到069,同时MacOS从11.1升级到11.4,启动到登录界面,键鼠没有响应,在网上看了很多,最大可能就是USB端口,也尝试了USB端口定制更新,依旧没有响应。

    请问能否定位问题并解决,谢谢。

    1. 删除所有注入USB端口相关的SSDT和KEXT,取消XhciPortLimit,建议使用USB接口的键鼠,接入USB2.0的接口,定制的时候留意一下,问题不大

发表评论