7

Я попытался подключить несколько устройств с поддержкой USB 3.0 к моей машине с Ubuntu 12.04. Но обнаружил, что одновременно было видно не более 9 устройств. Я попытался отслеживать журналы ядра в /var/log/kern.log , где я обнаружил, что при подключении 10-го устройства была обнаружена следующая ошибка:

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

Мой хост-контроллер USB:

Корпорация Intel Семейство наборов микросхем серии 8 /C220 USB xHCI (версия 05)

Некоторые форумы предлагают отключить поддержку USB 3.0, чтобы устройства работали в режиме USB 2.0, и это должно решить проблему. И это было правдой. Отключение поддержки xHCI в BIOS помогло мне.

Я предположил, что это должно быть ошибкой в более старой установке Ubuntu 12.04 (или может быть драйвер usb). Поэтому я обновил свою систему до Ubuntu 16. Но и здесь существует та же проблема. Что делать, если я хочу использовать свои устройства с USB 3.0? Что если опция отключения поддержки xHCI в BIOS отсутствует на какой-либо материнской плате?

2 ответа2

4

Контроллер имеет внутренние буферы, которые он выделяет для подключенных устройств с целью выполнения ввода и вывода. Эти буферы также называются ресурсами или конечными точками.

Более быстрые устройства должны иметь больше буферов, чтобы содержать больше данных. Это число может варьироваться в зависимости от устройства, но не более 32 конечных точек с 16 входами и 16 выходами на устройство.

Есть сообщения, что хост-контроллер Intel 8 Series USB 3.0 XHCI поддерживает только 96 конечных точек, и практические ограничения могут быть достигнуты раньше.

Из информации в вашем посте я бы предположил, что каждый диск USB3 использует 10 конечных точек, иначе. ресурсы, вероятно, 5 в и 5 из. Поэтому на 9 дисках использовалось 90 конечных точек, что нормально, но для 10 дисков требуется 100 конечных точек, что превышает ограничение 96, поэтому контроллер отправил код ошибки в операционную систему.

Когда вы ухудшили соединение с более медленным USB2, контроллер выделил гораздо меньше буферов для каждого устройства, поэтому вы можете подключить больше дисков.

Решением может быть добавление концентратора USB2 и установка на него дисков, которые не требуют высокой скорости передачи данных.

Дальнейшее чтение :

0

Предыдущий ответ почти правильный. Существует ограничение, если 96 конечных точек с USB3 ограничивают вас менее чем 32 устройствами. Однако использование концентратора USB2 не исправляет это, поскольку вы все еще используете чип USB3 в режиме USB2, и, к сожалению, ограничение конечной точки остается тем же.

Я тоже занимался этой проблемой, и мне потребовалось некоторое время, чтобы найти реальную проблему и пути ее решения. Это длинная страница, поэтому вы можете прочитать ее там http://marc.merlins.org/perso/linux/post_2018-12-20_Getting-Around-USB3-xhci-32-Device-Limit- Max-number-of- devices-this-xHCI-host-support-is-32.html

В основном это сводится к этим вещам
1) существует ограничение 96 оконечных точек с USB3 (что означает только 32 устройства)
2) Вы теряете дополнительные конечные точки из-за концентраторов, использование кабеля USB2 к концентратору USB3 дает вам несколько слотов назад
3) в более общем случае вам следует отключить USB3, если вы можете обойтись без него (удалите драйвер ядра USB3 или, если проще, отключите USB3 в своем BIOS). Использование чипа USB3 в режиме USB2 не помогает, вы должны отключить USB3, чтобы ваша материнская плата перенаправила порт на контроллер USB2, у которого нет этого ограничения конечной точки 4) если вы не можете отключить USB3, получите карту USBe только USB2 и тот действительно даст вам 120 устройств или около того.

Дополнительные ресурсы:https://www.spinics.net/lists/linux-usb/msg175224.html
https://forums.intel.com/s/question/0D50P00004905stSAA/hardware-limitations-on-usb-endpoints-xhci?language=en_US

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