# udev-Regeln funktionieren bei mir nicht?

## slick

Wollte mir eine udev-Regel erstellen. Bin nach dem Wiki vorgegangen. Ich erstelle also eine einfache Testregel in /etc/udev/rules.d/10-myown.rules

```
BUS=="usb", SYSFS{product}=="Windows Mobile Device", KERNEL=="sd?1", NAME="%k", SYMLINK="handy"
```

Nach Aussagen braucht man nichts neustarten.  Trotz der Regel passiert aber garnichts. Nachdem ich mir dann Hilfe im IRC gesucht hatte konnten wir feststellen das anscheinend gar keine Regeln bei mir laufen. Selbst folgende Test-Regeln tuen garnix, habe auch mal zwischendurch was anderes angesteckt. 

```
BUS=="*", SYMLINK+="debug/%k_%n"

SYMLINK+="debug/%k_%n"
```

Dabei wollte ich doch nur eine simple Regel für mein Handy. Vielleicht helfen jemand die folgenden Infos weiter. Jemand eine Idee wie ich zu eigenen Regeln komme?

```
# udevinfo -a -p /block/sde/sde1

 

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.

 

  looking at device '/block/sde/sde1':

    KERNEL=="sde1"

    SUBSYSTEM=="block"

    SYSFS{stat}=="     143      143        0        0"

    SYSFS{size}=="1983495"

    SYSFS{start}=="249"

    SYSFS{dev}=="8:65"

 

  looking at device '/block/sde':

    ID=="sde"

    BUS=="block"

    DRIVER==""

    SYSFS{stat}=="      12      132      151      167        0        0        0        0        0      167      167"

    SYSFS{size}=="1984000"

    SYSFS{removable}=="1"

    SYSFS{range}=="16"

    SYSFS{dev}=="8:64"

 

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host39/target39:0:0/39:0:0:0':

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

    BUS=="scsi"

    DRIVER=="sd"

    SYSFS{ioerr_cnt}=="0x2"

    SYSFS{iodone_cnt}=="0x19"

    SYSFS{iorequest_cnt}=="0x19"

    SYSFS{iocounterbits}=="32"

    SYSFS{timeout}=="30"

    SYSFS{state}=="running"

    SYSFS{rev}=="1.60"

    SYSFS{model}=="WIZA200"

    SYSFS{vendor}=="WM5torag"

    SYSFS{scsi_level}=="3"

    SYSFS{type}=="0"

    SYSFS{queue_type}=="none"

    SYSFS{queue_depth}=="1"

    SYSFS{device_blocked}=="0"

    SYSFS{max_sectors}=="240"

 

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host39/target39:0:0':

    ID=="target39:0:0"

    BUS==""

    DRIVER==""

 

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host39':

    ID=="host39"

    BUS==""

    DRIVER==""

 

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0':

    ID=="2-5:1.0"

    BUS=="usb"

    DRIVER=="usb-storage"

    SYSFS{modalias}=="usb:v045EpFFFFd0000dc00dsc00dp00ic08isc06ip50"

    SYSFS{bInterfaceProtocol}=="50"

    SYSFS{bInterfaceSubClass}=="06"

    SYSFS{bInterfaceClass}=="08"

    SYSFS{bNumEndpoints}=="02"

    SYSFS{bAlternateSetting}==" 0"

    SYSFS{bInterfaceNumber}=="00"

 

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2/2-5':

    ID=="2-5"

    BUS=="usb"

    DRIVER=="usb"

    SYSFS{configuration}==""

    SYSFS{serial}=="DA411178E57E0C225BD3648F6BD9378C0C246906"

    SYSFS{product}=="Windows Mobile Device"

    SYSFS{manufacturer}=="Microsoft"

    SYSFS{maxchild}=="0"

    SYSFS{version}==" 2.00"

    SYSFS{devnum}=="124"

    SYSFS{speed}=="12"

    SYSFS{bMaxPacketSize0}=="64"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bDeviceClass}=="00"

    SYSFS{bcdDevice}=="0000"

    SYSFS{idProduct}=="ffff"

    SYSFS{idVendor}=="045e"

    SYSFS{bMaxPower}=="100mA"

    SYSFS{bmAttributes}=="c0"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bNumInterfaces}==" 1"

 

  looking at device '/devices/pci0000:00/0000:00:02.0/usb2':

    ID=="usb2"

    BUS=="usb"

    DRIVER=="usb"

    SYSFS{configuration}==""

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

    SYSFS{product}=="OHCI Host Controller"

    SYSFS{manufacturer}=="Linux 2.6.17-gentoo-r4 ohci_hcd"

    SYSFS{maxchild}=="10"

    SYSFS{version}==" 1.10"

    SYSFS{devnum}=="1"

    SYSFS{speed}=="12"

    SYSFS{bMaxPacketSize0}=="64"

    SYSFS{bNumConfigurations}=="1"

    SYSFS{bDeviceProtocol}=="00"

    SYSFS{bDeviceSubClass}=="00"

    SYSFS{bDeviceClass}=="09"

    SYSFS{bcdDevice}=="0206"

    SYSFS{idProduct}=="0000"

    SYSFS{idVendor}=="0000"

    SYSFS{bMaxPower}=="  0mA"

    SYSFS{bmAttributes}=="e0"

    SYSFS{bConfigurationValue}=="1"

    SYSFS{bNumInterfaces}==" 1"

 

  looking at device '/devices/pci0000:00/0000:00:02.0':

    ID=="0000:00:02.0"

    BUS=="pci"

    DRIVER=="ohci_hcd"

    SYSFS{modalias}=="pci:v000010DEd0000005Asv00001043sd0000815Abc0Csc03i10"

    SYSFS{local_cpus}=="3"

    SYSFS{irq}=="20"

    SYSFS{class}=="0x0c0310"

    SYSFS{subsystem_device}=="0x815a"

    SYSFS{subsystem_vendor}=="0x1043"

    SYSFS{device}=="0x005a"

    SYSFS{vendor}=="0x10de"

 

  looking at device '/devices/pci0000:00':

    ID=="pci0000:00"

    BUS==""

    DRIVER==""
```

