Устранение ошибки пропускной способности USB на сервере Ubuntu 22.04Linux

Ответить
Anonymous
 Устранение ошибки пропускной способности USB на сервере Ubuntu 22.04

Сообщение Anonymous »

Ищу способ преодоления ошибки с некоторыми беспроводными модулями по USB в Linux. У меня есть три модуля USB2 WiFi на концентраторе USB3. Меня интересует использование этих модулей только в режиме монитора.
Если у меня подключен только один или два модуля, все выглядит нормально. Подключив третий модуль, я получаю логи dmesg:

Код: Выделить всё

[63460.856556] usb 1-3.3.2: Not enough bandwidth for new device state.
[63460.856574] usb 1-3.3.2: can't set config #1, error -28
После некоторых исследований я думаю, что понимаю, почему это может быть так. Глядя на дескрипторы USB для каждого модуля Wi-Fi, можно увидеть, что среди других конечных точек с меньшей пропускной способностью есть две конечные точки с высокой пропускной способностью:

Код: Выделить всё

Endpoint Descriptor:
646-        bLength                 7
647-        bDescriptorType         5
648-        bEndpointAddress     0x01  EP 1 OUT
649-        bmAttributes            3
650:          Transfer Type            Interrupt
651-          Synch Type               None
652-          Usage Type               Data
653-        wMaxPacketSize     0x0400  1x 1024 bytes
654-        bInterval               1
655-      Endpoint Descriptor:
656-        bLength                 7
657-        bDescriptorType         5
658-        bEndpointAddress     0x81  EP 1 IN
659-        bmAttributes            3
660:          Transfer Type            Interrupt
661-          Synch Type               None
662-          Usage Type               Data
663-        wMaxPacketSize     0x0400  1x 1024 bytes
664-        bInterval               1
Если я правильно подсчитал, каждая из этих конечных точек фактически запрашивает пропускную способность 65 Мбит/с. Поскольку на каждый модуль Wi-Fi приходится две таких конечных точки, каждая из них запрашивает общую пропускную способность 130 Мбит/с. Я предполагаю, основываясь на описаниях конечных точек (EP 1 IN и EP 1 OUT), что одна из них предназначена для направления передачи, а другая — для направления приема.
Я считаю, что Linux и/или Сам хост-контроллер устанавливает ограничение в 80% от доступных 480 Мбит/с или 384 Мбит/с. Я подозреваю, что именно поэтому два модуля работают (260 Мбит/с < 384 Мбит/с), а три нет (390 Мбит/с > 384 Мбит/с).
Поскольку я хочу использовать их только в режиме монитора и на самом деле мне не нужна большая полоса пропускания передачи, мне интересно, смогу ли я как-то манипулировать вещами в своих интересах. Возможно, какие-то правила udev меняют эти дескрипторы или что-то в этом роде? Вступят ли они в силу до того, как будут оценены ограничения пропускной способности? Или мне нужно будет разобраться с прошивкой/драйверами этих модулей, чтобы иметь возможность изменить эти дескрипторы до того, как будут наложены ограничения пропускной способности?

Подробнее здесь: https://stackoverflow.com/questions/790 ... -04-server
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Linux»