Hackintosh MAC

使用Hackintool定制USB3.0

Posted on 2019-07-20,5 min read

在macos10.10.X之后,USB最多只能驱动15个端口,多了就没有反应,所以需要使用USB端口限制补丁。但是每当系统更新后这些补丁就会失效,并且使用补丁也会有睡眠问题。所以为了一劳永逸,就需要自己去定制自己电脑的USB,使得可以正常驱动USB3.0并且保证睡眠正常。

usb

驱动成功的USB如上图所示,总共只能有15个端口,HS开头为USB2.0,速度为480m/s;SS开头为USB3.0,速度为5Gb/s,其中HS13为蓝牙。

1. 工具下载

2. 驱动方法

2.1 发现端口

  1. USBInjectAll.kext (用于端口发现) 放入 EFI/CLOVER/kexts/Other

  2. Clover ▸ DSDT 重命名 (如果需要)

    • 方法一:使用Clover Configuration手动添加

      acpi1
    • 方法二:使用Hackintool

      ZzJ7GV.md.png

      确认后会提示是否替换原有config.plist

  3. 使用Kext Utility重建缓存,重新启动

2.2 驱动USB2.0

记住,USB2.0和3.0总共的端口数最多是15个。所以要提前算好哪些端口需要驱动,哪些不需要了要舍弃掉。例如我的主板有6个USB3.0,两个USB2.0,我的机箱有两个USB3.0,一个蓝牙USB2.0端口,没有typec接口。(驱动成功的USB3.0算两个端口,USB2.0算一个端口)。如果我全部驱动成功的话就是8*2+2+1=19个端口。已经超过了15个端口的限制,所以我必须得舍弃一些端口。我的方案是舍弃了主板上的两个USB3.0,这样就只剩下了15个端口,很合理👍

首先先驱动你需要的USB2.0。

  1. 重启之后切换到Hackintool->USB,点击下面的清空全部,再刷新。就会显示你主板ID对应的所有USB接口。我的如下所示

    ZzRYGT.md.png
  2. 使用USB2.0U盘将每个接口都插拔一遍,插上的会显示为绿色。然后将端口号名称与自己的端口位置对应起来,用本子记录📝。(如:HS03对应主板上右侧2.0端口)

  3. 将没有变为绿色的接口全部删除。

    Zzftu4.md.png
  4. 在clover中添加引导参数-uia_exclude_hs uia_include=HS03,HS04。意思是下次启动不包括hs即2.0端口,除了HS03,HS04,要不然下次启动键盘和鼠标都不能用了。添加成功后保存重启。

    ZzhS2T.md.png

2.3 驱动USB3.0

  1. 重启之后的界面。显示了已驱动的2.0和所有的3.0接口。不要🈲️去按刷新和清除所有接口。要不然2.0端口就不显示了,得重新来过。

    ZzhTF1.md.png
  2. 再使用USB3.0的U盘去插拔每一个USB3.0的端口,并记录端口名称与其对应的位置。将没有变绿的端口删掉。最终结果如下:

    Zz4xjU.md.png
    1. 如上图所示为所有驱动的端口,但是macos限制🚫15个端口,上面共有19个,所以我删除了我主板最下方的两个USB3.0端口。这两个端口对应的ss为SS05和SS06,hs对应为HS05和HS06。你的肯定和我不一样,所以需要在前面插拔的时候记录好。删掉这四个接口,就剩下了15个,很稳。

      Zz505n.md.png
    2. 由于我的主板和机箱没有USB typec接口,所以没法演示typec。USB Type-C接口的设备需要正反两面对所有的端口进行插拔一遍。

    3. 上面这15个端口就是最终要驱动的端口。接下来需要更改一下连接器类型。

      • 永久连接设备的USB端口(例如M.2蓝牙卡)应设置为 Internal (内建)
      • 与 USB3 端口相连的 HSxx 端口 (USB2) 应设置为 USB3
      • 内部集线器通常连接到端口PR11和PR21,因此应设置为 Internal (内建)
      • USB Type-C 接口可以是9或10,这取决于硬件如何处理 USB Type-C 型设备/电缆的正反两种可能方向
      • 如果 USB Type-C 在两个方向上使用相同的 SSxx,则它具有内建切换器,因此应设置为 TypeC+Sw
      • 如果 USB Type-C 在两个方向使用不同的 SSxx,则它没有内建切换器,因此应设置为 TypeC
      ZzImR0.md.png

2.4 导出文件

ZzI3dJ.md.png

确定好15个端口并且将端口的类型修改成功后就可以导出了。默认导出到桌面上。

ZzIwLD.png
  • 复制 SSDT-EC.aml (如果有) 到 EFI ▸ CLOVER ▸ ACPI ▸ patched

  • 接下来的方案请

    2 选 1

    • A) 复制 USBPorts.kext 到 EFI ▸ CLOVER ▸ kexts ▸ Other;或者
    • B) 复制 SSDT-UIAC.aml 和 SSDT-USBX.aml (如果有) 到 EFI ▸ CLOVER ▸ ACPI ▸ patched

我使用的是USBPorts.kext

最后将不需要的文件和补丁删除

  • 删除 (-uia_exclude_ss-uia_exclude_hsuia_include=x)等引导参数。
  • 删除 USBInjectAll.kext如果使用的是 USBPorts

使用的是USBPorts.kext的话,需要使用Kext Utility重建缓存。

接着重启。

2.5 验证

重启后使用Hackintool清空全部接口再刷新看和自己定制的接口有出入吗,如果有的话,就要看是哪里出问题了。如果正常的话,可以用U盘去试试端口了。

3. 鸣谢

本教程是根据黒果小兵的博客完成的。

下一篇: React Native配置ESLint和Prettier