Недостаточно ресурсов хост-контроллера для нового состояния устройства
7843
SpiRail
У меня есть система на основе Debian Mint, где я подключаю 16 USB-устройств. Kernal: 3.11.0-12-generic Примерно через 10 или около того устройств у меня начинаются проблемы с подключением новых. Там ошибка для одного такого устройства может быть найдена в dmesgs следующим образом (последние 2 строки отличаются)
[НОВОЕ ОБНОВЛЕНИЕ: ВРЕМЕННОЕ РЕШЕНИЕ] Я обнаружил, что эта проблема относится к xhci. В моем биосе я смог отключить xhci и заставить linux вернуться к ehci (предположительно). Теперь все мои устройства работают просто отлично! Конечно, это означает, что для меня нет устройств USB3. К счастью, мое немедленное применение не требует их. Я не знаю, является ли это проблемой Intel или Linux. Было бы хорошо оставить эту страницу открытой, потому что кто-то другой очень хотел бы ее найти.
dmesg | grep -i 3-5.1
рабочее устройство:
[ 1.883505] hub 3-5:1.0: USB hub found [ 1.883733] hub 3-5:1.0: 4 ports detected [ 3.370272] usb 3-5.1: new full-speed USB device number 17 using xhci_hcd [ 3.387126] usb 3-5.1: New USB device found, idVendor=03eb, idProduct=2045 [ 3.387129] usb 3-5.1: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.387908] usb-storage 3-5.1:1.0: USB Mass Storage device detected [ 3.388006] scsi14 : usb-storage 3-5.1:1.0 [ 121.738568] usb 3-5.1: USB disconnect, device number 17 [ 121.942662] usb 3-5.1: new full-speed USB device number 28 using xhci_hcd [ 121.961332] usb 3-5.1: New USB device found, idVendor=03eb, idProduct=204b [ 121.961334] usb 3-5.1: New USB device strings: Mfr=1, Product=2, SerialNumber=220 [ 121.961336] usb 3-5.1: Product: LUFA USB-RS232 Adapter [ 121.961337] usb 3-5.1: Manufacturer: Dean Camera [ 121.961338] usb 3-5.1: SerialNumber: 741333532373518080C1 [ 121.961408] usb 3-5.1: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes [ 121.962080] cdc_acm 3-5.1:1.0: ttyACM3: USB ACM device [ 1281.513105] usb 3-5.1: USB disconnect, device number 28 dmesg | grep -i 3-5.1
Отказ устройства:
[ 3.638401] usb 3-5.4: new full-speed USB device number 20 using xhci_hcd [ 3.655067] usb 3-5.4: New USB device found, idVendor=03eb, idProduct=2045 [ 3.655070] usb 3-5.4: New USB device strings: Mfr=0, Product=0, SerialNumber=0 [ 3.655868] usb-storage 3-5.4:1.0: USB Mass Storage device detected [ 3.655977] scsi17 : usb-storage 3-5.4:1.0 [ 118.793161] usb 3-5.4: USB disconnect, device number 20 [ 122.603119] usb 3-5.4: new full-speed USB device number 31 using xhci_hcd [ 122.621653] usb 3-5.4: New USB device found, idVendor=03eb, idProduct=204b [ 122.621655] usb 3-5.4: New USB device strings: Mfr=1, Product=2, SerialNumber=220 [ 122.621656] usb 3-5.4: Product: LUFA USB-RS232 Adapter [ 122.621657] usb 3-5.4: Manufacturer: Dean Camera [ 122.621658] usb 3-5.4: SerialNumber: 74133353237351808021 [ 122.621795] usb 3-5.4: ep 0x82 - rounding interval to 1024 microframes, ep desc says 2040 microframes [ 122.622419] usb 3-5.4: Not enough host controller resources for new device state. [ 122.622424] usb 3-5.4: can't set config #1, error -12
У меня аппаратная топология выглядит следующим образом: ПК -> 4 USB-концентратора с питанием -> каждый с 4 USB-устройствами (1). Эти устройства являются «двойной загрузкой», и вы можете видеть выше, где они извлекаются как устройства хранения данных и загружаются как последовательные устройства на тех же портах.
Я подключил USB-концентраторы прямо к источнику питания, каждое из моих устройств потребляет около 700 мА, а линия 5 В от источника питания падает до 4,69 В.
На моей машине есть несколько областей usb, так как я понимаю, что они связаны с базовыми концентраторами или корневыми концентраторами. Перемещение внешних узлов не имеет значения для результатов. Экспериментально: я думал, что размещение концентраторов на концентраторах приведет к большим проблемам, но результаты были такими же.
Когда все устройства подключены к источнику питания (и потребляют ток), но к ПК подключены только 3 концентратора, все в порядке. Когда я подключаю 4-й концентратор, я вижу в LSUSB, что все устройства есть, но только 1 из 4 устройств этого последнего концентратора подходит. В этом случае. 3-5.1 нормально, но 3-5.2 3-5.3 и 3-5.4, кажется, не загружают драйверы.
Все устройства идентичны, и я уже тестировал такие вещи, как замена устройств вокруг, замена концентраторов и т. Д. Это всегда последние устройства, которые можно использовать. Это даже случается, если последнее устройство отличается от мыши или wifi-ключа., Устройство будет видно в lsusb, но оно не будет работать. Я предполагаю, что это указывает на чрезмерное ограничение USB в операционной системе, а не на то, что зависит от драйвера.
При перезагрузке это все еще последние 3 устройства, когда ток течет. ТЕМ НЕ МЕНИЕ. Я также могу перевести эти устройства в состояние, в котором ток не подается, и их можно поднять.
Мой вывод заключается в том, что ОС читает текущую картину и делает некоторую оценку энергоресурсов. Возможно, они получают эту информацию из узлов и, возможно, даже добавляют значения вместе. Было бы хорошо знать, могу ли я просто иметь «больше ресурсов хост-контроллера»
[обновление] Я нашел здесь то, что выглядит как исходный код сообщения об ошибке: мне не нравится вид "/ * FIXME: можем ли мы выделить больше ресурсов для HC? * /" Может быть, это также означает, что есть способ выделить больше ресурсов с самого начала.
Любые подсказки были бы великими Дэвид
Вы используете 64-битное ядро? Если нет, вы должны начать с этого.
Michael Hampton 10 лет назад
0
3 ответа на вопрос
3
Ken Tindell
Я тоже попал в эту ошибку (после попытки подключить дюжину устройств сетевого интерфейса USB). Я почти уверен, что это не проблема электрического тока с устройствами: все они находятся на концентраторах с питанием и находятся в пределах текущих ограничений. Я думаю, что это проблема распределения прерываний или какого-либо другого ресурса.
Я попытался обойти отключение USB 3.0 в BIOS, но я подозреваю, что материнская плата использует USB 3.0 внутренне (для Bluetooth и некоторых других устройств), он не работал (lsusb -t показал, что xhci_hcd используется). Мне пришлось пересобрать ядро (я использую Ubuntu 14.04), чтобы удалить поддержку xhci, и тогда оно заработало.
Примечание: Ubuntu по умолчанию компилирует ehci и xhci в ядро - они не загружаются как модули. Я попытался перестроить их как модули, чтобы поиграть с ними с помощью modprobe, но это не удалось, потому что:
Если ehci является модулем, он должен быть загружен до модулей ohci и ahci (см. Предупреждение в dmesg), и каждый способ, которым я пытался это сделать, не удался (в любом случае, я думал, что модули ядра должны были быть независимыми от порядка загрузки?) ,
Модуль xchi всегда загружался, даже если он был в черном списке, предположительно для обработки внутреннего оборудования. Тем не менее, не очень много расследовал.
Только установив конфигурацию ядра, где был скомпилирован ehci и скомпилирован xhci, он заработал. Я не тестировал повторное включение USB 3.0 в BIOS с новым ядром без xhci.
спасибо за изменение. Действительно хорошая информация. Проблема для меня сейчас состоит в том, что становится все труднее получить хорошие USB2-концентраторы, а рынок заполняется USB3-концентраторами. Авторы драйверов Linux должны посмотреть на это, по моему мнению. Конечно ... такой открытый исходный код, это может быть до нас :-P
SpiRail 10 лет назад
0
2
Danil Dar
Not enough host controller resources for new device state. can't set config #1, error -12
Столкнулся с такими же ошибками. XHCI (usb 3.0) в ядре Linux ограничен 32 устройствами. Это похоже на ошибку. Но, возможно, это путь Билла Гейтса «640 килобайт достаточно для всех». В любом случае это боль.
1) Самый простой способ это исправить: отключить поддержку XHCI (usb 3.0) в BIOS материнской платы, если это возможно. 2) Трудный способ исправить это: отключить модуль XHCI linux. modprobe -r xhci-hcdНо в большинстве случаев это не работает. Вы должны перекомпилировать ядро, чтобы отключить XHCI и включить OHCI (usb 1.1) и EHXI (usb 2.0).
2
Julio Guerra
Эта проблема возникает из-за аппаратного контроллера USB, который не может обрабатывать такое количество устройств. Исходный код Linux показывает, что xHC вернул код «ошибка ресурса» при попытке настроить интерфейс. Глава 4.4.6 стандарта xHCI объясняет этот случай:
Переменная «Необходимые ресурсы» сравнивается с переменной «Доступные ресурсы», если результат указывает на превышение подписки ресурсов командой (т. Е. «Доступные ресурсы - требуемые ресурсы» меньше 0), то команда должна быть неудачной, и код завершения ошибки ресурса должен быть возвращается в событии завершения команды. Обратитесь к разделу 4.14.1.1 за дополнительной информацией о ресурсах xHC.
Мой обходной путь - освободить ресурсы xHCI, удалив все USB-устройства, которые мне не нужны, например, внутренние USB-устройства (например, Bluetooth, Wi-Fi и т. Д.) И концентраторы USB 3.0, к которым подключены только устройства USB 2.0.
Вот шаги:
Беги, lsusbчтобы увидеть, есть ли что-нибудь неиспользованное.
Удалите неиспользуемые устройства с помощью sysfs echo 1 > /sys/<path to device>/remove. Посмотрите dmesgи посмотрите, как он удаляет устройство и каждое подчиненное устройство. Это означает, что вы можете удалить целое дерево USB с помощью этой команды на корневом устройстве.
Теперь вы должны быть в состоянии правильно подключить больше устройств (см. dmesgЖурналы).
Чтобы сделать это постоянным при перезагрузке, добавьте правила udev для удаления устройств:
SUBSYSTEM=="usb" <your conditions to match unused devices> RUN="sh -c 'echo 1 > /sys$DEVPATH/remove'"