# 为什么你要USB映射

USB映射的过程是定义你到macOS的端口,并告诉它它们是什么类型,我们想这样做的原因是:

  • macOS很不擅长猜测你有什么样的端口
  • 一些端口可能会低于其额定速度(3.1端口运行在2.0)
  • 有些端口可能完全不能工作
  • 蓝牙无法使用
  • 某些服务,如切换可能无法正常工作
  • 睡眠可能会中断
  • 热插拔损坏
  • 甚至是来自XhciPortLimit的数据损坏

所以现在你知道为什么你应该USB映射,我们现在可以谈谈USB映射的技术信息。这是一个你不能跳过的部分,否则下面的所有信息将看起来像是一个醉酒的斯拉夫人写的一个非常蹩脚的俄语翻译。

因此,对于USB,我们需要了解并非所有端口都是相同的,有些端口实际上隐藏了其他端口!我的意思如下:

  • 一个USB 3.0端口实际上可以看作到macOS的两个端口:一个USB 2.0 一个USB 3.0
  • 这也是USB保持向后兼容性的方式,因为所有USB 3.0设备必须支持USB 2.0

现在让我们看一下USB端口的图,以便更好地理解这一点:

Image from usb3.com

现在让我们看一下USB端口的图,以便更好地理解这一点:

现在有了基本的理解,我们现在要讨论可怕的15端口限制。

# macOS和15端口限制

现在让我带你回到2015年末OS X 10.11 El Capitan发布的时候。这是一个更新,在社区中建立了许多既让我们高兴又让我们痛苦的东西,如系统完整性保护和15端口限制。

在macOS(当时称为OS X)中,15个端口的限制是严格限制每个控制器只有15个可能的端口,当我们查看主板上包含的芯片组端口时,这就成为一个问题:

  • Z170和更新的芯片组:总共26端口

你甚至可能没有26个实际的端口,但它们仍然在你的ACPI表中声明,这导致了问题,因为macOS无法区分真正的端口和固件作者忘记删除的端口。

但是为什么苹果选择15个端口作为限制呢?

这就进入了计算机的一个有趣的子集,十六进制计数系统!它与十进制系统的不同之处在于,一共有15个值,最后一个值是0xF。这意味着,比起将端口限制扩展到255(0xFF),停止在15要好得多。在苹果看来,端口超过15是没有意义的,因为他们支持的mac都没有超过这个限制。如果Mac Pro用户增加一个USB扩展卡,它就会有自己的15端口限制。

现在当我们考虑怪异的XhciPortLimit时,你可以看到为什么会发生数据损坏。当我们超过0xF极限,进入其他人的空间时。所以,尽可能避免这种怪癖。

  • 注意:虽然XhciPortLimit这个名称看起来似乎是在限制XHCI端口的数量,但实际上它是在为XHCI端口限制打补丁,使其达到更高的值。

那么USB集线器呢?

连接到USB控制器端口的USB集线器有一种不同的端口限制。总的来说,一个USB端口可以拆分为127个端口。这包括USB集线器连接到USB集线器

# 现在背景故事已经完成,让我们前往系统准备