udev rule funktioniert nicht

Du kommst mit der Installation nicht voran oder willst noch was nachfragen? Schau auch in den "Tipps und Tricks"-Bereich.
Antworten
Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

udev rule funktioniert nicht

Beitrag von chabayo » 31.07.2006 13:17:56

Ich moechte in /dev den Eintrag zen wenn ich meinen MP3 Player anstoepsel.

[nachtrag]
Bin diesem Howto gefolgt: http://de.gentoo-wiki.com/HOWTO_Udev ,
worin ein Link dazu ist: http://de.gentoo-wiki.com/Udev_Rules
...dies ist das bessere Howto.
[/nachtrag]

Dachte das sollte so funktionieren:
/dev/udev/rules.d/010_ZEN hat geschrieben:SUBSYSTEM=="usb", SYSFS{product}=="Zen Nano Plus", SYSFS{manufacturer}=="CREATIVE", NAME="zen"
Die Angaben sind aus dem Ergebnis kopiert...

Code: Alles auswählen

udevinfo -a -p `pwd`
...dabei bin ich natuerlich im entsprechenden Verzeichnis, klar, weil ja auch Produkt und Hersteller passen.

Ich hab auch beachtet das sie aus dem gleichen Hash-Tree (kann man das so nennen?) stammen. Nach meinen Informationen ist das notwendig, darum beachtet.

Aber selbst nach einem restart des udev in /etc/init.d klemmt das System den Player immer an /dev/sda1 .

Loesungshilfen??


chab
Zuletzt geändert von chabayo am 02.08.2006 12:57:52, insgesamt 2-mal geändert.
Watt about the non-digital!?

BermudaHonk
Beiträge: 184
Registriert: 21.09.2005 10:43:37
Wohnort: Dresden

Beitrag von BermudaHonk » 01.08.2006 22:36:01

Hi,
versuchs mal mit "BUS" anstelle von "SUBSYSTEM".

Gruß BermudaHonk
The only Microsoft product ever to ship that doesn't suck will probably be a vacuum cleaner!

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Beitrag von chabayo » 02.08.2006 09:03:47

Danke fuer deine Antwort.

...das aendert nichts.

Hatte inzwischen auch mal so versucht:
  • SYSFS{idProduct}=="4139", NAME="007"
...weil ich dachte es koennte vielleicht ein Problem ueber den Zeichensatz, sprich "LOCALES" geben, und mit Ziffern tritt dies nicht auf.

Aber hilft nicht.
Watt about the non-digital!?

Benutzeravatar
Baer
Beiträge: 373
Registriert: 08.09.2004 17:09:13
Wohnort: Zürich

Beitrag von Baer » 02.08.2006 11:29:14

Hallo chabayo
in Meinen Regeln hab ich nur einfache = und es funktioniert,
Könnte es sein das sich ein Punkt eingeschlichen hat? im Post seh ich das nicht ganz klar und mir passieren immer wieder solche Patzer.
Gruss urs

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Beitrag von chabayo » 02.08.2006 13:56:14

Hab inzwischen oben zwei Links zu den Howto's denen ich gefolgt bin angebracht.

Bin dort im zweiten nun auch endlich auf das udevinfo -q path -p /dev/sda1 gestossen, wusste doch das das gehen sollte.

Doch, o wunder
udevinfo -q path -p/dev/sda hat geschrieben:no record for '/dev/sda1' in database
...und...
ls /dev/sda1 hat geschrieben:/dev/sda1
...korrekte Ausgabe; kann sda1 auch mounten.

Bin dann ueber udevcontrol gestolpert, weil davon in der udev.conf die rede war; hab dort nachgesehen um mal zu sehen ob ich dort nen debug-Mode anstellen koennte und gesehen das das auch mit udevcontrol moeglich ist.

Dann gleich mal in /var/log/syslog nachgekuckt - was fuer ein Chaos.

Nun dadurch auf den Gedanken gekommen es mal uber scsi zu versuchen erbrachte folgendes:

Code: Alles auswählen

