[РЕШЕНО] udev: не работает правило

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

IMB
Сообщения: 2491
ОС: Debian

[РЕШЕНО] udev: не работает правило

Сообщение IMB »

Доброго дня!
Мне необходимо выполнять некоторые действия в зависимости от подключение/отключения телефона к USB.
Вывод в консоль при подключении телефона:

Код: Выделить всё

usb 2-1: new high speed USB device using fsl-ehci and address 5
usb 2-1: New USB device found, idVendor=0bb4, idProduct=0dfa
usb 2-1: New USB device strings: Mfr=2, Product=3, SerialNumber=4
usb 2-1: Product: Android Phone
usb 2-1: Manufacturer: HTC
usb 2-1: SerialNumber: HT279W302273
usb 2-1: no configuration chosen from 1 choice

Для решения задачи я создал файл /etc/udev/rules.d/20-usb.rules:

Код: Выделить всё

SUBSYSTEM=="usb" ATTRS{vendor}=="0x0bb4" RUN+="/etc/init.d/network.sh start"

К сожалению при подключении телефона я не вижу никаких признаков запуска скрипта, конечно он имеет бит исполняемости, пока я могу грешить только на некорректность написания правила.
Как посоветуете модифицировать правило?
Спасибо.
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] udev: не работает правило

Сообщение NickLion »

Во всех файлах правил udev я видел запятые, тут не вижу. Может добавить?
Спасибо сказали:

IMB
Сообщения: 2491
ОС: Debian

Re: [РЕШЕНО] udev: не работает правило

Сообщение IMB »

Не помогло, конкретизировал правило:

Код: Выделить всё

SUBSYSTEM=="usb", ATTRS{vendor}=="0x0bb4", ATTRS{device}=="0x0fb4", RUN+="/etc/init.d/network.sh start"
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: [РЕШЕНО] udev: не работает правило

Сообщение drBatty »

IMB
вот здесь по другому советуют: http://rus-linux.net/lib.php?name=MyLDP/sy...ml#external-run
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

IMB
Сообщения: 2491
ОС: Debian

Re: [РЕШЕНО] udev: не работает правило

Сообщение IMB »

drBatty, простите не понял, по приведёной ссылке описана разница между RUN и PROGRAMM, судя по описанию я применяю "правильный" RUN, Вас не затруднит чуть расшифровать?
Спасибо сказали:

Аватара пользователя
Rootlexx
Бывший модератор
Сообщения: 4411
Статус: GNU generation
ОС: Debian GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение Rootlexx »

IMB
Вы указывали udev перечитать правила?
Думаю, стоит помониторить события udev: # udevadm monitor.
Спасибо сказали:

Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: [РЕШЕНО] udev: не работает правило

Сообщение drBatty »

IMB
во втором текущем варианте вроде всё верно, и должно работать.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:

NickLion
Сообщения: 3408
Статус: аватар-невидимка
ОС: openSUSE Tumbleweed x86_64

Re: [РЕШЕНО] udev: не работает правило

Сообщение NickLion »

Вот рабочая для моего mp3-плеера строка для udev:

Код: Выделить всё

ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="0402", ATTRS{idProduct}=="5668", RUN+="/usr/bin/touch /tmp/yahoo-mp3"

Замените числа и команду.
Спасибо сказали:

Аватара пользователя
vr13
Сообщения: 872
ОС: gentoo

Re: [РЕШЕНО] udev: не работает правило

Сообщение vr13 »

IMB писал(а):
30.04.2013 10:19
К сожалению при подключении телефона я не вижу никаких признаков запуска скрипта, конечно он имеет бит исполняемости, пока я могу грешить только на некорректность написания правила.

IMB писал(а):
30.04.2013 10:48

Код: Выделить всё

SUBSYSTEM=="usb", ATTRS{vendor}=="0x0bb4", ATTRS{device}=="0x0fb4", RUN+="/etc/init.d/network.sh start"

последний вариант правила синтаксически верен, а скрипт не запускается потому, что указаны неверные атрибуты добавленного ядром устройства. в последнем сообщении NickLion указано верно, и скорее всего это поможет (за одно обратите внимание на ACTION=="add/remove/change": это защитит от ненужных срабатываний), но для понимания того, что ядро идентифицировало, следует посмотреть в /sys атрибуты нового устройства

