Linux 中 USB 总线的设备数量限制是多少?

Linux 中 USB 总线的设备数量限制是多少?

我正在使用 Raspberry Pi 开发远程监控设备。为了向我提供警报,它里面有 3G 加密狗。但是,由于电源不稳定,加密狗有时会更改设备号。因此,例如,当它启动时,3G 加密狗可能会显示为(使用 lsusb):

总线001设备005:ID 12d1:1464 华为技术有限公司

但经过几个小时后,设备编号将增加到:

总线001设备007:ID 12d1:1464 华为技术有限公司

所以我的问题是设备编号的限制是多少?它可以一直增加到 999 甚至更高吗?还是有一个下限,例如 256 或 128?有了这些信息,我可以编写一个设备编号检查代码,并在接近限制时强制重启。

答案1

USB 使用 7 位寻址,因此您将能够寻址 127 个设备。当然,使用 USB 设备时更大的问题是电源,如果电源不足,它们将无法工作。

答案2

USB 总线上的 Linux 设备编号维护着“下一个要分配的设备编号”的信息。每次连接新设备时,这些信息都会自然更新。

只要当前连接的设备的设备号小于 127,新的“下一个设备号”就等于当前设备号加一。当“当前设备号”为 127 时,“下一个设备号”被重置为 1。

设备分配还会检查建议分配的号码是否已被使用,如果是,则将恢复检查连续的设备号码,直到找到可用的设备号码。

因此,总而言之,设备数量是有限制的,但是一旦达到该限制,编号就会正常滚动。

相关内容