自从macOS Mojave 10.14.1发布以来,黑苹果方面出现了一个很讨厌的bug,USB降速。连接USB 3.0U盘或移动硬盘速度会显示为480MB/s,也就是USB2.0的速度。以往的解决方案大都需要安装10.14.0,比较麻烦。现在放出免安装10.14.0的USB解决方案。
Bug成因
自从macOS Mojave 10.14.1发布以来,传统的解除USB15端口数量限制补丁失效,导致USB端口数量超过15的主板发生USB识别混乱,USB 3.0无法识别。
准备工作
- 黑苹果常用工具,不赘述。
- FBPatcher。
- macOS Mojave 10.14.0安装U盘。
解决方案前提
确保在10.14.0下USB正常。
解决方案主导思想
在10.14.0安装盘环境下提取数据,再进入系统实际定制。
解决方案
打补丁
- 下载usbinjectall.kext备用,链接如下:
https://bitbucket.org/RehabMan/os-x-usb-inject-all/downloads/ -
使用Clover Configurator挂载EFI分区,将下载的usbinjectall.kext放到/EFI/CLOVER/kexts/Other下,如图。
- 使用Clover Configurator挂载EFI分区并打开config.plist文件,在左侧栏Kernel and Kext Patches下的KextsToPatch中打如下补丁,如图。
Name: com.apple.driver.usb.AppleUSBXHCI
Find: 83FB0F0F 83030500 00
Replace: 83FB0F90 90909090 90
Comment: disable port limit in XHCI kext (credit PMHeart)
MatchOS: 10.14.0
- 重启电脑。
macOS Mojave安装盘环境下提取USB端口数据(至关重要)
- 进入macOS Mojave 10.14.0安装盘。
- 菜单栏中点击实用工具->终端打开终端。
- 输入如下命令打开FBPatcher,如图。
/Volumes/Mojave/Applications/FBPatcher.app/Contents/MacOS/FBPatcher
-
分别用USB 2.0和USB 3.0设备将所有USB接口插一遍,插过的接口FBPatcher会显示绿色。如图即为USB端口数据。博主的USB端口数据为: HS02、HS03、HS04、HS05、HS06、HS08、HS09、HS11、HS14、SS01、SS02、SS03、SS04、SS05、SS06、SS08。
- 重启电脑。切记记录好USB端口数据,安装盘环境下不能截图的哦!博主强烈建议拍照,方便以后定制。
按照USB端口数据定制USB
-
进入系统,按照之前提取的USB端口数据,去掉无用端口,如图。
-
检测剩余端口数,如果大于15就要做出取舍。比如博主的是16个USB端口,其中有一个是水冷端口。用于检测水冷状态,macOS下用不到,故去掉,如图。
-
蓝牙内建,Connector改为Internal,如图。
-
导出USBPorts.kexts,如图。
- 将生成的USBPorts.kext放到EFI/CLOVER/Kexts/Other下。也可以打开USBPorts.kext的info.plist文件,将数据集成到FakeSMC下(集成方法在下面)。
- 删除EFI/CLOVER/Kexts/Other下的usbinjectall.kext文件,去掉之前打的解除15端口限制补丁。
- 重启,看看USB是不是满血复活啦!!!
特殊情况
由于10.14.1版本开始USB识别异常,所以可能遇到以下特殊情况。例如在安装盘环境提取数据时存在SS07端口,但是到系统中定制时却找不到SS07端口。遇到这种情况可以先导出USBPorts.kext,打开info.plist,按照其他端口的格式手动添加SS07端口即可。手动添加方法见下文。
USBPorts.kext下info.plist文件解析
info.plist文件结构
info.plist与FBPatcher的数据对应关系
iMacPro1,1-XHC
本字段为机型记录,取决于所选SMBIOS,所以要注意,定制完不要随意修改机型。
HSxx(SSxx)
本字段为端口名称,对应FBPatcher中的Name字段,如图。
UsbConnector
本字段为连接器属性,USB 2.0值为0,USB 3.0值为3,特殊端口(如蓝牙)值为255。UsbConnector对应FBPatcher中的Connetor字段,如图。
port
本字段为端口序号,对应FBPatcher中的Port,格式略有不同,例如FBPatcher中Port为0x0E,则info.plist中port为0E000000,如图。
port-count
本字段为端口数量,最后一个端口的port值即为port-count值,如图。
info.plist中手动添加端口数据
按照上文的对应关系添加数据即可。
将USBPorts.kext中的数据集成到FakeSMC.kext
-
分别打开USBPorts.kext以及FakeSMC.kext的info.plist文件,按照下图操作。
- 删除USBPorts.kext。