Beim einstecken des Gerätes passiert im Monitor folgendes:

```
# udevmonitor --env

udevmonitor prints the received event from the kernel [UEVENT]

and the event which udev sends out after rule processing [UDEV]

 

UEVENT[1157919353.046039] remove@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

ACTION=remove

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

SUBSYSTEM=usb

SEQNUM=3892

PHYSDEVBUS=usb

DEVICE=/proc/bus/usb/002/011

PRODUCT=bb4/bce/0

TYPE=239/1/1

INTERFACE=239/1/1

MODALIAS=usb:v0BB4p0BCEd0000dcEFdsc01dp01icEFisc01ip01

 

UEVENT[1157919353.047021] remove@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.1

ACTION=remove

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.1

SUBSYSTEM=usb

SEQNUM=3893

PHYSDEVBUS=usb

DEVICE=/proc/bus/usb/002/011

PRODUCT=bb4/bce/0

TYPE=239/1/1

INTERFACE=10/0/0

MODALIAS=usb:v0BB4p0BCEd0000dcEFdsc01dp01ic0Aisc00ip00

 

UEVENT[1157919353.047617] remove@/class/usb_device/usbdev2.11

ACTION=remove

DEVPATH=/class/usb_device/usbdev2.11

SUBSYSTEM=usb_device

SEQNUM=3894

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

PHYSDEVBUS=usb

PHYSDEVDRIVER=usb

MAJOR=189

MINOR=138

 

UEVENT[1157919353.047862] remove@/devices/pci0000:00/0000:00:02.0/usb2/2-5

ACTION=remove

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

SUBSYSTEM=usb

SEQNUM=3895

PHYSDEVBUS=usb

 

UDEV  [1157919353.064296] remove@/class/usb_device/usbdev2.11

UDEV_LOG=3

ACTION=remove

DEVPATH=/class/usb_device/usbdev2.11

SUBSYSTEM=usb_device

SEQNUM=3894

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

PHYSDEVBUS=usb

PHYSDEVDRIVER=usb

MAJOR=189

MINOR=138

UDEVD_EVENT=1

DEVNAME=/dev/bus/usb/002/011

 

UDEV  [1157919353.080515] remove@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

UDEV_LOG=3

ACTION=remove

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

SUBSYSTEM=usb

SEQNUM=3892

PHYSDEVBUS=usb

DEVICE=/proc/bus/usb/002/011

PRODUCT=bb4/bce/0

TYPE=239/1/1

INTERFACE=239/1/1

MODALIAS=usb:v0BB4p0BCEd0000dcEFdsc01dp01icEFisc01ip01

UDEVD_EVENT=1

 

UDEV  [1157919353.081864] remove@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.1

UDEV_LOG=3

ACTION=remove

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.1

SUBSYSTEM=usb

SEQNUM=3893

PHYSDEVBUS=usb

DEVICE=/proc/bus/usb/002/011

PRODUCT=bb4/bce/0

TYPE=239/1/1

INTERFACE=10/0/0

MODALIAS=usb:v0BB4p0BCEd0000dcEFdsc01dp01ic0Aisc00ip00

UDEVD_EVENT=1

 

UDEV  [1157919353.098794] remove@/devices/pci0000:00/0000:00:02.0/usb2/2-5

UDEV_LOG=3

ACTION=remove

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

SUBSYSTEM=usb

SEQNUM=3895

PHYSDEVBUS=usb

UDEVD_EVENT=1

 

UEVENT[1157919356.917243] add@/devices/pci0000:00/0000:00:02.0/usb2/2-5

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

SUBSYSTEM=usb

SEQNUM=3896

PHYSDEVBUS=usb

PHYSDEVDRIVER=usb

 

UEVENT[1157919356.920550] add@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

SUBSYSTEM=usb

SEQNUM=3897

PHYSDEVBUS=usb

DEVICE=/proc/bus/usb/002/012

PRODUCT=45e/ffff/0

TYPE=0/0/0

INTERFACE=8/6/80

MODALIAS=usb:v045EpFFFFd0000dc00dsc00dp00ic08isc06ip50

 

UEVENT[1157919356.920624] add@/class/scsi_host/host47

ACTION=add

DEVPATH=/class/scsi_host/host47

SUBSYSTEM=scsi_host

SEQNUM=3898

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47

 

UEVENT[1157919356.920643] add@/class/usb_device/usbdev2.12

ACTION=add

DEVPATH=/class/usb_device/usbdev2.12

SUBSYSTEM=usb_device

SEQNUM=3899

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

PHYSDEVBUS=usb

PHYSDEVDRIVER=usb

MAJOR=189

MINOR=139

 

UDEV  [1157919356.934510] add@/devices/pci0000:00/0000:00:02.0/usb2/2-5

UDEV_LOG=3

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

SUBSYSTEM=usb

SEQNUM=3896

PHYSDEVBUS=usb

PHYSDEVDRIVER=usb

UDEVD_EVENT=1

 

UDEV  [1157919357.077014] add@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

UDEV_LOG=3

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0

SUBSYSTEM=usb

SEQNUM=3897

PHYSDEVBUS=usb

DEVICE=/proc/bus/usb/002/012

PRODUCT=45e/ffff/0

TYPE=0/0/0

INTERFACE=8/6/80

MODALIAS=usb:v045EpFFFFd0000dc00dsc00dp00ic08isc06ip50

UDEVD_EVENT=1

 

UDEV  [1157919357.092269] add@/class/usb_device/usbdev2.12

UDEV_LOG=3

ACTION=add

DEVPATH=/class/usb_device/usbdev2.12

SUBSYSTEM=usb_device

SEQNUM=3899

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5

PHYSDEVBUS=usb

PHYSDEVDRIVER=usb

MAJOR=189

MINOR=139

UDEVD_EVENT=1

DEVNAME=/dev/bus/usb/002/012

 

UDEV  [1157919357.095621] add@/class/scsi_host/host47

UDEV_LOG=3

ACTION=add

DEVPATH=/class/scsi_host/host47

SUBSYSTEM=scsi_host

SEQNUM=3898

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47

UDEVD_EVENT=1

 

UEVENT[1157919362.428151] add@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

SUBSYSTEM=scsi

SEQNUM=3900

PHYSDEVBUS=scsi

 

UEVENT[1157919362.428206] add@/class/scsi_disk/47:0:0:0

ACTION=add

DEVPATH=/class/scsi_disk/47:0:0:0

SUBSYSTEM=scsi_disk

SEQNUM=3901

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

 

UEVENT[1157919362.507086] add@/block/sde

ACTION=add

DEVPATH=/block/sde

SUBSYSTEM=block

SEQNUM=3902

MINOR=64

MAJOR=8

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

 

UEVENT[1157919362.507140] add@/block/sde/sde1

ACTION=add

DEVPATH=/block/sde/sde1

SUBSYSTEM=block

SEQNUM=3903

MINOR=65

MAJOR=8

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

 

UEVENT[1157919362.507445] add@/class/scsi_device/47:0:0:0

ACTION=add

DEVPATH=/class/scsi_device/47:0:0:0

SUBSYSTEM=scsi_device

SEQNUM=3904

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

 

UEVENT[1157919362.507476] add@/class/scsi_generic/sg3

ACTION=add

DEVPATH=/class/scsi_generic/sg3

SUBSYSTEM=scsi_generic

SEQNUM=3905

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

MAJOR=21

MINOR=3

 

UDEV  [1157919362.532125] add@/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

UDEV_LOG=3

ACTION=add

DEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

SUBSYSTEM=scsi

SEQNUM=3900

PHYSDEVBUS=scsi

UDEVD_EVENT=1

 

UDEV  [1157919362.545402] add@/class/scsi_disk/47:0:0:0

UDEV_LOG=3

ACTION=add

DEVPATH=/class/scsi_disk/47:0:0:0

SUBSYSTEM=scsi_disk

SEQNUM=3901

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

UDEVD_EVENT=1

 

UDEV  [1157919362.555761] add@/class/scsi_generic/sg3

UDEV_LOG=3

ACTION=add

DEVPATH=/class/scsi_generic/sg3

SUBSYSTEM=scsi_generic

SEQNUM=3905

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

MAJOR=21

MINOR=3

UDEVD_EVENT=1

DEVNAME=/dev/sg3

 

UDEV  [1157919362.561490] add@/class/scsi_device/47:0:0:0

UDEV_LOG=3

ACTION=add

DEVPATH=/class/scsi_device/47:0:0:0

SUBSYSTEM=scsi_device

SEQNUM=3904

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

UDEVD_EVENT=1

 

UDEV  [1157919362.566052] add@/block/sde

UDEV_LOG=3

ACTION=add

DEVPATH=/block/sde

SUBSYSTEM=block

SEQNUM=3902

MINOR=64

MAJOR=8

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

UDEVD_EVENT=1

ID_VENDOR=WM5torag

ID_MODEL=WIZA200

ID_REVISION=1.60

ID_SERIAL=WM5torag_WIZA200_DA411178E57E0C225BD3648F6BD9378C0C246906

ID_TYPE=disk

ID_BUS=usb

ID_PATH=usb-DA411178E57E0C225BD3648F6BD9378C0C246906:0:0:0

DEVNAME=/dev/sde

DEVLINKS=/dev/disk/by-id/usb-WM5torag_WIZA200_DA411178E57E0C225BD3648F6BD9378C0C246906 /dev/disk/by-path/usb-DA411178E57E0C225BD3648F6BD9378C0C246906:0:0:0

 

UDEV  [1157919362.746674] add@/block/sde/sde1

UDEV_LOG=3

ACTION=add

DEVPATH=/block/sde/sde1

SUBSYSTEM=block

SEQNUM=3903

MINOR=65

MAJOR=8

PHYSDEVPATH=/devices/pci0000:00/0000:00:02.0/usb2/2-5/2-5:1.0/host47/target47:0:0/47:0:0:0

PHYSDEVBUS=scsi

PHYSDEVDRIVER=sd

UDEVD_EVENT=1

ID_VENDOR=WM5torag

ID_MODEL=WIZA200

ID_REVISION=1.60

ID_SERIAL=WM5torag_WIZA200_DA411178E57E0C225BD3648F6BD9378C0C246906

ID_TYPE=disk

ID_BUS=usb

ID_PATH=usb-DA411178E57E0C225BD3648F6BD9378C0C246906:0:0:0

ID_FS_USAGE=filesystem

ID_FS_TYPE=vfat

ID_FS_VERSION=FAT16

ID_FS_UUID=6135-3330

ID_FS_LABEL=

ID_FS_LABEL_SAFE=

DEVNAME=/dev/sde1

DEVLINKS=/dev/disk/by-id/usb-WM5torag_WIZA200_DA411178E57E0C225BD3648F6BD9378C0C246906-part1 /dev/disk/by-path/usb-DA411178E57E0C225BD3648F6BD9378C0C246906:0:0:0-part1 /dev/disk/by-uuid/6135-3330
```

