![堆叠 USB 集线器是否存在问题?](https://linux22.com/image/1563515/%E5%A0%86%E5%8F%A0%20USB%20%E9%9B%86%E7%BA%BF%E5%99%A8%E6%98%AF%E5%90%A6%E5%AD%98%E5%9C%A8%E9%97%AE%E9%A2%98%EF%BC%9F.png)
将 4 端口 USB-3 集线器连接到 USB-C 至 USB-3 集线器上的端口会导致问题吗?
答案1
你可以使用菊花链连接集线器,但有限制。只要不超过限制,就没有问题。
- USB 控制器上最多可以有 127 个端口。其中包括用于创建网络树的所有端口。
- 您最多可以拥有 7 个层,包括根集线器和链末端的设备,剩下最多 5 个菊花链式外部集线器链。
如果您使用自供电集线器,只要您符合其他 USB 要求(如电缆长度;长度限制适用于链的每一条腿)的限制,那就可以了。
但是,USB 规范要求总线供电集线器不能与其他总线供电集线器串联连接。
- 如果您选择忽略 USB 规范,那么您可以将总线供电集线器连接到总线供电集线器,只要您不尝试超过上游连接可用的功率即可,具体取决于所涉及的具体硬件(例如,USB-C 至 USB-3 集线器可以协商的功率、该集线器和 USB-3 集线器上的负载、如果可用单位负载少于 6 个,USB-3 集线器是否会连接到上游集线器等)。
一些一般性讨论这里,这里, 和这里,但是如果您想以菊花链形式连接总线供电集线器,则需要尝试一下,看看哪种方法可能适合您的特定设备。
答案2
USB 3 端口最多可提供 900 mA 的电流。如果将集线器连接到该端口,则该集线器本身需要一些电源,每个 USB 3 设备保留的最小电量为 150 mA。因此,您的第一个集线器只有 750 mA 可以分配给您连接到它的设备。如果您将另一个 4 端口 USB 集线器插入其中,则会为其保留另外 150 mA,现在两个集线器只有 600 mA 可分配给设备。这意味着您最多可以将另外 4 个设备连接到这两个集线器中的任何一个,并且这些设备必须能够获得最低 150 mA 的电流。如果您插入 SSD 适配器,该适配器本身可能需要 900 mA 来为控制器芯片和连接到它的 SSD 供电。
如果忽略这些电力限制,会发生什么情况?
在最好的情况下,操作系统会注意到这一点,拒绝激活该设备,并通知您此问题。需要的电流超过可用电流的设备将完全无法工作,其余的总线不会受到影响。
更糟糕的是,如果系统忽略它,集线器忽略它,设备会随意消耗电力,导致电流限制器启动。结果,整个总线断电并暂时停止工作。虽然这看起来很糟糕,但它可以保护您的硬件免受损坏,至少会注意到存在严重问题。
但情况可能比这更糟。如果所吸收的电流不足以使限制器启动,但仍超过允许和预期,电压可能会降至低于允许值,这将导致细微故障,例如,只有某些设备可能会发生故障(因为它们比其他设备对低电压更敏感)或者它们可能只在某些时候发生故障(因为电压波动,它们需要多少取决于它们当时实际在做什么)。这可能导致很难追踪、奇怪的故障,以及数据丢失,甚至硬件损坏。
但是,如果第二个集线器有自己的电源,情况就会发生变化。在这种情况下,它将从该电源为其端口供电。但是,第一个集线器仍然只有 600 mA 电流用于其剩余端口,这是因为它仍然必须为第二个集线器提供 150 mA 电流,尽管它有自己的电源,但插入第二个集线器的设备不会计入第一个集线器的 600 mA 限制。并且鉴于电源有足够的功率,第二个集线器将不会再获得 900 mA 电流在其 4 个端口之间共享,实际上它的 4 个端口中的每一个都能够提供 900 mA。
这不是你的问题的一部分,但其他读者可能感兴趣:使用 USB 2 时,情况比我上面描述的要糟糕得多。主要区别在于:
“工作量单位”是指 USB 总线必须为每个连接的设备保留的最小电流量,无论设备以后实际需要多少电量。在 USB 3 中,这个单位是 150 mA,在 USB 2 中只有 100 mA。
如果设备请求,USB 3 端口可提供最多 6 个工作负载单元(6 * 150 mA = 900 mA),而 USB 2 总线最多提供 5 个(5 * 100 mA = 500 mA)。
USB 2 中的总线供电集线器只能向其每个端口分配 1 个工作负载单位。因此,当将 USB 设备连接到总线供电的 USB 2 集线器时,该设备无法获得超过 100 mA 的电流。在 USB 3 中,可用功率可以在端口之间自由分配,只要每个端口至少获得一个单位(如果有 750 mA 可用,则 4 端口集线器必须为每个端口保留 150 mA,但可以给一个端口 300 mA,而 USB 2 不允许这样做;即使集线器只有 2 个端口且仍有 400 mA 可用,每个端口最多只能获得 100 mA,而其他 200 mA 则未使用)。
因此,使用 USB 2 连接两个总线供电集线器甚至是不可能的,因为第一个集线器只能向每个端口分配最多 100 mA 的电流,而第二个集线器本身运行时消耗 100 mA,根本没有电力分配给其端口。
您是否违反了上述任何一条规则并且它确实起作用了?
嗯,有趣的是,系统对遵守规则标准并不十分严格。通常它们准备为每个端口提供超过 900/500 mA 的电流,例如用于快速充电设备,并且知道插头、端口和电缆能够传输高达 2000 mA 的电流,限制器也不会设置得太严格。
因此,如果您将总线供电集线器插入总线供电集线器,然后将 USB 棒插入第二个集线器,则该棒可能需要 100 mA,这会导致第二个集线器从其上游集线器吸取 200 mA,尽管只允许吸取 100 mA,但第一个集线器的电流限制器不会在 200 mA 时启动,电压也不会因此下降,操作系统也会认为它没问题。因此,尽管这里完全超出了规格,但不会发生任何可怕的事情,而且很可能它会正常工作。
理论上,您可能会损坏第一个集线器,因为如果该集线器始终采用总线供电,则它不必为每个端口提供超过 100 mA 的电流,而 200 mA 的电流是其设计值的两倍。但实际上,该集线器使用能够处理 2000 mA 的标准端口,电路板上的导电路径都相同,这些集线器中使用的芯片与自供电集线器中使用的芯片相同,因此它们可以处理这种情况下可能出现的最大电流。损坏的可能性非常非常小。
此外,许多亚洲供应商还想出了另一个花招:集线器不是从端口吸取允许的电流量,而是简单地声称自己是一个活动集线器(它不是,但它报告自己是一个活动集线器),然后吸取所需的电量以充当活动集线器。这完全违反了规范,是的,它会导致总线不稳定(我经历过很多次),甚至损坏硬件,但那些供应商根本不在乎。
如果 USB 集线器不需要任何认证来证明其符合标准,那么就会有一个很大的缺点;超过 90% 的 USB 集线器永远无法获得认证,这就是为什么人们经常遇到非常奇怪的 USB 总线问题。有少数供应商自愿获得 USB 联盟的认证,这意味着他们完全遵循标准,这就是为什么这些集线器的价格很容易比您习惯的价格高出 3-4 倍。