前言
macOS 对其可识别的 USB 端口数量有所限制,这可能会导致某些端口速度较慢甚至无法工作。USBMap 是一个 Python 脚本,它可以帮助您创建自定义的驱动,通过在 macOS 的限制范围内映射所有端口,确保所有端口都能正常工作。
- USBMap的特性
- 不依赖 USBInjectAll.kext
- 支持映射 XHCI(芯片组、第三方和 AMD)、EHCI、OHCI 和 UHCI 端口
- 支持映射 USB 2 HUB(需要 HUB 的父端口使用类型 255)。
- 根据类名而不是端口或控制器名称执行匹配。
- 允许用户为发现过程中最后看到的填充端口设置昵称。
- 通过会话 ID 聚合连接的设备,而不是使用损坏的端口寻址
- 可以使用最佳猜测方法生成 ACPI 来重命名控制器或根据需要重置 RHUB 设备
macOS 每个控制器最多支持 15 个 USB 端口。在原生 Mac 上,这些端口直接映射到物理端口。但是,其他主板的端口数量可能多于实际使用的端口数量,导致 macOS 默认使用检测到的前 15 个端口。这通常会导致物理端口只能达到 USB 2 的速度,因为 USB 3 端口的编号大于 15。USBMap 允许您创建针对您的系统定制的 kext,确保忽略不存在的端口,并将所有物理端口的数量控制在 15 个端口的限制范围内。
之前也写过两篇USB定制的文章,如果你使用macOS Tahoe 26之前老版本的黑苹果,这两篇文章教程依然适用
- Windows下定制黑苹果USB接口USBToolBox定制https://imacos.top/2022/08/22/windows-usb-macos-bigsur-11-3-usbtoolbox/
- 使用USBMAP工具制作自定义USB3.0端口https://imacos.top/2021/09/12/0908-2/
因 macOS Tahoe 修改了 USB 相关部分代码,macOS系统安装完成后 USB 需要重新定制,且原有所有定制工具失效,目前可以使用USBMap定制,可以使用正式版https://github.com/corpnewt/USBMap,也可以使用实验版本https://github.com/corpnewt/USBMap/tree/tahoe-test.文章中用到的工具,可以在本文中下载地址中获取.
视频教程
操作步骤
1.开始前准备
- 准备USB2.0/3.0硬件设备,如果有type-c的口,也要准备type-c口对应2.0/3.0的硬件设备
- 确保删除或禁用任何其他 USB 相关的驱动(例如 USBInjectAll.kext、USBToolBox.kext、USBPorts.kext、另一个 USBMap.kext 等),因为它们可能会干扰此过程
- 从 USBMap 的主菜单运行可以
R. Reset All Detected Ports
清除任何先前的映射信息并重新开始 - 清除以上两点之后重启电脑
2.加载虚拟映射框架
- 双击打开USBMap.command(注:如打开提示“未打开“USBMap.command” Apple 无法验证“USBMap.command"是否包含可能危害Mac安全或泄漏隐私的惡悠软件。”解决方式也很简单,直接在“设置”-“安全与隐私”-“安全性”-找到“已阻止“USBMap.command”以保护Mac。”-“仍要打开”),
- 先执⾏主菜单中的"D. Discover Ports"(端⼝探测)功能,让⼯具识别您的 USB 控制器,识别后按“Q”返回主菜单
- 通过主菜单选择"K. Create USBMapDummy.kext"创建虚拟驱动,在同目录中Results文件夹中会自动生成USBMapDummy.kext
- 将⽣成的 USBMapDummy.kext 放⼊ EFI/OC/Kexts ⽬录,同步在 config.plist 的 Kernel -> Add 部分添加该驱动
- 重启电脑加载虚拟映射框架基础
3.端⼝探测
- 再次打开USBMap.command进入主菜单选择
D. Discover Ports
,将 USB 2 和 USB 3 设备分别插入每个端口,每次插入建议等待5秒左右,让脚本在每次插入后刷新。您可以使用“N”键为端口指定昵称,以便于识别。 - 注意:此时可能不会显示所有端⼝,因为 macOS 每个控制器仅能识别前 15 个端⼝
- 成功加载虚拟映射时,所有端⼝会显示 UKxx 格式名称(如 UK01、UK02 等)
- 脚本会将发现的端口信息保存在一个文件中,所以您现在可以退出它
4.端⼝配置
- 打开
USBMapInjectorEdit.command
并将 EFI 中的 USBMapDummy.kext 拖到终端窗口按Enter。 - 在每个 IOKitPersonalities 中,禁⽤前 15 个端⼝中⾮键⿏使⽤的所有端⼝(禁用只是暂时的),不要禁用端口 16 至 26,这些特性需要保持启用状态才能继续映射
- 确保你仔细阅读了
USBMapInjectorEdit.command
列出的每个 IOKitPersonality - 重启电脑以应用更新的USB端口映射
5.映射配置导出
- 再次打开USBMap.command进入主菜单,进入
D. Discover Ports
,在所有物理接⼝重复 USB2.0/3.0 设备插拔测试.由于部分端⼝已禁⽤,未连接的设备可能不会显示,完成后按“Q”返回主菜单 - 进入
P. Edit & Create USBMap.kext
菜单并更改类型以匹配物理端口类型(例如,对于标准 USB 2 端口使用“0”,对于 USB 3 Type-A 端口使用“3”。您可以按 T 键查找所有代码)并启用您想要保留的端口(最多不超过 15 个) - 上述完成后选择 K. Build USBMap.kext (Catalina And Newer)生成USBMap.kext
- 将最终构建的 USBMap.kext 替换
EFI/OC/Kexts中原有的虚拟驱动,更新 config.plist 中的驱动配置
注:虚拟注入器 + USBMapInjectorEdit 的步骤允许你使用某种“滑动窗口”进行映射。由于 macOS 每次只能识别每个控制器 15 个端口特性,因此你需要先映射可见的端口,然后禁用一些端口,为下一次扫描腾出空间,然后再重新映射。
附:各端口类型编号说明(0~255)
编号 | 名称 | 含义 / 说明 |
---|---|---|
0 |
Type A connector | 普通的 USB-A 接口(用于 USB 2.0 或 USB 3.0 端口) |
1 |
Mini-AB connector | 较老的 Mini USB 接口,常见于旧数码设备 |
2 |
ExpressCard | 旧式笔记本扩展卡接口,不常见于黑苹果使用中 |
3 |
USB 3 Standard-A connector | USB 3.0 的标准 A 型接口(通常是蓝色接口) |
4 |
USB 3 Standard-B connector | 打印机常用的 USB 3.0 B 型接口(方形) |
5 |
USB 3 Micro-B connector | USB 3.0 的 Micro-B 接口,常见于移动硬盘等 |
6 |
USB 3 Micro-AB connector | 同时兼容 Micro-A 与 Micro-B 的接口 |
7 |
USB 3 Power-B connector | 专用于大功率设备供电的 B 型接口 |
8 |
Type C connector - USB2-only | USB-C 接口,但只支持 USB 2.0 数据传输(常用于主板后面板的一些 Type-C 接口) |
9 |
Type C connector - USB2 和 USB3(带 Switch) | USB-C 接口,支持 USB2 和 USB3,但 USB3 通道通过切换机制 |
10 |
Type C connector - USB2 和 USB3(无 Switch) | USB-C 接口,支持 USB2 和 USB3,且无切换机制(完整并联通道) |
11~254 |
Reserved | 保留,不建议使用 |
255 |
Proprietary connector | 表示内建设备(Internal)内建蓝牙、摄像头等主板内置设备 |
评论0