```
# cat /etc/udev/udev.conf

# udev_root - where in the filesystem to place the device nodes

udev_root="/dev/"

# udev_rules - The name and location of the udev rules file

udev_rules="/etc/udev/rules.d/"

# The initial syslog(3) priority: "err", "info", "debug" or its

# numerical equivalent. For runtime debugging, the daemons internal

# state can be changed with: "udevcontrol log_priority=<value>".

udev_log="err"
```

```
# mount | grep udev

udev on /dev type tmpfs (rw,nosuid)
```

----------

## Polynomial-C

Hi,

 *Slick wrote:*   

> Nach Aussagen braucht man nichts neustarten.

 

der udevd muß nicht neugestartet werden, aber trotzdem muß man udev veranlassen, die Regeln neu einzulesen. Leider muß man das abhängig von der Kernel-/udevversion unterschiedlich machen:

<kernel-2.6.14: 

```
udevstart
```

>=kernel-2.6.14: <udev-088: 

```
udevstart
```

<udev-096: (Vorsicht! Läd alle nicht bereits geladenen Kernelmodule ungefragt.)

```
udevtrigger
```

~udev-096 bis ~udev-098: 

```
udevtrigger --no-scan-bus
```

>=udev-099: 

```
udevtrigger --attr-match=dev
```

Der Grund für die --no-scan-bus bzw. --attr-match=dev Option ist, daß udevtrigger ansonsten sämtliche noch nicht geladenen Kernelmodule in einem Rutsch gleich mitläd. Bei mir hat das z.B. dann den schönen Effekt, daß das Modul via_agp geladen wird und sobald ich dann unter X eine 3D-Anwendung aufrufe, der Rechner komplett einfriert.

Leider wurde erst mit udev-096 eine entsprechende Option in udevtrigger gepatcht, die das Verhalten verhindert. Benutzt man nun udev-088 bis udev-095, muß man damit leben, alle Kernelmodule von udev geladen zu bekommen, oder man benutzt ersatzweise udevstart (wobei es unklar ist, wie lange neuere Kernel noch mit udevstart zusammenarbeiten werden).

Grüße

Poly-C

P.S.: RC_COLDPLUG="no" in der Datei /etc/conf.d/rc verhindert das ungefragte Laden der Kernelmodule bei udev-096 oder höher.

----------

## slick

 *Polynomial-C wrote:*   

> >=kernel-2.6.14: <udev-088: 
> 
> ```
> udevstart
> ```
> ...

 

Ja, das sieht damit schon besser aus. Die Debug-Rules funktionieren nun.

Allerdings habe ich noch ein Problem, wahrscheinlich aber ein Verständnisproblem meinerseits.

Ich habe eine ziemlich weitgefasste (Test-)Regel erstellt und udev neu einlesen lassen. Beim Anstecken des Gerätes passiert aber garnichts. Führe ich jedoch udevstart aus während das Gerät angesteckt ist kommt die Regel zum tragen und der Symlink wird erstellt.

Also wie müßte es richtig sein? Sobald ich das Gerät anstecke wird der Symlink erzeugt, ziehe ich es ab wird er wieder gelöscht? Oder wird er einmalig erstellt und jedesmal wenn das Gerät angesteckt wird auf das passende Device umgelenkt?

Irgendwie kommt mir alles ziemlich "magic" vor... eigentlich sollte doch mit einstecken des Gerätes der Link erzeugt werden, oder? Tuts aber ja nicht...

----------

## Polynomial-C

Hi,

ich gehe jetzt mal davon aus, daß es immer noch um die udev-Regel geht, die du in deinem ersten Post aufgeführt hast. Falls ich da jetzt gerade falsch liege, bitte nochmal die Regel, die nicht funktioniert, hier posten.

 *Slick wrote:*   