чтобы не повторяться, вот ссылка на подобное обсуждение
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

Помогите пожалуйста. У меня принтер hp laserjet 1020, в который на данный момент прошивка заливается вручную т.е. путем:

Код: Выделить всё

cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0


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

Вот вывод по включении принтера:

Код: Выделить всё

[22476.424498] usb 2-1.5.2: new high-speed USB device number 16 using ehci_hcd
[22476.536812] usb 2-1.5.2: New USB device found, idVendor=03f0, idProduct=2b17
[22476.536820] usb 2-1.5.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[22476.536826] usb 2-1.5.2: Product: HP LaserJet 1020
[22476.536831] usb 2-1.5.2: Manufacturer: Hewlett-Packard
[22476.536835] usb 2-1.5.2: SerialNumber: JL3XW8N
[22476.540268] usblp0: USB Bidirectional printer dev 16 if 0 alt 0 proto 2 vid 0x03F0 pid 0x2B17


Я добавила в /etc/udev/rules.d файл со следующим именем и содержанием:

Код: Выделить всё

# cat 71-hp1020_autoload_firmware.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="2b17", RUN+="/bin/cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0"


Вообще вот все имеющиеся там файлы:

Код: Выделить всё

/etc/udev/rules.d# ls
70-persistent-cd.rules  70-persistent-net.rules  71-hp1020_autoload_firmware.rules


После добавления своего файла, выполняла:

Код: Выделить всё

# udevadm control --reload-rules
# /etc/init.d/udev restart


После включения принтера, прошивка в него не заливается.



Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17322
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение Bizdelnick »

Помнится, я аналогичный принтер (1018 кажется) с foo2zjs заставлял работать безо всяких плясок с udev. Если прошивка лежит в правильном месте, должна автоматически загружаться. См. Принтеры Hp Laserjet 10xx (1000 1005 1018 1020) в Linux.

Upd. Если пройти по ссылке из той темы, можно прочитать следующее:
Для Ubuntu 14.04 для прошивок используется другая директория /lib/firmware/hp и решение ещё проще:
sudo getweb 1000 1005 1018 1020
У Вас же прошивка лежит в старом каталоге, откуда, видимо, и проблема.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

Bizdelnick

Это все в свое время проходила - не работает. Из из /lib/firmware/hp/ заливается автоматически, но после этого usb_printerid показывает ошибку ввода/вывода с принтером.

Так что лучше уж udev-ом. Можете подсказать что-нибудь касательно него? Я, к сожалению, не понимаю по каким принципам формируются его файлы в виртуальных фс и какие из них указывать...
Спасибо сказали:

Аватара пользователя
vr13
Сообщения: 872
ОС: gentoo

Re: [РЕШЕНО] udev: не работает правило

Сообщение vr13 »

QWERTYASDF писал(а):
15.07.2014 22:59
по включении принтера:

Код: Выделить всё

[22476.424498] usb 2-1.5.2: new high-speed USB device number 16 using ehci_hcd
...
[22476.540268] usblp0: USB Bidirectional printer dev 16 if 0 alt 0 proto 2 vid 0x03F0 pid 0x2B17


Код: Выделить всё

# cat 71-hp1020_autoload_firmware.rules
ACTION=="add", SUBSYSTEM=="usb", ATTRS{idVendor}=="03f0", ATTRS{idProduct}=="2b17", RUN+="/bin/cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0"

а /dev/usb/lp0 - существует?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17322
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение Bizdelnick »

RUN+=\"/bin/cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0\"

Перенаправление работает только в оболочке. Попробуйте /bin/cp /usr/share/foo2zjs/firmware/sihp1020.dl /dev/usb/lp0 или /bin/dash -c '/bin/cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0'.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

vr13

Ну...после включения принтера существует. Другое дело, конечно, что принтер "включатся" еще секунд 5 - что-то там ворочает/инициализирует внутри себя. Я даже перед cat вставляла sleep 10 - результат аналогичный.
Спасибо сказали:

liaonau
Сообщения: 390
ОС: gentoo

Re: [РЕШЕНО] udev: не работает правило

Сообщение liaonau »

Зачем foo2zjs, если есть hplip?

Он сам предложит скачать в том числе и готовые правила udev.
Спасибо сказали:

Аватара пользователя
vr13
Сообщения: 872
ОС: gentoo

