4

Я разрабатываю устройство удаленного мониторинга с использованием 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? С помощью этой информации я могу кодировать проверку номера устройства и принудительно перезагружать его, если оно приближается к пределу.

2 ответа2

4

USB использует 7-битную адресацию, поэтому вы сможете адресовать 127 устройств. Конечно, большая проблема заключается в питании при использовании USB-устройств, если не хватает мощности, они не будут работать.

2

При нумерации устройств Linux на шине USB хранится информация о «следующем номере устройства, который будет назначен». Это естественно обновляется каждый раз, когда подключается новое устройство.

Пока номер устройства подключенного в данный момент устройства меньше 127, новый "номер следующего устройства" будет просто номером текущего устройства плюс один. На "текущем номере устройства" 127 "следующий номер устройства" сбрасывается на 1.

Распределение устройств также проверяет, используется ли уже предложенный для назначения номер, и, если это так, вернется к проверке последовательных номеров устройств, пока не будет найден свободный.

Таким образом, в целом, существует ограничение по количеству устройств, но при его достижении нумерация будет корректно перенесена.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .