LINUX.ORG.RU

1) откуда ты взял, что ядро видит принтер?

2) запусти lsusb от root - проблема исчезает?

3) обычно проблемы с USB-принтерами вызваны использованием кабелей, не сертифицированных на соответствие стандарту USB 2.0

AEP ★★★★★
()

Недавно видел подобное. по lsusb показывается что есть девайс како-то, а вот когда в ядре включаешь поддержку usb принтера - появляется нормальное описание, и что это принтер :;]

galchyonok ★★
()
Ответ на: комментарий от svyat

> 1) откуда ты взял, что ядро видит принтер?

> Да мне тоже стало жутко интересно, как это у тебя получилось?

Полагаю dmesg.

fashka
()
Ответ на: комментарий от AEP

>откуда ты взял, что ядро видит принтер?

Потому, что при откключении/включении кабеля от принтера получается:

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

Нет, такое бывает после длительного аптайма.

anonymous
()
Ответ на: комментарий от anonymous

Понятно. Как раз те сведения, которые нужны для диагностики.

Проблема у тебя связана с недоступностью псевдофайлов в /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, но не повредит и для других)

SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", NAME="%c"

(срабатывает для ядер 2.6.22 и новее, но не повредит и для других)

SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"

AEP ★★★★★
()
Ответ на: комментарий от AEP

Во-первых, хотелось бы поинтересоваться, откуда берётся такая
 диагностика ( про /proc/bus/usb и /dev/bus/usb) это только из док
 или есть утилиты?

Debian stable (2007 кажется), ядро из бэкпортов, 2.6.22-3, 


grep bus/usb /etc/udev/rules.d/*

/etc/udev/rules.d/udev.rules:SUBSYSTEM=="usb_device",  
 PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf
 bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \

find /dev/bus/usb
/dev/bus/usb
/dev/bus/usb/004
/dev/bus/usb/004/001
/dev/bus/usb/002
/dev/bus/usb/002/001
/dev/bus/usb/003
/dev/bus/usb/003/001
/dev/bus/usb/001
/dev/bus/usb/001/002
/dev/bus/usb/001/001


find /proc/bus/usb
/proc/bus/usb
/proc/bus/usb/004
/proc/bus/usb/004/001
/proc/bus/usb/003
/proc/bus/usb/003/001
/proc/bus/usb/002
/proc/bus/usb/002/001
/proc/bus/usb/001
/proc/bus/usb/001/009
/proc/bus/usb/001/001
/proc/bus/usb/devices


После /etc/init.d/udev restart

find /proc/bus/usb
/proc/bus/usb
/proc/bus/usb/004
/proc/bus/usb/004/001
/proc/bus/usb/003
/proc/bus/usb/003/001
/proc/bus/usb/002
/proc/bus/usb/002/001
/proc/bus/usb/001
/proc/bus/usb/001/010
/proc/bus/usb/001/001
/proc/bus/usb/devices

find /dev/bus/usb
/dev/bus/usb
/dev/bus/usb/004
/dev/bus/usb/004/001
/dev/bus/usb/002
/dev/bus/usb/002/001
/dev/bus/usb/003
/dev/bus/usb/003/001
/dev/bus/usb/001
/dev/bus/usb/001/010
/dev/bus/usb/001/002
/dev/bus/usb/001/001


Принтер начал печатать. Что случилось, почему устройство может
 перестать монтироваться в /dev/bus/usb? Глючит udev? И что это
за /dev/bus/usb/001/002 ?

anonymous
()
Ответ на: комментарий от anonymous

Действительно, какой-то непонятный глюк с 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 и ядра раньше имели место глюки (но сейчас о таких глюках мне неизвестно).

AEP ★★★★★
()
Ответ на: комментарий от AEP

>не создал /proc/bus/usb/001/010

Нет, это потому, что после вывода 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, с чем не бывает ;)

anonymous
()
Ответ на: комментарий от anonymous

все такие странные глюки в 90% случаев исправляются подклюсением устройства через шнур покороче или выниманием удлинителя из цепочки, я так с мобилой мучался: подключал через к клаве, на след день вспомнил, что есть такой прикол с длиной шнура, переткнул в системник запахало, глюки были приблизительно теже

erfea ★★★★★
()
Ответ на: комментарий от anonymous

> >не создал /proc/bus/usb/001/010

> Нет, это потому, что после вывода 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.

AEP ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.