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
  • 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 的发行包中找到,也可以从黑苹果星球整理好的文件中获取:

已有269946次阅读

「注意」

  • 开始定制前,建议拔掉所有 USB 设备,仅保留鼠标键盘(建议插到 USB2.0 接口);
  • 本文提供了两种定制方法,一种生成 USBMap.kext,另一种生成 UTBMap.kext
    • 两种方法的区别:USBMap.kext 使用 macOS 原生类进行定制,定制完成直接使用不需要其他文件
    • UTBMap.kext 使用 USBToolbox 自有类进行控制,使用时必须搭配 USBToolbox.kext 才能正常工作

 

Windows 定制过程

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

已有269946次阅读

最后,生成的 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 定制文件不生效;

已有269946次阅读

把文件添加到你的 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,使用 ProperTreePlistEdit 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 多控制器多端口的用户要如何取舍。

如有问题,欢迎提出。

 

 

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

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

62 评论

  1. 学习学习!准备定制3.0的USB

  2. 这个usb定制工具在firpe下面可以用不。 我的电脑没安装win10

    1. 理论上可以的

  3. 请问主板接口太多了,能不能把USB2.0的删除,只保留USB3.0?

    1. 可以的,但是建议保留至少1个纯2.0口

  4. 大佬 为什么我的主板只能识别出4个
    主板是
    七彩虹 CVN B560M GAMING PRO

  5. 超过了 15 个怎么办,不知道删除哪一个

    1. 优先剔除无效的和不常用的

  6. type-c 2.0有的也不能删,比如苹果手机充电线type-c那边的头就是2.0的,一些c to c的键盘也是2.0的😂😂😂

  7. 学习学习!准备定制USB

  8. windows 下载文件没有看见呢?

    1. https://heipg.cn/apps/usbtoolbox-0-0-9.html

  9. 学习学习!准备定制x99的USB

  10. 定制USB没一点用,不知道哪里出问题了!

发表回复