У меня есть ряд машин, которые я собираю для работы, на которых есть устройства для чтения 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?), Которое бы это исправило?
Любой совет приветствуется. Я рад предоставить больше деталей, если они вам нужны.
Вы могли попробовать старую схему инициализации 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'
Это должно решить проблему.
Источник: здесь