cd /sys/bus/scsi/devices/*
udevinfo -a -p `pwd`
...daraus hab ich dann den Hash mit einleuchtenden Werten fuer SERIAL/PRODUCT/MANUFACTURER genommen, und 'zufaellig' ist dabei ein BUS=="usb" rausgesprungen - irgendwie gar nicht soviel anders wie aus der Urspruenglichen Regel, und dann auch noch mit der Abaenderung wie von BermudaHonk vorgeschlagen - egal, ueber kurz oder lang funktioniert es mit dieser Konfiguration:
  • BUS=="usb", \
    SYSFS{serial}=="0002F69DE60A490A", \
    SYSFS{product}=="Zen Nano Plus", \
    SYSFS{manufacturer}=="CREATIVE", NAME="zen"
FEHLER:Nicht klar festzustellen, ich hab die Regel einfach /etc/udev/rules.d/udev.rules angehaengt, dort funktioniert sie. Es ist ein Symlink auf ../udev.rules .
Mein eigenes File 010-zen wird wohl nicht geparst. Warum kann ich nicht sagen.
Aus einer Vermutung heraus hab ich auch schon ein .rules angehaengt -> 010-zen.rules, oder auch den Bindestrich mit einem underscore gewechselt -> 010_zen.rules, NEIN.

@Baer:

Habs auch mit einem = versucht, half nicht darueber hinweg; bin auch mal kurz /etc/udev/rules.d/udev.rules durchgegangen, und dort sind es auch zwei == , lediglich bei NAME ist es dort eines.

Nochmal danke fuer eure Ratschlaege.


chab

P.S. was mich als naechstes interessiert ist wie man das device gleich automatisch mounted, und ggf. ein Script ausfuehrt ( das mir z.B. neue Musik aufspielt ).
Watt about the non-digital!?

Benutzeravatar
Mike1985
Beiträge: 148
Registriert: 01.05.2005 14:38:11
Wohnort: Lienz / Austria
Kontaktdaten:

Beitrag von Mike1985 » 02.08.2006 18:40:08

Hallo!

probier vl man bei der datei nur 2 ziffern zu verwenden 010-zen.rules --> 10-zen.rules, da zumindest bei mir nur 2 stellige angaben zu finden sind!

du kannst an deine udev-regel ein

Code: Alles auswählen

RUN+="befehl"
anhängen, um einen befehl auszuführen.

mfg

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.08.2006 19:43:08

Baer hat geschrieben:in Meinen Regeln hab ich nur einfache = und es funktioniert,
Gut beobachtet, bei neueren Versionen wird zwischen "Vergleich" (entspricht "==") und "Zuweisung" (entspricht "=") unterschieden:

Hier die gleiche Regel aus Sarge und Etch:
udev.rules aus sarge (udev 0.056-3) hat geschrieben: # SCSI devices
BUS="scsi", KERNEL="sr[0-9]*", NAME="scd%n", SYMLINK="sr%n"
udev.rules aus etch (udev 0.093-1) hat geschrieben: # SCSI devices
BUS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
Gruß
gms

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Beitrag von chabayo » 02.08.2006 20:27:23

Mike1985 hat geschrieben:probier vl man bei der datei nur 2 ziffern zu verwenden 010-zen.rules --> 10-zen.rules, da zumindest bei mir nur 2 stellige angaben zu finden sind!

mfg
...treffer und versenkt, Danke und Glueckwunsch.


Aber das mit dem RUN+= haut nicht so ganz hin. Hab jetzt:

Code: Alles auswählen

PROGRAM="/etc/udev/exec.d/zen.sh &"
&&

Code: Alles auswählen

#!/bin/sh
/bin/touch /root/zen_connected
/usr/X11R6/bin/xmessage "ZEN NANO"
...und damit erstellt er zwar die Datei /root/zen_connected , aber die zweite Zeile scheint nicht zu funktionieren.
Watt about the non-digital!?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.08.2006 20:41:22

was hat bei RUN nicht funktioniert ? PROGRAM sollte eigentlich nur für die Erstellung von Devicenamen verwendet werden.

Deine "message" Zeile wird wohl wegen fehlender DISPLAY Variable bzw. wegen mangelnder Authorisierung auf das DISPLAY schief gehen

Gruß
gms

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Beitrag von chabayo » 02.08.2006 21:15:52

...aehm, ja, PROGRAM oder RUN, macht hier scheinbar keinen unterschied...oder heisst 'sollte' das ich das falsch annehme?

Und mit dem Rest hast du vollkommen recht, ich setze also im Script DISPLAY:=0, und vorher oeffne ich als user mit xhost + das Display.

Es geht.

Ist aber doch recht unsicher, gibts da einen workaround??

Habs erstmal so versucht, aber nutzt nichts:

Code: Alles auswählen

#!/bin/sh
export DISPLAY=:0
USER=root
HOME=/root
/usr/bin/xauth merge /home/chabayo/.Xauthority
/usr/X11R6/bin/xmessage "$USER"
Watt about the non-digital!?

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 02.08.2006 21:53:37

chabayo hat geschrieben:...aehm, ja, PROGRAM oder RUN, macht hier scheinbar keinen unterschied...oder heisst 'sollte' das ich das falsch annehme?
PROGRAMM ist eigentlich der Erstellung der Devicenodes vorbehalten. Über PROGRAM gestartete Programme können daher auch (noch) nicht auf das Device zugreifen, über RUN gestartete Programme jedoch schon.
chabayo hat geschrieben:.
Es geht.
Ist aber doch recht unsicher, gibts da einen workaround??
probiers einmal so:

Code: Alles auswählen

#!/bin/sh
export DISPLAY=:0
USER=root
HOME=/root
XAUTHORITY=/home/chabayo/.Xauthority; export XAUTHORITY
/usr/X11R6/bin/xmessage "$USER"
Gruß
gms

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Beitrag von chabayo » 02.08.2006 22:39:09

...danke, das funktioniert auch nicht.

Ich dachte auch ich koennte fuer den user root mit xhost +local:root ne connection erlauben, aber irgendwie hab ich udevd ueberlastet. Wahrscheinlich haengt ein execve irgendwo im queue das er nicht abarbeiten konnte als er keinen Zugriff auf das Display hatte.

Da hilft kein 'udevcontrol start_exec_queue', oder ein '/etc/init.d/restart' - zu doof.

Gut das ich Linux hab, da braucht es keinen reset - sagt man, oder sagen welche dies koennen.

Udev gefaellt mir, ist etwas sehr praktisches, genau wie acpid - irgendwie sind das die zwei faszinierendsten Programme bei meinem Debian.
Watt about the non-digital!?

Benutzeravatar
chabayo
Beiträge: 930
Registriert: 17.08.2005 07:44:33
Kontaktdaten:

Beitrag von chabayo » 02.08.2006 23:29:38

Korrektur @gms.

Dein Ding mit export XAUTHORITY funktioniert doch.

Auch mein ueberladeter queue war ne Falschmeldung, hab spaeter festgestellt das der MP3-Player nen haenger hatte.

Jetzt isses so, das das Script scheinbar dreimal ausgefuehrt wird, wahrscheinlich koennte das erledigt werden indem ich meine rule etwas genauer spezifiziere.


Danke & n8

chab
Watt about the non-digital!?

Antworten