Какое ограничение на количество устройств в Linux для шины USB?

1208
Rob Corlett

Я разрабатываю устройство удаленного мониторинга с использованием Raspberry Pi. Для того, чтобы предоставить мне оповещения, он имеет 3G ключ. Однако из-за нестабильности электропитания ключ иногда меняет номер устройства. Так, например, при загрузке ключ 3G может отображаться как (с использованием lsusb):

Шина 001 Устройство 005: ID 12d1: 1464 Huawei Technologies Co., Ltd

Но через несколько часов номер устройства увеличится до, скажем,:

Шина 001 Устройство 007: ID 12d1: 1464 Huawei Technologies Co., Ltd

Итак, мой вопрос, каково ограничение на количество устройств? Может ли он продолжать расти до 999 или даже выше или есть нижний предел, например 256 или 128? С помощью этой информации я могу кодировать проверку номера устройства и принудительно перезагружать его, если оно приближается к пределу.

4

2 ответа на вопрос

4
Optichip

USB uses 7bit addressing so you will be able to address 127 devices. Of course the bigger issue is power when using USB devices, if there isn't enough power they won't work.

Спасибо, Оптичип - я подозревал, что это не пойдет на 128. Что касается проблемы с питанием, я наблюдаю за ней, но пока никаких проблем, кроме этой. Rob Corlett 9 лет назад 0
2
Juha Laiho

Linux device numbering on a USB bus maintains information on "next device number to be assigned". This is naturally updated each time a new device is connected.

As long as the device number of the currently connected device is less than 127, the new "next device number" will just be the current device number plus one. At "current device number" 127, the "next device number" is reset to 1.

Device allocation also checks whether the number proposed to be assigned is already in use, and if so, will revert to checking for successive device numbers until a free one is found.

So, all in all, there is a device number limit, but upon reaching it, the numbering will gracefully roll over.