Яка межа номера пристрою в Linux для шини USB?


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? За допомогою цієї інформації я можу кодувати під час перевірки номер пристрою та примусити перезавантажитись, якщо вона наблизиться до межі.

Відповіді:


4

USB використовує 7-бітну адресацію, тому ви зможете адресувати 127 пристроїв. Звичайно, більша проблема - це живлення при використанні USB-пристроїв, якщо недостатньо енергії, вони не працюватимуть.


Дякую, Optichip - я підозрював, що він не перейде до 128. Щодо проблеми з живленням, я його моніторую, але поки немає жодної проблеми, окрім цієї.
Роб Корлет

2

Нумерація пристроїв Linux на шині USB підтримує інформацію про "наступний номер пристрою, який потрібно призначити". Це, природно, оновлюється щоразу, коли підключається новий пристрій.

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

Розподіл пристрою також перевіряє, чи вже використовується номер, запропонований для призначення, і повернеться до перевірки послідовних номерів пристроїв, поки не знайдеться вільний.

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.