Недостаточно ресурсов контроллера узла для нового состояния устройства

у меня есть система на основе debian mint, где я подключаю 16 usb-устройств.
Ядро: 3.11.0-12-generic
Примерно через 10 или около того устройств я начинаю испытывать проблемы с подключением новых.
Там ошибку для одного такого устройства можно найти в dmesgs следующим образом (последние 2 строки отличаются)

[НОВОЕ ОБНОВЛЕНИЕ: ВРЕМЕННОЕ РЕШЕНИЕ]
Я обнаружил, что эта проблема характерна для xhci. В моем bios я смог фактически отключить 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

у меня есть аппаратная топология следующим образом:
PC - > 4 powered USB2 hubs - > каждый с 4 USB (1) устройствами.
Эти приборы "двойная загрузка", и вы можете видеть выше, где они выбрасываются как запоминающие устройства и загружаются как последовательные устройства на тех же портах.

Я привел форму в действие эпицентров деятельности УСБ прямую электропитание, каждое из моих приборов вытягивает о 700мА
и линия 5V от питания падает до 4,69 В.

на моей машине есть несколько областей usb, поскольку я понимаю, что они подключены к базовым концентраторам или корневым концентраторам. Перемещения внешних узлов вокруг без разницы полученные данные. Экспериментально: я думал, что размещение концентраторов на концентраторах приведет к большим проблемам, но результаты были одинаковыми.

когда у меня все устройства подключены к источнику питания (и ток рисования), но только 3 концентратора подключены к ПК, все в порядке.
Когда я подключаю 4-й концентратор, я вижу в LSUSB, что все устройства там,
Однако только 1 из 4 устройств на этом последнем концентраторе появляется.
В этом случае. 3-5.1 в порядке, но 3-5.2 3-5.3 и 3-5.4 кажется, что не нагружает движущих силы.

все устройства идентичны, и я уже проверил такие вещи, как замена устройств, замена концентраторов и т. д. Это всегда последние устройства, чтобы войти.
Это даже происходит, если последнее устройство что-то совершенно другое, как мышь или Wi-Fi ключ. Устройство будет отображаться в lsusb, но не будет работать.
Я предполагаю, что это указывает на чрезмерное ограничение USB в операционной системе, а не на то, что это зависит от драйвера.

при перезагрузке, он по-прежнему последние 3 устройства, когда ток рисуется.
ОДНАКО. Я также могу поместить эти устройства в состояние, когда ток не рисуется, и их можно получить.

мой вывод заключается в том, что ОС читает ток и оценку энергетических ресурсов. Возможно, они получают эту информацию из концентраторов и, возможно, даже добавляют значения вместе. Было бы хорошо знать, если бы я мог просто иметь " больше ресурсы хост-контроллера"

[update] I найти здесь как выглядит исходный код сообщения об ошибке:
Мне не нравится внешний вид " / * FIXME: можем ли мы выделить больше ресурсов для HC? */"
Возможно, это также означает, что есть возможность выделить больше ресурсов.

любые подсказки было бы здорово
Дэвид

1
задан SpiRail
13.02.2023 19:16 Количество просмотров материала 3345
Распечатать страницу

3 ответа

Я тоже попал в эту ошибку (после попытки подключения десятка устройств сетевого интерфейса USB). Я уверен, что это не проблема с электрическим током с устройствами: все они находятся на концентраторах с питанием и в пределах текущих ограничений. Я думаю, что это вопрос распределения прерываний или другой ресурс.

Я попытался обойти отключение USB 3.0 в BIOS, но я подозреваю, что материнская плата использует USB 3.0 внутренне (для Bluetooth и некоторых других вещей), он не работал (lsusb-t показал, что используется xhci_hcd). Мне пришлось перестроить ядро (я использую Ubuntu 14.04), чтобы удалить поддержку xhci, а затем он работал.

Примечание: Ubuntu по умолчанию компилирует ehci и xhci в ядро-он не загружает их как модули. Я попытался перестроить их как модули, чтобы я мог поиграть с ними с помощью modprobe, но это не удалось, потому что:

  1. Если ehci является модулем, он должен быть загружен перед модулями ohci и ahci (см. предупреждение в dmesg), и каждый раз, когда я пытался это сделать, терпел неудачу (в любом случае, я думал, что модули ядра должны быть независимыми от порядка загрузки?).

  2. модуль xchi всегда загружался, даже если он был занесен в черный список, предположительно для обработки внутреннего оборудования. Однако не так много расследовал.

только путем настройки конфигурации ядра, где ehci был скомпилирован и xHCI был скомпилирован, он работал. Я не тестировал повторное включение USB 3.0 в BIOS с новым ядро без xhci.

3
отвечен Ken Tindell 2023-02-15 03:04
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
отвечен Danil Dar 2023-02-15 05:21

эта проблема исходит от базового аппаратного контроллера USB, который не может обрабатывать столько устройств. Исходный код Linux показывает, что xHC вернул код "ошибки ресурса" при попытке настроить интерфейс. Глава 4.4.6 стандарта xHCI объясняет этот случай:

требуемая переменная Resources сравнивается с доступными ресурсами переменная, если результат указывает на перераспределение ресурсов команда (т. е. доступные ресурсы-ресурсы Требуется меньше чем 0), то команда должна быть неудачной и ошибка ресурса Код завершения должен быть возвращен в событии завершения команды. См. раздел 4.14.1.1 для получения дополнительной информации о ресурсах xHC.

мой обходной путь состоит в том, чтобы освободить ресурсы xHCI, удалив каждое USB-устройство, которое мне не нужно, например, внутренние USB-устройства (например, bluetooth, wifi и т. д.) и концентраторы USB 3.0, к которым подключены только устройства USB 2.0.

здесь шаги:

  1. Run lsusb чтобы увидеть, если есть что-то неиспользованное.
  2. удалите неиспользуемые устройства с помощью sysfs echo 1 > /sys/<path to device>/remove. Взгляните на dmesg и посмотреть, как он удаляет устройство и каждый суб-устройства. Это означает, что вы можете удалить все дерево USB с помощью этой команды на корневом устройстве.
  3. теперь вы должны быть в состоянии правильно подключить больше устройств (cf. dmesg журналы).

чтобы сделать это постоянным при перезагрузке, добавьте правила udev чтобы удалить устройства:

SUBSYSTEM=="usb" <your conditions to match unused devices> RUN="sh -c 'echo 1 > /sys$DEVPATH/remove'"
2
отвечен Julio Guerra 2023-02-15 07:38

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх