Linux 14.979 Themen, 106.322 Beiträge

Selbst erstellte udev-Regeln - wer kennt sich aus ?

Kuehlwalda / 21 Antworten / Flachansicht Nickles

Hi

Ich habe ein Samsung GT-I9000 (auch als Samsung Galaxy SI Smartphone bezeichnet).

Ich moechte es gerne mit meinem Pinguy OS (basiert auf Ubuntu 12.04) verbinden, allerdings gibt's da ein paar Probleme (genauer gesagt: Nur eines ! )

Ich wollte es ueber eine udev-Regel einbinden um sowohl auf den internen Speicher als auch auf die SD-Karte zugreifen zu koennen, wenn ich es anstecke. Meine dazu erstellte udev-Regel sieht bis jetzt so aus:

"SUBSYSTEMS=="usb",KERNEL=="HierLwBezEinfuegen",SYSFS{serial}=="36349FA785F400EC",SYMLINK+="GT-I9000"

Die Seriennummer habe ich ueber "lsusb-v" bzw. eine udevadm-Abfrage gefunden.

Wie man sieht ist die einzige Luecke die noch auszufuellen ist der Teil "HierLwBezEinfuegen".

Aus der "/var/log/messages" habe ich die Laufwerks-Bezeichnungen "sdc" und sdd" fuer die beiden Speicher, die auch wirklich

nur existieren, wenn das Samsung ueber USB angebunden ist. Sieht dort so aus:

 scsi5 : SCSI emulation for USB Mass Storage devices
 scsi 5:0:0:0: Direct-Access     Linux    File-CD Gadget   0000 PQ: 0 ANSI: 2
 scsi 5:0:0:1: Direct-Access     Linux    File-CD Gadget   0000 PQ: 0 ANSI: 2
 sd 5:0:0:0: Attached scsi generic sg2 type 0
 sd 5:0:0:1: Attached scsi generic sg3 type 0
 sd 5:0:0:0: [sdc] Attached SCSI removable disk
 sd 5:0:0:1: [sdd] Attached SCSI removable disk

Will man jedoch das "/dev/sdc" nach "/mnt" mounten erfolgt nach laengerer Wartezeit ein:

"umount: /dev/sdc: unbekanntes Gerät" (ja, in diesem Fall heisst es tatsaechlich "umount" !)

Fuege ich in die o.g. udev-Regel ein "sd?1" als Laufwerksbezeichnung ein und lasse den "udev" die Regeln neu einlesen, aendert sich gar nichts. Ein "GT-I9000"-device wird in /dev ebenfalls nicht angelegt, was natuerlich nichts anderes heisst als dass die Regel noch falsch ist. - Klar wenn die korrekte Laufwerksbezeichnung fehlt.

Ich habe schon im Ubuntu-Wiki unter http://wiki.ubuntuusers.de/udev nachgelesen, ebenso auf den am Fuße des Artikels angegebenen Seiten, aber da steht ueberall nur der Standardfall, der immer funktioniert.
Selbst im von mir so geschaetzten "Linux Intern Extra", Nr. 4, steht auf S.120 ein Artikel ueber "udev" allerdings ist der Abschnitt "Debuggen" auch hier nicht wirklich eine Hilfe.

Kennt sich jemand mit dem "udev" besser aus ?


Danke

Kuehlwalda

Yesterday is history, tomorrow is a mistery, today is a gift - that's why it's called the present.
bei Antwort benachrichtigen
Kuehlwalda violetta7388 „Nachtrag: Das Paket heisst: udev-notify.MfG. violetta“
Optionen

Hallo, Pross Neijohr !

Euch allen ein gutes neues Jahr und auf dass das Linuxbrett auf Nickles.de ewig weiter bestehe !

Vielen Dank an alle denn mit euren Tipps kommt man einfach immer voran:


@sunraid:
Nachdem ich die Fehler ausgelesen hatte war klar, dass in deiner Regel das "ATTRS{serial}" (was das Parent-Device bezeichnet) durch ein "ATTR{serial}" (was das eigentliche Device bezeichnet) ersetzt werden musste.

Sie sieht jetzt so aus:

