USB-устройство не принимает адрес
У меня есть ряд машин, которые я собираю для работы, и у нас есть устройства для чтения USB-карт. Когда я загружаю их, я получаю длинную серию сообщений:
...
[ 2347.768419] hub 1-6:1.0: unable to enumerate USB device on port 6
[ 2347.968178] usb 1-6.6: new full-speed USB device number 10 using ehci_hcd
[ 2352.552020] usb 1-6.6: device not accepting address 10, error -32
[ 2352.568421] hub 1-6:1.0: unable to enumerate USB device on port 6
[ 2352.768179] usb 1-6.6: new full-speed USB device number 12 using ehci_hcd
[ 2357.352033] usb 1-6.6: device not accepting address 12, error -32
...
На некоторых старых машинах это займет всего несколько попыток, прежде чем кард-ридер наконец примет адрес, тогда как на более новых машинах это может занять много минут. Смена аппаратного обеспечения невозможна, а подключение устройства чтения карт USB к другому порту - только вариант для старых моделей. Это было проблемой до 11.04, и я сейчас запускаю бета-версию 12.04, и она все еще происходит.
Есть ли что-то, что я могу сделать в программном обеспечении (возможно, с помощью правила udev?), Чтобы это исправить?
Любой совет приветствуется. Я рад предоставить больше деталей, если они вам нужны.
5 ответов
Не могли бы вы попробовать старую схему инициализации для USB-устройств? Это можно сделать, изменив параметр ядра в /etc/default/grub
:
- изменить строку, которая говорит
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
вGRUB_CMDLINE_LINUX_DEFAULT="quiet splash usbcore.old_scheme_first=1"
- бежать
update-grub
- перезагрузите компьютер и посмотрите, помогло ли это
В моем случае у меня, кажется, есть концентратор внутри машины (возможно, с четырехпортовым кластером на задней панели), который не принимает назначенный адрес.
Сообщения журнала для меня выглядят так:
usb 6-1: new low-speed USB device number 116 using uhci_hcd
usb 6-1: device not accepting address 116, error -71
hub 6-0:1.0: unable to enumerate USB device on port 1
Это показывает, что это USB-автобус 6. У меня нет ничего связанного с этим, и я хочу, чтобы это заткнулось.
Теперь нам нужно найти соответствующий драйвер. В этом случае это uhci_hcd
, так
$ sudo -s
# cd /sys/bus/pci/drivers/uhci_hcd
и найдите, какое устройство PCI предоставляет USB-шину 6:
# echo */usb6
0000:00:1a.2/usb5
Имя каталога здесь - это идентификатор шины PCI, соответствующий этой шине USB. Тогда это просто:
# echo 0000:00:1d.0 > unbind
чтобы выключить его.
Если это работает, тогда только последняя строка может быть добавлена к сценарию загрузки. Кажется, должен быть параметр ядра, чтобы избежать некоторых шин USB, но я не могу его найти.
(Основано на ответе titaniumtux, но я стараюсь не отвязывать мою клавиатуру. Назовите меня старомодным, но я все еще пользуюсь им.)
Имел
usb 2-2: new high speed USB device using address 10
usb 2-2: device not accepting address 10, error -71
...
usb 2-2: new high speed USB device using address 13
usb 2-2: device not accepting address 13, error -71
на CentOS.
Найдено http://paulphilippov.com/articles/how-to-fix-device-not-accepting-address-error
Конечно же, вставив концентратор USB с питанием в уравнение решило это.
Я встретил ту же ситуацию, что и ты.
Но я использовал Ubuntu 10.04.
Но если бы я использовал другой компьютер, он никогда не вышел.
Так что до сих пор, я думаю, что-то было с моим интерфейсом USB.
После того, как я добавлю правила udev в мою систему, это может произойти меньше, чем раньше.
Можешь попробовать.
С наилучшими пожеланиями!
Создайте скрипт, содержащий следующее, и запустите его при запуске:
cd /sys/bus/pci/drivers/ehci_hcd/
sudo sh -c 'find ./ -name "0000:00:*" -print| sed "s/\.\///">unbind'
Это должно решить проблему.
Источник: здесь