Linux 是否会切断耗电过多的 USB 设备的电源?

Linux 是否会切断耗电过多的 USB 设备的电源?

如果我短路 Arduino,Linux 会检测到出现问题并禁用该端口吗? Mabook 将显示警告并禁用设备。

答案1

短路保护是USB接口中硬件的作用。 USB 2.0 s7.1.1 说

USB 收发器需要能够承受 D+ 和/或 D- 与 VBUS、GND、其他数据线或连接器处的电缆屏蔽层的连续短路,至少 24 小时而不发生性能退化。

如果 USB 收发器硬件向 Linux 报告短路情况,Linux 将报告短路情况。看源/驱动程序/usb/core/hub.c:port_event()。在这种情况下,Linux 会在 0.1 到 0.5 秒内避免向端口发送数据,以便提供短期均匀的时间来消散,并在过流情况持续存在时禁用该端口。

如果你是发展USB 硬件 您可能会选择使用 USB 供电的集线器(具有过流保护功能,请参阅 USB 属性wHubCharacteristics)作为牺牲设备来保护您更昂贵的计算机,而不是依赖计算机在规范内运行的 USB 收发器。请注意,在某些 USB 设计中,过流保护是使用多熔丝这些触发事件的数量有限,并且可能需要一些时间才能恢复操作,大概您宁愿花时间交换到另一个集线器并继续开发您的设备。

当插入 USB 设备时,Linux 会检查建议的 USB 配置是否超过端口的额定电流(请参阅驱动程序/usb/core/generic.c:usb_choose_configuration()),但这是针对非错误条件,可以假设设备消耗的电流不会超过其软件所要求的电流。

相关内容