> Also wie müßte es richtig sein? Sobald ich das Gerät anstecke wird der Symlink erzeugt, ziehe ich es ab wird er wieder gelöscht?

 

Exakt, genau das sollte passieren, wenn die udev-Regel korrekt erstellt wurde und an der richtigen Stelle der Ladereihenfolge steht. 

udev arbeitet die rules-Dateien sequenziell in alphanumerischer Reihenfolge ab, d.h. die Datei 10-myown.rules wird vor der Datei 50-udev.rules eingelesen und dessen Regeln angewendet. Allerdings bedeutet das auch, daß Regeln aus rules-Dateien, die später eingelesen werden, früher eingelesene Regeln außer Kraft setzen, wenn beide auf gleiche oder ähnliche Bedingungen (wie z.B. BUS=="usb", KERNEL=="/dev/sd?1") zutreffen. 

Auch ist es mir schon passiert, daß eine Regel nicht funktioniert, wenn man den devicenode ebenfalls erstellt haben will (NAME="%k"). Da aber durch die 50-udev.rules Datei eh schon fast alle devices abgedeckt werden, sollte es in so einem Fall reichen, eine Datei 99-myown.rules zu erstellen, wo dann nur noch der Symlink gesetzt wird:

```
BUS=="usb", SYSFS{product}=="Windows Mobile Device", KERNEL=="sd?1", SYMLINK+="handy"
```

Grüße

Poly-C

----------

## momonster

 *Polynomial-C wrote:*   

> udev arbeitet die rules-Dateien sequenziell in alphanumerischer Reihenfolge ab, d.h. die Datei 10-myown.rules wird vor der Datei 50-udev.rules eingelesen und dessen Regeln angewendet. Allerdings bedeutet das auch, daß Regeln aus rules-Dateien, die später eingelesen werden, früher eingelesene Regeln außer Kraft setzen, wenn beide auf gleiche oder ähnliche Bedingungen (wie z.B. BUS=="usb", KERNEL=="/dev/sd?1") zutreffen. 

 

Ist es nicht andersherum? Werden nicht Regeln die später eingelesen werden ignoriert wenn schon eine zutreffende Regel angewendet wurde?

MfG

mo

----------

## Vortex375

 *Quote:*   

> Werden nicht Regeln die später eingelesen werden ignoriert wenn schon eine zutreffende Regel angewendet wurde?
> 
> 

 

Doch, so hab ich es zumindest auch gehört.

----------

## Polynomial-C

Hi,

 *momonster wrote:*   

> Werden nicht Regeln die später eingelesen werden ignoriert wenn schon eine zutreffende Regel angewendet wurde?

 

Nein, das trifft nur zu, wenn man in der früheren Regel 

```
OPTIONS="last_rule"
```

 mit angibt.

Grüße

Poly-C

----------

## slick

 *Polynomial-C wrote:*   

> Auch ist es mir schon passiert, daß eine Regel nicht funktioniert, wenn man den devicenode ebenfalls erstellt haben will (NAME="%k"). Da aber durch die 50-udev.rules Datei eh schon fast alle devices abgedeckt werden, sollte es in so einem Fall reichen, eine Datei 99-myown.rules zu erstellen, wo dann nur noch der Symlink gesetzt wird:
> 
> ```
> BUS=="usb", SYSFS{product}=="Windows Mobile Device", KERNEL=="sd?1", SYMLINK+="handy"
> ```
> ...

 

Danke.. werde ich heute abend probieren... dann ist/wäre aber das Wiki an mehreren Stellen falsch.

 *http://de.gentoo-wiki.com/Udev_Rules wrote:*   

> Dateien in /etc/udev/rules.d/ werden in einer lexikalischen Ordnung aufgerufen. Udev durchsucht chronologisch die Dateien solange, bis es für das Gerät eine entsprechende Regel gefunden hat. Es ist wichtig, dass die eigenen Regeln vor der Standard Datei aufgerufen wird, dazu erstellt man sich eine Datei deren Zahl niedriger als die der Standard Datei ist, zum Beispiel /etc/udev/rules.d/10-udev.rules. 

 

 *http://de.gentoo-wiki.com/Udev wrote:*   

> Hinweis: Die Auswertung der .rules-Dateien erfolgt nach einem Kurzschlussverfahren! Trifft eine Regel zu, werden spätere Regeln, die für die selbe Hardware genutzt werden sollen, nicht mehr beachtet! Daher ist es wichtig, dass die Datei mit den eigenen Regeln vor der 50-udev.rules abgearbeitet wird. Um das zu erreichen muss man seine eigene Datei ebenfalls mit einer Nummer, die allerdings kleiner als 50 ist, versehen (10-udev.rules erfüllt dieses Kriterium). Auch innerhalb einer Datei muss dieses Abarbeitungsverfahren beachtet werden! 

 

----------

## slick

 *Polynomial-C wrote:*   

> 
> 
> ```
> BUS=="usb", SYSFS{product}=="Windows Mobile Device", KERNEL=="sd?1", SYMLINK+="handy"
> ```
> ...

 

Immernoch das gleiche. Beim Anstecken des Gerätes passiert garnichts. Führe ich jedoch udevstart aus während das Gerät angesteckt ist kommt die Regel zum tragen und der Symlink wird erstellt. Diesmal ist die Regel in 99-own.rules

sys-fs/udev-087-r1

2.6.17-gentoo-r4

CONFIG_HOTPLUG=y

----------

## Polynomial-C

Verschwindet der Symlink wieder, wenn du das USB-Kabel entfernst?

----------

## slick

 *Polynomial-C wrote:*   

> Verschwindet der Symlink wieder, wenn du das USB-Kabel entfernst?

 

Ja, verschwindet dann wieder. Taucht aber erst wieder auf wenn das Gerät wieder angesteckt ist und udevstart erneut ausgeführt wurde. Ist es möglich das mir ein bestimmtes Paket fehlt? hotplug ist drauf.

----------

## slick

Ok, nachdem ich nochmal das HowTo gelesen hatte stellte ich fest das ich sysfsutils nicht installiert hatte. Ok, installiert. Ändert aber nichts. Gleicher Status.

Aber ich habe schon korrekt verstanden das  ich Coldplug nur für Module bräuchte? USB-Dingens sind bei mir fest im Kernel, von daher denke ich brauche ist das nicht, oder doch?

----------

## Polynomial-C

Hi,

so langsam fange ich an, an meinen udev-Kenntnissen zu zweifeln.

Also, ich habe jetzt mal meine stable Kiste genommen (um mit udev-087-r1 die gleich Version wie du zu haben, Slick) und habe meine USB-Stick rausgekramt (leider habe ich kein USB-Kabel für mein Handy). Als Regel habe ich folgendes genommen:

```
BUS=="usb", KERNEL=="sd?1", SYSFS{idProduct}=="2517", SYSFS{idVendor}=="067b", NAME="%k", SYMLINK="usbstick"
```

 und habe das in die Datei 10-own.rules geschrieben. Nach dem Aufruf von udevstart und Einstecken des Sticks wurde sowohl das devicenode als auch der symlink korrekt erstellt.

Die selbe Regel in die Datei 99-own.rules geschrieben hat keinerlei Wirkung gezeigt.

Nachdem ich dann allerdings die  Regel auf 

```
BUS=="usb", KERNEL=="sd?1", SYSFS{idProduct}=="2517", SYSFS{idVendor}=="067b", SYMLINK="usbstick"
```

 gekürzt hatte, wurden mir der symlink erstellt.

Fazit, momonster und Vortex375 haben recht, spätere Regeln kommen dann nicht zur Geltung, wenn sie devicenodes erstellen sollen, die bereits existieren (also NAME="%k" beinhalten).

 *Slick wrote:*   

> Ist es möglich das mir ein bestimmtes Paket fehlt? hotplug ist drauf.

 

Nein, das glaube ich nicht. Der udev ebuild installiert alle nötigen Abhängigkeiten bereits im Vorfeld und für ein "einfaches" device wie ein USB-Massenspeichergerät sind eigentlich auch keine weiteren Pakete erforderlich.

Um ehrlich zu sein, so langsam gehen mir die Ideen aus. Da ich kein hotplug installiert habe (nur hotplug-base), habe ich mir das Paket eben nochmal angeschaut und so wie ich das auf den ersten Blick gesehen habe, ist hotplug nur für das Laden externer Firmware zuständig. Also kann man hotplug als störende Ursache hier wohl ausschließen.

 *Slick wrote:*   

> Aber ich habe schon korrekt verstanden das ich Coldplug nur für Module bräuchte? USB-Dingens sind bei mir fest im Kernel, von daher denke ich brauche ist das nicht, oder doch?

 

Korrekt, coldplug braucht man nur, um für beim Booten vorhandene Hardware die entsprechenden Kernelmodule(/Firmware?) zu laden.

Laß uns doch mal Schritt für Schritt dem Problem nähern...

Trage mal bitte in die datei 10-myown.rules folgende Regel ein:

```
BUS=="usb", SYSFS{product}=="Windows Mobile Device", KERNEL=="sd[a-z]*", NAME="%k", SYMLINK="handy%n", OPTIONS="last_rule"
```

und schau mal, ob die devices /dev/handy und /dev/handy1 damit erstellt werden und ob die devices dann beim An--/Abstöpseln des Handys auch entsprechend erscheinen/verschwinden...

Grüße

Poly-C

[edit]Falls du möchtest, können wir das auch im #gentoo.de besprechen. Ich bin dort momentan als "Polynomial-C" eingeloggt  :Wink: [/edit]

----------

## slick

 *Polynomial-C wrote:*   

> Laß uns doch mal Schritt für Schritt dem Problem nähern...
> 
> Trage mal bitte in die datei 10-myown.rules folgende Regel ein:
> 
> ```
> ...

 

- Regel in 10-myown.rules eingetragen

- udevstart aufgerufen

- Gerät angesteckt

- Partition taucht in /proc/partitions auf, aber kein handy-device in /dev

- udevstart erneut ausgeführt während Gerät angesteckt ist

- /dev/handy und /dev/handy1 werden angelegt

- Gerät abgezogen

- /dev/handy und /dev/handy1 sind wieder weg

*aaaaaaaaaaarg*

Kernel-Config falls genötigt

 *Quote:*   

> [edit]Falls du möchtest, können wir das auch im #gentoo.de besprechen. Ich bin dort momentan als "Polynomial-C" eingeloggt [/edit]

 

Können wir gern da schreiben, allerdings wäre mir eine Lösung "hier" lieber, da hat jeder was davon.

----------

## Polynomial-C

Hallöle nochmal...

also nachdem Slick und ich uns im IRC zu dem Problem noch etwas unterhalten haben, habe ich leider keinelei Ideen mehr, wie man Slicks udev dazu überreden kann, sein Handy als /dev/handy ansprechbar zu machen.

Falls noch jemand konstruktive Ideen hat, bitte zögert nicht euch hier im Thread zu verewigen  :Smile: 

Grüße

Poly-C

----------

## slick

Vielleicht sollte ich noch ergänzen, das normale Device /dev/sd?1 wird immer pünklich zum An-/Abstecken erzeugt bzw. entfernt. Damit klappt dann auch alles. Wäre halt nur nett wenn ich Regeln zur Verfügung hätte um das zu "personalisieren".

Niemand mehr Ideen?

----------

## Mgiese

hi an alle, ich benutzte udev-115-r1,  und  habe probleme meinen usbstick an eine feste device zu binden:

```
BUS=="usb", SYSFS{manufacturer}=="_USB MF_", SYSFS{serial}=="0002F685D8FE4605", NAME="%k", SYMLINK="ustick", MODE="0777" 
```

mit "udevinfo -a -p /sys/block/sdb/sdb1" habe ich nach den daten fuer meinen stick gesucht :

```
  looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-9':

    KERNELS=="1-9"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{serial}=="0002F685D8FE4605"

    ATTRS{product}=="_USB PRODUCT_"

    ATTRS{manufacturer}=="_USB MF_"

    ATTRS{quirks}=="0x0"

    ATTRS{maxchild}=="0"

    ATTRS{version}==" 2.00"

    ATTRS{devnum}=="4"

    ATTRS{busnum}=="1"

    ATTRS{speed}=="480"

    ATTRS{bMaxPacketSize0}=="64"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{bDeviceProtocol}=="00"

    ATTRS{bDeviceSubClass}=="00"

    ATTRS{bDeviceClass}=="00"

    ATTRS{bcdDevice}=="1001"

    ATTRS{idProduct}=="8000"

    ATTRS{idVendor}=="066f"

    ATTRS{bMaxPower}=="100mA"

    ATTRS{bmAttributes}=="80"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bNumInterfaces}==" 1"

    ATTRS{configuration}=="USB/MSC LCD Player"

    ATTRS{dev}=="189:3"

```

muss ich nun in die rules datei ATTRS or  SYSFS eintragen ?

mit den oben erhaltenen informationen habe ich folgende zeile in "/etc/udev/rules.d/50-udev.rules" eingetragen:

```
BUS=="usb", SYSFS{manufacturer}=="_USB MF_", SYSFS{serial}=="0002F685D8FE4605", NAME="%k", SYMLINK="ustick", MODE="0777" 
```

aber weder nach einem rechner neustart noch nach an und abstoebseln des usbsticks wird das device angelegt, ich habe auch schon probiert udev mit "udevstart" neu zu starten, bleibt aber immer das gleiche, das device /dev/ustick wird einfach nicht erstellt. usb funktioniert, kann das geraet auch von /dev/sdb1 nach /mnt/usb-stick mounten 

THX A LOT

edit : nach dem an und abstecken taucht die partition auf bzw verschwindet :

```
major minor  #blocks  name

   3     0   60051600 hda

   3     1     240943 hda1

   3     2    1084387 hda2

   3     3   28796512 hda3

   3     4   29929095 hda4

   8     0  312571224 sda

   8     1  104020843 sda1

   8     2  100807875 sda2

   8    16    1018112 sdb

   8    17    1018089 sdb1
```

----------

## Max Steel

ICh glaube gehört zu haben das SYSFS neuerdings ATTRS heißt.

----------

## Polynomial-C

Exakt und BUS heißt seit einigen udev-Versionen SUBSYSTEM bzw. SUBSYSTEMS. Im Zweifelsfall immer das nehmen, was man bei udevinfo angezeigt bekommt. Leider verändert sich bei udev immer mal wieder was, weshalb man seine selbstgeschriebenen udev-Regeln ab und zu mal anpassen muß...

----------

## Mgiese

habe nun folgendes in etc/udev/rules.d/50-udev.rules :

```

SUBSYSTEMS="usb", ATTRS{product}=="_USB PRODUCT_", KERNEL="sd*", NAME="%k", SYMLINK="gb-st2"

SUBSYSTEMS=="usb", ATTRS{manufacturer}=="_USB MF_", SYSFS{serial}=="0002F685D8FE4605", NAME="%k", SYMLINK="gb-stick", MODE="0777"
```

es wird leider immernoch kein "gb-st2" oder "gb-stick" erzeugt, udev gibt bei "udevinfo -a -p /sys/block/sdc/sdc1" folgendes aus :

```