Re: [РЕШЕНО] udev: не работает правило

Сообщение vr13 »

В этой же ветке, немного выше, посмотрите мой ответ со ссылкой на другую тему - там говорится об атрибутах устройства на шине

Потом - выясните, что у вас, ATTR или ATTRS: может быть проблема в этом. Хотя загружать firmware из udev - нехорошо, в cups нужно искать куда вклиниться с этой загрузкой
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

Bizdelnick писал(а):
15.07.2014 23:40
RUN+=\"/bin/cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0\"

Перенаправление работает только в оболочке. Попробуйте /bin/cp /usr/share/foo2zjs/firmware/sihp1020.dl /dev/usb/lp0 или /bin/dash -c '/bin/cat /usr/share/foo2zjs/firmware/sihp1020.dl > /dev/usb/lp0'.


Спасибо, помогло. Т.е. правило срабатывает. Только вот открылась новая проблема... Видимо прошивка копируется в память принтера одновременно с процессом инициализации его внутренней и/или в ОС, вообщем все из-за этого виснит и принтер не работает. Если вставить перед копированием вставить /bin/sleep 7, то результатов тоже это не дает...Можете что-нибудь посоветовать?...
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17322
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение Bizdelnick »

liaonau писал(а):
15.07.2014 23:54
Зачем foo2zjs, если есть hplip?
Как вариант.

vr13 писал(а):
15.07.2014 23:55
загружать firmware из udev - нехорошо, в cups нужно искать куда вклиниться с этой загрузкой
Я бы именно так и делал. А точнее, попытался бы разобраться, в чём причина косяков при автоматической загрузке firmware.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

liaonau писал(а):
15.07.2014 23:54
Зачем foo2zjs, если есть hplip?

Он сам предложит скачать в том числе и готовые правила udev.


Мне сейчас принтер нужен рабочим практически каждый день. Я боюсь, что в попытке что-то улучшить на уровне прошивок - получу бубны на несколько дней. С foo2zjs у меня сейчас все печатается вполне нормально. Может быть как-нибудь потом...А пока, действительно, почитаю про возможность из cups-а запускать команды (кстати, может кто подскажет, если не трудно?...)
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17322
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение Bizdelnick »

QWERTYASDF писал(а):
16.07.2014 00:31
Я боюсь, что в попытке что-то улучшить на уровне прошивок - получу бубны на несколько дней.

Если дело только в этом, то юзайте hplip. С ним проблем меньше.
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

Так у меня итак непосредственно с печатью проблем нет, зачем мне рисковать их получить? У меня задача - автоматически выполнить команду при инициализации принтера, в Linux-же такое вполне возможно сделать? И если действительно не очень верно это пытаться осуществить через udev, так может через cups тогда...Не знаете, где в последнем можно такое прописать?
Спасибо сказали:

Аватара пользователя
Bizdelnick
Модератор
Сообщения: 17322
Статус: grammatikführer
ОС: Debian GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение Bizdelnick »

QWERTYASDF писал(а):
16.07.2014 00:43
Так у меня итак непосредственно с печатью проблем нет, зачем мне рисковать их получить?

Не получите, я гарантирую это. К тому же переключиться на другой драйвер - дело максимум минуты мышетыканья в веб-морде CUPS.

QWERTYASDF писал(а):
16.07.2014 00:43
если действительно не очень верно это пытаться осуществить через udev, так может через cups тогда...Не знаете, где в последнем можно такое прописать?

Не знаю, не доводилось ковыряться. Как я уже писал, у меня foo2zjs работал "из коробки". Хотя иногда спонтанно отваливался, возможно из-за обновлений (в openSUSE дело было). Но вот вижу в списке файлов такой: /lib/udev/hplj1020 - почему бы не начать изучение вопроса с него?
Пишите правильно:
в консоли
вку́пе (с чем-либо)
в общем
вообще
в течение (часа)
новичок
нюанс
по умолчанию
приемлемо
проблема
пробовать
трафик
Спасибо сказали:

QWERTYASDF
Сообщения: 963
Статус: Чайник со свистком
ОС: GNU/Linux

Re: [РЕШЕНО] udev: не работает правило

Сообщение QWERTYASDF »

Bizdelnick
Спасибо. Ваша правда - перешла на hplip и теперь принтер до конца инициализируется автоматом по включении.
Спасибо сказали: