# [solved] udev-rule will nicht :(

## Yonathan

hiho

ihc habe für meinen mp3-player eine udev-rule geschrieben, damit ich ihn einfacher mounten kann. die rule sieht folgendermaßen aus:

```
BUS="usb",SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ",SYSFS{idVendor}=="10d6",NAME="%k", SYMLINK="mp3"
```

die infos dazu habe ich aus:

```
udevinfo -a -p $(udevinfo -q path -n /dev/sda)

looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1'

:

    BUS=="usb"

    ID=="3-1"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="00"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="8"

    SYSFS{bMaxPower}=="100mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0100"

    SYSFS{bmAttributes}=="80"

    SYSFS{configuration}==""

    SYSFS{devnum}=="2"

    SYSFS{idProduct}=="1100"

    SYSFS{idVendor}=="10d6"

    SYSFS{maxchild}=="0"

    SYSFS{product}=="USB 2.0_FS_ FLASH DISK "

    SYSFS{serial}=="USB 2.0_FS_ FLASH DISK "

    SYSFS{speed}=="12"

    SYSFS{version}==" 1.10"
```

warum funktioniert das nun nicht? habe sogar den rechner schon neugestartet und dann nochmal den mp3-player reingesteckt, aber außer

/dev/sda 

wird nix angelegt  :Sad: 

lg. yona

----------

## deejay

Hi,

gib mal 

```
udevstart 
```

als root ein und schau dann nochmal nach, ob der Link angelegt wird? Bei mir ist es zur Zeit auch so, dass mein USB-Stick und die USB-Platte  beim einstecken 

nicht erkannt werden. Hat komischerweise schonmal funktioniert. Habe auch in der local.start das udevstart stehen, wie es von einigen empfohlen wurde, bringt aber leider auch nix. Es funktioniert zur Zeit halt erst bei manueller eingabe dieses Befehls ...

Gruß

dee

----------

## Yonathan

udevstart ändert leider nix an dem, was in /dev zu finden ist  :Sad: 

es wird weiterhin nur /dev/sda angelegt, aber kein /dev/mp3

yona

----------

## reyneke

Kann es sein, daß Du etwas schlampig mit der Verteilung der Kommata und Whitspaces zwischen den Variablen der Regel warst. Sieht für mich so aus. udevd ist da nach meinen Erfahrungen sehr pingelig: Da fehlt jeweils ein Leerzeichen vor SYSFS{serial} und SYSFS{idVendor}, sowie vor NAME.

```

BUS="usb", SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ", SYSFS{idVendor}=="10d6", NAME="%k", SYMLINK="mp3"

```

Probier das mal so, vielleicht klappts ja.

HTH,

rey.

P.S.: Dein jetziges /dev/sda wird über eine Standard-rule erzeugt, die sich in /etc/udev.d/50-udev.rules befindet.

----------

## Yonathan

ich wusste nicht, dass die leerzeichen so eminent wichtig sind.

habe es angepasst, aber geändert hat sich nix  :Sad: 

yona

----------

## tuam

 *Yonathan wrote:*   

> habe es angepasst, aber geändert hat sich nix 
> 
> 

 

Wo hast Du die Regel einsortiert? Udev bricht die Suche nach der ersten passenden Regel ab.

Was sagt das Syslog beim Einstecken?

FF,

 Daniel

----------

## firefly

bist du dir sicher, das der inhalt der drei verwendeten SYSFS-variablen sich nicht ändert??

----------

## Yonathan

also: die oben stehende rule ist in /etc/udev/rules.d/10-local.rules

```
[  410.027553] ohci_hcd 0000:00:02.1: wakeup

[  410.442904] usb 3-1: new full speed USB device using ohci_hcd and address 2

[  410.613540] scsi0 : SCSI emulation for USB Mass Storage devices

[  410.613779] usb-storage: device found at 2

[  410.613782] usb-storage: waiting for device to settle before scanning

[  415.609220]   Vendor:           Model:                   Rev:

[  415.609231]   Type:   Direct-Access                      ANSI SCSI revision:

00

[  415.620475] SCSI device sda: 503521 512-byte hdwr sectors (258 MB)

[  415.627331] sda: Write Protect is off

[  415.627338] sda: Mode Sense: 00 c0 00 00

[  415.627340] sda: assuming drive cache: write through

[  415.646366] SCSI device sda: 503521 512-byte hdwr sectors (258 MB)

[  415.653152] sda: Write Protect is off

[  415.653159] sda: Mode Sense: 00 c0 00 00

[  415.653162] sda: assuming drive cache: write through

[  415.653166]  sda: unknown partition table

[  415.667134] Attached scsi removable disk sda at scsi0, channel 0, id 0, lun 0

[  415.667902] Attached scsi generic sg0 at scsi0, channel 0, id 0, lun 0,  type

 0

[  415.668968] usb-storage: device scan complete
```

```
looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1':

    BUS=="usb"

    ID=="3-1"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="00"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="8"

    SYSFS{bMaxPower}=="100mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0100"

    SYSFS{bmAttributes}=="80"

    SYSFS{configuration}==""

    SYSFS{devnum}=="2"

    SYSFS{idProduct}=="1100"

    SYSFS{idVendor}=="10d6"

    SYSFS{maxchild}=="0"

    SYSFS{product}=="USB 2.0_FS_ FLASH DISK "

    SYSFS{serial}=="USB 2.0_FS_ FLASH DISK "

    SYSFS{speed}=="12"

    SYSFS{version}==" 1.10"
```

sieht alles aus wie vorher.

yona

----------

## Blood_Seeker

Ich glaube das musst bei dir noch ergänzen.

(Das kannst du genau so bei dir eintragen.)

```

KERNEL="sd?1"

```

Hoffe ich konnte helfen...

----------

## Yonathan

```
BUS="usb", SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ", SYSFS{idVendor}=="10d6", NAME="%k", SYMLINK="mp3", KERNEL="sd?1"
```

so schaut das jetzt bei mir so aus, aber nach einem udevstart hat sich nix geändert  :Sad: 

yona

----------

## tuam

 *Yonathan wrote:*   

> so schaut das jetzt bei mir so aus, aber nach einem udevstart hat sich nix geändert 

 

Ist er allergisch auf = statt == ? Das mit dem Kernel dürfte nützlich sein, damit die Regel nicht auf /dev/sda und /dev/sda1 gleichzeitig passt.

BUS=="usb", SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ", SYSFS{idVendor}=="10d6", NAME="%k", SYMLINK="mp3", KERNEL=="sd?1"

-------^

----------

## misterjack

 *Yonathan wrote:*   

> 
> 
> ```
> BUS="usb", SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ", SYSFS{idVendor}=="10d6", NAME="%k", SYMLINK="mp3", KERNEL="sd?1"
> ```
> ...

 

kein wunder, zwei == sind eins zuviel, abschließende Leerzeichen bei SYSFS-Variablen lässt man auch weg:

```
BUS="usb", SYSFS{serial}="USB 2.0_FS_ FLASH DISK", SYSFS{idVendor}="10d6", NAME="%k", SYMLINK="mp3", KERNEL="sd?1"
```

Eine SYSFS-Angabe reicht in der Regel:

```
BUS="usb", SYSFS{serial}="USB 2.0_FS_ FLASH DISK", NAME="%k", SYMLINK="mp3", KERNEL="sd?1"
```

beim nächsten mal: http://de.gentoo-wiki.com/Udev_Rules  :Wink: 

----------

## Polynomial-C

Hi,

 *misterjack wrote:*   

> kein wunder, zwei == sind eins zuviel...

 

Falsch.

 *man udev wrote:*   

> 
> 
> ```
>        ==     Compare for equality.
> 
> ...

 (Auszug aus der manpage von udev-079)

Will heißen, == wird verwendet, wenn man abfragen möchte, ob eine Variable einen bestimmten Wert hat:

```
BUS=="usb", KERNEL=="sd[a-z]*", SYSFS{serial}=="blah"
```

und = wird benutzt, wenn man einen Wert einer Variablen zuweisen möchte:

```
NAME="%k", SYMLINK="usbdisk%n", GROUP="disk"
```

Grüße

Polynomial-C

----------

## Yonathan

egal ob

```
#BUS="usb", SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ", NAME="%k", SYMLINK="mp3", KERNEL="sd?1"

BUS=="usb", SYSFS{serial}=="USB 2.0_FS_ FLASH DISK", NAME="%k", SYMLINK="mp3", KERNEL="sd?1"
```

ich das unkommentierte oderkommentierte nehme, es ändert sich nix, ich erhalte immernoch nicht /dev/mp3

yona

----------

## Roller

Hast du den allerersten Eintrag der Ausgabe genommen, oder hast du da, wo die 2 Punkte sind was übersprungen?

 *Quote:*   

> 
> 
> ```
> BUS="usb",SYSFS{serial}=="USB 2.0_FS_ FLASH DISK ",SYSFS{idVendor}=="10d6",NAME="%k", SYMLINK="mp3"
> ```
> ...

 

Denn wenn der /dev/sda anlegt, ist BUS=="usb" falsch. Dann musst du den Eintrag mit BUS=="scsi" nehmen. Als Beispiel eine Regel von mir:

Udevinfo:

```

udevinfo -a -p $(udevinfo -q path -n /dev/sda)

udevinfo starts with the device the node belongs to and then walks up the

device chain, to print for every device found, all possibly useful attributes

in the udev key format.

Only attributes within one device section may be used together in one rule,

to match the device for which the node will be created.

device '/sys/block/sda' has major:minor 8:0

  looking at class device '/sys/block/sda':

    KERNEL=="sda"

    SUBSYSTEM=="block"

    SYSFS{dev}=="8:0"

    SYSFS{range}=="16"

    SYSFS{removable}=="1"

    SYSFS{size}=="512000"

    SYSFS{stat}=="      60      500      798       60        0        0        0        0        0       60       60"

follow the "device"-link to the physical device:

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:1d.7/usb1/1-5/1-5:1.0/host0/target0:0:0/0:0:0:0':

    BUS=="scsi"

    ID=="0:0:0:0"

    DRIVER=="sd"

    SYSFS{device_blocked}=="0"

    SYSFS{iocounterbits}=="32"

    SYSFS{iodone_cnt}=="0x72"

    SYSFS{ioerr_cnt}=="0x4"

    SYSFS{iorequest_cnt}=="0x72"

    SYSFS{max_sectors}=="240"

    SYSFS{model}=="BAR             "

    SYSFS{queue_depth}=="1"

    SYSFS{queue_type}=="none"

    SYSFS{rev}=="2.00"

    SYSFS{scsi_level}=="3"

    SYSFS{state}=="running"

    SYSFS{timeout}=="30"

    SYSFS{type}=="0"

    SYSFS{vendor}=="USB     "

```

Passende und funktionierende Regel:

```

BUS="scsi", SYSFS{model}="BAR", KERNEL="sd?1", NAME="Stick"

```

Ob das mit "==" oder mit"=" einen Unterschied macht habe ich noch nicht probiert.

Gruß

Roller

----------

## misterjack

 *Polynomial-C wrote:*   

> Hi,
> 
>  *misterjack wrote:*   kein wunder, zwei == sind eins zuviel... 
> 
> Falsch.
> ...

 

Jo kann sein, aber warum funktionieren meine Regeln dann nur mit einem =?

----------

## Yonathan

@Roller:

Ich bin mir net ganz sicher, was du meinst, mit : hast du da was vergessen?

```
udevinfo -a -p $(udevinfo -q path -n /dev/sda)

device '/sys/block/sda' has major:minor 8:0

  looking at class device '/sys/block/sda':

    KERNEL=="sda"

    SUBSYSTEM=="block"

    SYSFS{dev}=="8:0"

    SYSFS{range}=="16"

    SYSFS{removable}=="1"

    SYSFS{size}=="503521"

    SYSFS{stat}=="      17      336      353      368        0        0        0        0        0      264      368"