looking at parent device '/devices/pci0000:00/0000:00:02.1/usb1/1-9':

    KERNELS=="1-9"

    SUBSYSTEMS=="usb"

    DRIVERS=="usb"

    ATTRS{serial}=="0002F685D8FE4605"

    ATTRS{product}=="_USB PRODUCT_"

    ATTRS{manufacturer}=="_USB MF_"

    ATTRS{quirks}=="0x0"

    ATTRS{maxchild}=="0"

    ATTRS{version}==" 2.00"

    ATTRS{devnum}=="4"

    ATTRS{busnum}=="1"

    ATTRS{speed}=="480"

    ATTRS{bMaxPacketSize0}=="64"

    ATTRS{bNumConfigurations}=="1"

    ATTRS{bDeviceProtocol}=="00"

    ATTRS{bDeviceSubClass}=="00"

    ATTRS{bDeviceClass}=="00"

    ATTRS{bcdDevice}=="1001"

    ATTRS{idProduct}=="8000"

    ATTRS{idVendor}=="066f"

    ATTRS{bMaxPower}=="100mA"

    ATTRS{bmAttributes}=="80"

    ATTRS{bConfigurationValue}=="1"

    ATTRS{bNumInterfaces}==" 1"

    ATTRS{configuration}=="USB/MSC LCD Player"

    ATTRS{dev}=="189:3"

```

kann sich bitte mal jemand meinen eintrag anschauen ? anscheinend habe ich dort etwas uebersehen..  :Sad: 

----------

## flammenflitzer

Ich habe 

```
olaf@localhost /etc/udev/rules.d $ cat 10-udev.rules

#10-udev.rules

#eigene Creation

###

#udevinfo -a -p /sys/block/sda/sda1

###

###Netzwerkkarten

KERNEL=="eth*", ATTR{address}=="00:30:05:68:90:C7", NAME="eth0"

KERNEL=="eth*", ATTR{address}=="00:50:BF:D4:64:0B", NAME="eth1"

KERNEL=="eth*", ATTR{address}=="00:00:B4:90:59:56", NAME="eth2"

KERNEL=="eth*", ATTR{address}=="00-30-05-31-00-0E-06-F9-00-00-00-00-00", NAME="eth3"

############################################################################

#usbfestplatte 3 Partitionen

#############################################################################

BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="00JB-00GVA0", NAME="usbfestplatte-1" , GROUP="disk", MODE="0764"

BUS=="scsi", KERNEL=="sd*5", ATTRS{model}=="00JB-00GVA0", NAME="usbfestplatte-5" , GROUP="disk", MODE="0764"

BUS=="scsi", KERNEL=="sd*6", ATTRS{model}=="00JB-00GVA0", NAME="usbfestplatte-6" , GROUP="disk", MODE="0764"

##########################################################################

#usbstick-toshiba

############################################################################

BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="TransMemory", NAME="usbstick-toshiba"  , GROUP="disk", MODE="0764"

###########################################################################

#usbstick-flashdrive

############################################################################

BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="USB Flash Memory", NAME="usbstick-flashdrive" , GROUP="disk", MODE="0764"

###############

# MP3 Player

################

# MP3 Player Kerstin MSCN "maxfield" und MP3 Player Kerstin MSCN "cebop"

BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="MSCN", NAME="mp3Player-Kerstin-MSCN"  , GROUP="disk", MODE="0764"

#Lesegerät Kerstin mit 4 Slots

BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="SD*Card*Reader" , NAME="Kerstin-2GB-SD_Karte"  , GROUP="disk", MODE="0764"
```

,wobei

ATTRS{model}=="SD Card Reader" so wie oben eingetragen werden muß.

Funktioniert alles.

```
SUBSYSTEMS=="usb", ATTRS{manufacturer}=="_USB MF_", SYSFS{serial}=="0002F685D8FE4605", NAME="%k", SYMLINK="gb-stick", MODE="0777"
```

müßte doch so eingetragen werden?

```
BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="Was da bei Dir steht, habe ich oben nicht gefunden", NAME="gb-stick" , GROUP="disk", MODE="0764"
```

----------

## Mgiese

hi, welche udev version benutzt du denn ? mfg

ich bin mir halt nicht ganz sicher ob BUS nun USB oder SCSI ist. mfg

----------

## Mgiese

 *Mgiese wrote:*   

> hi, welche udev version benutzt du denn ? mfg
> 
> ich bin mir halt nicht ganz sicher ob BUS nun USB oder SCSI ist. mfg

 

nun habe ich endlich den stick am laufen.udev version : udev-115-r1(aktuelles portage) 

```
BUS=="scsi", KERNEL=="sd*1", ATTRS{model}=="MSCN", NAME="mp3"  , GROUP="disk", MODE="0764"
```

nun habe ich noch zwei kleine fragen :

was ist der unterschied zwischen : MODE="0764" und MODE="0777", kennt jemand eine seite wo ich anhand der codes die rechte entschluesseln kann ?

mit mode 0764 kann ich nun dateien als user vom stick loeschen, aber es dauert ewig. kann man das ein bisschen beschleunigen ? 

wenn ich den stick entferne, also einfach herausziehe wird zwar das /dev/mp3 entfernt, aber leider bleibt das geraet gemountet, was kann ich dagegen tun ? wenn ich ihn erneut hereinstecke, dann ist mein /mnt/dir leer, weil dorthin ja noch "etwas" gemountet ist.

mfg

----------

## flammenflitzer

```
Ziffer  Bedeutung

0       kein Recht

1       x-Recht

2       w-Recht

4       r-Recht
```

 ???

https://forums.gentoo.org/viewtopic-t-621020-highlight-.html

----------

