Недавно видел подобное. по lsusb показывается что есть девайс како-то, а вот когда в ядре включаешь поддержку usb принтера - появляется нормальное описание, и что это принтер :;]
Потому, что при откключении/включении кабеля от принтера получается:
usb 1-1: USB disconnect, address 7 drivers/usb/class/usblp.c: usblp0: removed
и
usb 1-1: new full speed USB device using uhci_hcd and address 8 usb 1-1: configuration #1 chosen from 1 choice drivers/usb/class/usblp.c: usblp0: USB Bidirectional printer dev 8 if 0 alt 0 proto 2 vid 0x03F0 pid 0x1904
соответственно.
>запусти lsusb от root - проблема исчезает?
нет.
>обычно проблемы с USB-принтерами вызваны использованием кабелей, не сертифицированных на соответствие стандарту USB 2.0
Понятно. Как раз те сведения, которые нужны для диагностики.
Проблема у тебя связана с недоступностью псевдофайлов в /proc/bus/usb или несозданием сырых USB-устройств в /dev/bus/usb. Какой дистрибутив (и указать год выхода)? Версия ядра (и является ли оно дистрибутивным или самосборным) и udev? Прошу еще привести вывод следующих команд:
find /dev/bus/usb
find /proc/bus/usb
grep bus/usb /etc/udev/rules.d/*
По идее, должна быть либо смонтирована usbfs (совсем старые дистрибутивы, ядро старее 2.6.15), либо работать такие правила udev:
(срабатывает для ядер от 2.6.15 до 2.6.21, но не повредит и для других)
Действительно, какой-то непонятный глюк с udev (не обрабатывает uevent'ы - например, не создал /proc/bus/usb/001/010 и, вероятно, не подгрузил в принтер прошивку).
На самом деле ситуация с диагностикой такая:
Для печати необходимо только устройство /dev/usb/lp0 и принтер (HP1018, угадал?) с прогруженной прошивкой.
Для работы lsusb необходимо наличие сырых USB-устройств в /dev/bus/usb или аналогичных псевдофайлов в /proc/bus/usb (но псевдофайлы устарели и оставлены только для совместимости с VMware).
Псевдофайлы в /proc/bus/usb создает само ядро. Устройства в /dev (и, соответственно, в /dev/bus/usb) создает udev, когда ядро говорит ему, что что-то в /sys изменилось. Прошивку в принтер HP1018 грузит тоже udev.
Вопрос: /usr на том же разделе, что и корень? Если нет - ССЗБ (udev тогда вызывает внешние программы из /usr, не дожидаясь монтирования /usr).
Еще можно попробовать взять udev из backports, т.к. при несоответствии версий udev и ядра раньше имели место глюки (но сейчас о таких глюках мне неизвестно).
Нет, это потому, что после вывода find'ом, но до рестарта udev был выдернут/вставлен кабель. До этого - устройство 009, после этого - 010.
>(HP1018, угадал?)
Не угадали, 3820 )
>Для работы lsusb необходимо наличие сырых USB-устройств в /dev/bus/usb или аналогичных псевдофайлов в /proc/bus/usb
Тем не менее, при наличии псевдофайлов lsusb не сработал. Видимо, ему dev-файлы нужны.
>Вопрос: /usr на том же разделе, что и корень? Если нет - ССЗБ (udev тогда вызывает внешние программы из /usr, не дожидаясь монтирования /usr).
Нет, иначе как прикажете бороться с потенциальным переполнением корня? Принтер не работает после длительного аптайма, (это не первый, но редкий случай) а не при загрузке, /usr смонтирована, как же ещё? Вот и интересно, что как получилось так, что пропало устройство? Его ведь udev тоже удаляет? То есть принтер при рабочем компе ок. полумесяца аптайма нормально виделся системой, а потом перестал. Я вообще не понял ,что дело в dev-устройстве.
>Еще можно попробовать взять udev из backports,
А нету его в бэкпортах.
Тем не менее, как узнать, что дело именно в dev-устройстве? Из логов, вывода к-либо утилиты? Кроме как глазами посмотреть.
В любом случае, спасибо огромное за пояснения. Глюки udev, с чем не бывает ;)
все такие странные глюки в 90% случаев исправляются подклюсением устройства через шнур покороче или выниманием удлинителя из цепочки, я так с мобилой мучался: подключал через к клаве, на след день вспомнил, что есть такой прикол с длиной шнура, переткнул в системник запахало, глюки были приблизительно теже
> Нет, это потому, что после вывода find'ом, но до рестарта udev был выдернут/вставлен кабель. До этого - устройство 009, после этого - 010.
Ой. Не надо было отвечать спросонья. Имелось в виду "не создал /dev/bus/usb/001/009". В любом случае, имело место несоответствие содержимого /dev/bus/usb и /proc/bus/usb, что указывает на проблемы с udev.
> Тем не менее, при наличии псевдофайлов lsusb не сработал. Видимо, ему dev-файлы нужны.
При наличии каталога /dev/bus/usb программа lsusb не смотрит в /proc/bus/usb. См. исходники libusb.
> как прикажете бороться с потенциальным переполнением корня?
Отдать ему достаточно места. /usr содержит данные, предназначенные фактически только для чтения, и поэтому на амплитуду колебаний свободного места не влияет.
> Принтер не работает после длительного аптайма, (это не первый, но редкий случай) а не при загрузке,
Это я от Вас в первый раз слышу. Исходное сообщение было про lsusb.
> Вот и интересно, что как получилось так, что пропало устройство? Его ведь udev тоже удаляет? То есть принтер при рабочем компе ок. полумесяца аптайма нормально виделся системой, а потом перестал. Я вообще не понял, что дело в dev-устройстве.
Тогда дело в кабеле. Только по пути мы еще выяснили, что у Вас есть еще непонятная проблема с udev.