KERNEL=="sd*",ATTR{serial}=="36349FA785F400EC",SYMLINK+="GT-I9000%n", ENV{SPECIALMOUNTPOINT}="/mnt/GT-I9000"

(Das Verzeichnis /mnt/GT-I9000 habe ich angelegt).

Daraufhin gab es keine Fehler mehr, nicht mittels 2>&1, nicht in /var/log/messages und ebenfalls nicht von "$?".

Mit "udevadm info --query=all --attribute-walk --name=/dev/sdb" (bzw. sdc) kann ich die beiden Speicher des Samsung (interner und die SD-Karte) die jetzt als /sdb und /sdc in /var/log/messages auftauchen, abfragen. (Vorher, s. mein urspruegliche Frage, wurden sie als /sdc und /sdd bezeichnet).

Eindeutig zu erkennen sind sie wiederum wenn ich nach der Seriennummer suche !

Die Ausgabe der "udevadm info" ist fuer sdb und sdc die gleiche und sieht so aus:

ATTRS{serial}=="36349FA785F400EC"
ATTRS{serial}=="0000:00:02.1

Hier faellt auf, dass die Seriennummer als "ATTRS" und nicht als "ATTR", wie ich sie in der Regel (s.o) bezeichnet habe, auftaucht.

Beim Laden von "sudo modprobe usb_storage" passierte nichts, offenbar war es schon geladen.

Beim Wiedereinstecken erhielt ich die uebliche Meldung wie immer "Linux File CD-Gaget 1 wurde verbunden". Die /var/log/messages zeigt trotzdem beide ("/sdb" und "/sdc") an.

"usbmount" fehlte bei mir, habe ich nachinstalliert, aber es wird nicht gefunden (?).


@fakiauso:
Danke  fuer den Tipp die Regel nach /etc/udev/rules zu kopieren, ich hatte sie nur in /lib/udev/rules erstellt.

Beim Anstoepseln kommt uebrigens keine Abfrage WIE ich es verbinden moechte. In der Gruppe "plugdev" war ich eingetragen.

"lsusb -v" zeigt als idVendor sogar Google an. Das koennte eventuell vom erkannten Android stammen, nehme ich jetzt 'mal an.

   idVendor           0x18d1 Google Inc.
   idProduct          0x4e22 Nexus S (debug)
   bcdDevice            2.31
   iManufacturer           2 samsung
   iProduct                3 GT-I9000
   iSerial                 4 36349FA785F400EC

udevadm info" hingegen zeigt nur allgemein ein "ATTRS{idVendor}=="18d1" an.

Bei deiner Regel

"SUBSYSTEMS=="usb" , KERNEL=="sd?1" , SYSFS{idVendor}=="Deine_ID" , SYMLINK+="GT_I9000"

bekomme ich, wie bei meiner eigenen ersten Version ein "unknown key 'SYSFS{idVendor}", weshalb ich es durch "ATTR{idVendor}" ersetzen musste.

Ergebnis: Keine Fehler mehr, wie zuvor gehabt, aber auch kein angelegtes Device GT-I9000.


@Violetta:
ein "sudo apt-get install udev-notify" bringt leider nur das:

Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut       
Statusinformationen werden eingelesen... Fertig
E: Paket udev-notify kann nicht gefunden werden

Habe ich es richtig verstanden, dass dein Samsung problemlos eingebunden wird ?

Falls ja, taucht hierbei der Speicher als Festplatte (z.B. sdb) oder als Partition (Bsp.: sdb1) auf ?


Nun habt ihr mir netter Weise schon 2 Regeln geliefert und bei beiden konnte ich die Fehler beseitigen. Jedoch kann man nach wie vor nur ueber "lsusb -v", in der "/var/log/messages" und auch am Bildschirm (wegen "Linux File CD-Gaget 1 wurde verbunden") sehen, dass das Smartphone erkannt wurde.

Ein Einbinden erfolgt leider noch immer nicht.

Hat noch jemand einen Tipp woran es liegen koennte ?

Danke

Kuehlwalda
Yesterday is history, tomorrow is a mistery, today is a gift - that's why it's called the present.
bei Antwort benachrichtigen