[udev] Script bei disconnect eines USB-Devices aufrufen

11/11/2009 - 19:00 von Marc Haber | Report spam
Hallo,

ich habe hier einen 8fach-USB-to-Serial-Adapter und möchte gerne ein
Script aufrufen, sobald dieser Adapter eingesteckt oder entfernt wird.
Das ganze findet auf einem modifizierten Debian Stable statt (i386,
kernel 2.6.31.5, udev 0.125).

Dazu habe ich acht udev-Regeln, von denen ich hier eine paste:

|SUBSYSTEM=="tty", SUBSYSTEMS=="usb", DRIVERS=="usb", \
| KERNELS=="1-*.2.3", RUN+="/usr/local/sbin/udev-serial-event", \
| SYMLINK="USBserial03"

Der Stern kommt daher, dass das funktionieren soll, unabhàngig davon,
in welchen der beiden USB-Ports des Hostsystems der Adapter
eingesteckt wird.

Beim Einstecken des Adapters bekomme ich diese Ausgabe von udevadm
monitor (gefiltert auf die Events, die \.2\.3 enthalten):
|UEVENT[1257961108.458192] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3 (usb)
|UDEV [1257961108.458924] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3 (usb)
|UEVENT[1257961108.460789] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0 (usb)
|UEVENT[1257961108.472880] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2 (usb-serial)
|UEVENT[1257961108.472896] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2/tty/ttyUSB2 (tty)
|UDEV [1257961108.509515] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0 (usb)
|UDEV [1257961108.510221] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2 (usb-serial)
|UDEV [1257961108.525396] add /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2/tty/ttyUSB2 (tty)

Mein Script wird gerufen, der Symlink wird angelegt, alles ist gut.

Beim Abziehen des Adapters entstehen diese Events:
|UEVENT[1257961123.282083] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2/tty/ttyUSB2 (tty)
|UEVENT[1257961123.282117] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2 (usb-serial)
|UEVENT[1257961123.282134] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0 (usb)
|UEVENT[1257961123.282150] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3 (usb)
|UDEV [1257961123.316759] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2/tty/ttyUSB2 (tty)
|UDEV [1257961123.325555] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0/ttyUSB2 (usb-serial)
|UDEV [1257961123.338084] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3/1-2.2.3:1.0 (usb)
|UDEV [1257961123.343668] remove /devices/pci0000:00/0000:00:1d.0/usb1/1-2/1-2.2/1-2.2.3 (usb)

Der symlink wird gelöscht, aber mein Script nicht gerufen.

Wenn ich udevadm control --log_priority=debug aufrufe, sehe ich beim
Einstecken des Adapters auch, dass mein Script gerufen wird
(run_program-Eintràge im syslog), beim Abziehen des Adapters findet
das nicht statt.

Hat jemand eine Idee, woran das liegt und was ich noch tun könnte, um
das so hinzubekommen wie ich es gerne hàtte?

Grüße
Marc

Marc Haber | " Questions are the | Mailadresse im Header
Mannheim, Germany | Beginning of Wisdom " | http://www.zugschlus.de/
Nordisch by Nature | Lt. Worf, TNG "Rightful Heir" | Fon: *49 621 72739834
 

Lesen sie die antworten

#1 Manfred Schmitt
11/11/2009 - 21:41 | Warnen spam
Marc Haber schrieb:

ich habe hier einen 8fach-USB-to-Serial-Adapter und möchte gerne ein
Script aufrufen, sobald dieser Adapter eingesteckt oder entfernt wird.
Das ganze findet auf einem modifizierten Debian Stable statt (i386,
kernel 2.6.31.5, udev 0.125).

Dazu habe ich acht udev-Regeln, von denen ich hier eine paste:

|SUBSYSTEM=="tty", SUBSYSTEMS=="usb", DRIVERS=="usb", \
| KERNELS=="1-*.2.3", RUN+="/usr/local/sbin/udev-serial-event", \
| SYMLINK="USBserial03"



Brauchst Du nicht je zwei Regeln, eine fuer ACTION=="add" und eine fuer
ACTION=="remove"?
Siehe auch
http://dventurin.blogspot.com/2007/...emove.html
oder auch im gentoo-wiki:
http://en.gentoo-wiki.com/wiki/Auto...ith_Autofs

Und wech,
Manne

Ähnliche fragen