follow the "device"-link to the physical device:

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1/3-1:1.0/host0/target0:0:0/0:0:0:0':

    BUS=="scsi"

    ID=="0:0:0:0"

    DRIVER=="sd"

    SYSFS{device_blocked}=="0"

    SYSFS{iocounterbits}=="32"

    SYSFS{iodone_cnt}=="0x63"

    SYSFS{ioerr_cnt}=="0x0"

    SYSFS{iorequest_cnt}=="0x63"

    SYSFS{max_sectors}=="240"

    SYSFS{queue_depth}=="1"

    SYSFS{queue_type}=="none"

    SYSFS{scsi_level}=="3"

    SYSFS{state}=="running"

    SYSFS{timeout}=="30"

    SYSFS{type}=="0"

    SYSFS{vendor}==""

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1/3-1:1.0/host0/target0:0:0':

    BUS==""

    ID=="target0:0:0"

    DRIVER=="unknown"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1/3-1:1.0/host0':

    BUS==""

    ID=="host0"

    DRIVER=="unknown"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1/3-1:1.0':

    BUS=="usb"

    ID=="3-1:1.0"

    DRIVER=="usb-storage"

    SYSFS{bAlternateSetting}==" 0"

    SYSFS{bInterfaceClass}=="08"

    SYSFS{bInterfaceNumber}=="00"

    SYSFS{bInterfaceProtocol}=="50"

    SYSFS{bInterfaceSubClass}=="05"

    SYSFS{bNumEndpoints}=="02"

    SYSFS{modalias}=="usb:v10D6p1100d0100dc00dsc00dp00ic08isc05ip50"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3/3-1':

    BUS=="usb"

    ID=="3-1"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="00"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="8"

    SYSFS{bMaxPower}=="100mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0100"

    SYSFS{bmAttributes}=="80"

    SYSFS{configuration}==""

    SYSFS{devnum}=="2"

    SYSFS{idProduct}=="1100"

    SYSFS{idVendor}=="10d6"

    SYSFS{maxchild}=="0"

    SYSFS{product}=="USB 2.0_FS_ FLASH DISK "

    SYSFS{serial}=="USB 2.0_FS_ FLASH DISK "

    SYSFS{speed}=="12"

    SYSFS{version}==" 1.10"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1/usb3':

    BUS=="usb"

    ID=="usb3"

    DRIVER=="usb"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bDeviceClass}=="09"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bMaxPacketSize0}=="8"

    SYSFS{bMaxPower}=="  0mA"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bNumInterfaces}==" 1"

    SYSFS{bcdDevice}=="0206"

    SYSFS{bmAttributes}=="e0"

    SYSFS{configuration}==""

    SYSFS{devnum}=="1"

    SYSFS{idProduct}=="0000"

    SYSFS{idVendor}=="0000"

    SYSFS{manufacturer}=="Linux 2.6.14-gentoo-r5 ohci_hcd"

    SYSFS{maxchild}=="3"

    SYSFS{product}=="OHCI Host Controller"

    SYSFS{serial}=="0000:00:02.1"

    SYSFS{speed}=="12"

    SYSFS{version}==" 1.10"

  looking at the device chain at '/sys/devices/pci0000:00/0000:00:02.1':

    BUS=="pci"

    ID=="0000:00:02.1"

    DRIVER=="ohci_hcd"

    SYSFS{class}=="0x0c0310"

    SYSFS{device}=="0x0067"

    SYSFS{irq}=="10"

    SYSFS{local_cpus}=="1"

    SYSFS{modalias}=="pci:v000010DEd00000067sv0000147Bsd00001C02bc0Csc03i10"

    SYSFS{subsystem_device}=="0x1c02"

    SYSFS{subsystem_vendor}=="0x147b"

    SYSFS{vendor}=="0x10de"

  looking at the device chain at '/sys/devices/pci0000:00':

    BUS==""

    ID=="pci0000:00"

    DRIVER=="unknown"
```

das ist die ausgabe, die ich habe

und da habe ich mir den usb-teil draus genommen und versucht die udev-rule zu schreiben, doch wie man sieht erfolglos  :Sad: 

yona

----------

## misterjack

hast du mal es mit meinen lösungsansatz probiert?

----------

## Roller

 *Yonathan wrote:*   

> @Roller:
> 
> Ich bin mir net ganz sicher, was du meinst, mit : hast du da was vergessen?
> 
> [code]udevinfo -a -p $(udevinfo -q path -n /dev/sda)
> ...

 

Das ist der Teil, aus dem du dir die Regel bauen musst.

Has tu dir  das  schon mal angeschaut?

----------

## Yonathan

@misterjack: ja, habe ich, aber das brachte auch keinen erfolg

@Roller: ich haber die gentoo-doku benutzt, um die udev-rule zu schreiben.

wie soll ich denn aus den angaben eine rule formulieren? da ist doch nix drin, was man verwerten kann!

werde es jetzt noch mal mit wiki probieren.

[edit]

habe jetzt folgende regel:

```
BUS="scsi", KERNEL="sd?", SYSFS{vendor}="", NAME="%k", SYMLINK="mp3"
```

damit bekomme ich den link hin.

[/edit]

danke an alle geduldigen.

yona

----------

