Forum: PC Hard- und Software Linux: udev rules funktionieren nicht


von Ralph S. (jjflash)


Lesenswert?

Ich bin dabei, mir ein neues (abgespecktes) Live-Linux System auf Basis 
von Porteus / Slackware 14.2 einzurichten und habe ein Problem, das ich 
bisher noch nicht hatte (und seit ein paar Sunden auf keinen Nenner 
komme).

Benutzer heißt: mcu
und ist u.a. in den Gruppen uucp und dialout eingetragen.

Als Benutzer mcu kann ich bspw. über einen Bootloader und AVRDUDE einen 
AVR flashen (benutzt ttyUSB0).

Über einen USBASP kann ich das nicht mit einer bekannten Fehlermeldung:
1
avrdude: Warning: cannot open USB device: Permission denied
2
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'

Als Benutzer root geht das natürlich (von daher ist ein Fehler im 
Hardwareaufbau auszuschließen).

in /etc/udev/rules.d gibt es die Datei:

99-uasbasp.rules

Deren Inhalt ist:
1
SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", SYSFS{idVendor}=="16c0", SYSFS{idProduct}=="05dc", GROUP="dialout", MODE="0666"
Das hatte bisher eigentlich immer geklappt, aber mit dem System das ich 
einrichten möchte klappt das eben nicht mehr.

Die Rechte von 99-usbasp.rules sind:
1
-rwxrwxrwx 1 root root 220 Jan 21 15:41 99-usbasp.rules*

-----------------------------------------------

Wo kann ich noch etwas daran ändern ?

: Verschoben durch Moderator
von Programmierer (Gast)


Lesenswert?

1
udevadm control --reload-rules && udevadm trigger
ausgeführt?

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

Ralph S. schrieb:

>
1
> SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", SYSFS{idVendor}=="16c0", 
2
> SYSFS{idProduct}=="05dc", GROUP="dialout", MODE="0666"
3
>

Ich habe hier:
1
# USBasp
2
SUBSYSTEM=="usb", ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc",GROUP="plugdev", MODE="0660"

> Die Rechte von 99-usbasp.rules sind:

Scheunentor!

Bitte chmod 0644 dafür machen. Erstens muss das Ding nicht ausführbar 
sein, zweitens hat niemand außer Frau Wurzel einen Grund, in dieser 
Datei was zu schreiben.

von Arno (Gast)


Lesenswert?

Ideen:
- Woher kommt ENV_DEVTYPE? Das muss ja in einer vorhergehenden 
udev-Regel gesetzt werden (wenn ich das richtig in Erinnerung habe) - 
brauchst du die Enschränkung oder kannst du sie einfach weglassen?
- Ist der Benutzer mcu in der Session, in der du es versuchst, wirklich 
schon in der Gruppe dialout? Mal 'id' probiert? Halt, durch MODE=0666 
sollte das egal sein (sicher, dass du willst, dass jeder auf das Gerät 
zugreifen kann, egal ob in Gruppe dialout oder nicht?)
- Was sagt udevinfo -a -p über das Gerät?

Ansonsten: Logging einschalten und nachsehen, was beim Anstecken 
passiert...

MfG, Arno

von Ralph S. (jjflash)


Lesenswert?

Programmierer schrieb:
> udevadm control --reload-rules && udevadm triggerausgeführt?

Hab ich gemacht (nach jeder Änderung die ich in den Rules ausprobiert 
habe).

von Ralph S. (jjflash)


Lesenswert?

Jörg W. schrieb:
> Scheunentor!

Weiß ich, dass das ein Scheunentor ist. Sollte auch, nachdem es mit 
einer Änderung funktioniert hätte auch wieder auf andere Rechte gesetzt 
werden.

chmod 0640 hat natürlich (leider) nicht funktioniert


Jörg W. schrieb:
> zweitens hat niemand außer Frau Wurzel einen Grund, in dieser
> Datei was zu schreiben.

Ich bin aber der englische Angetrautet von Frau Wurzel (gestatten, mein 
Name ist root) und möchte aber auch gerne uuuuunbedingt da rein 
schreiben ! : - )

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


Lesenswert?

0644 - du sollst ja der Welt nicht auch gleich noch das Leserecht 
entziehen.

Ansonsten mal auf den Rest der Antworten davor schauen. Es gibt 
natürlich auch Subsysteme, die "Scheunentor"-Dateien gleich gar nicht 
erst akzeptieren (bspw. sshd, wenn "authorized_keys" so daher kommt), 
aber ich vermute, dass udevd nicht dazu gehört. Das war also eher ein 
Kommentar am Rande.

von 50c (Gast)


Lesenswert?

Ralph S. schrieb:
> Ich bin aber der englische Angetrautet von Frau Wurzel (gestatten, mein
> Name ist root) und möchte aber auch gerne uuuuunbedingt da rein
> schreiben ! : - )

...genau dafür gibt es sudo etc. bzw. man meldet sich halt als root an, 
wenn man etwas machen möchte, was nur root machen sollte!

von Mike J. (linuxmint_user)


Lesenswert?

Ralph S. schrieb:
> Wo kann ich noch etwas daran ändern ?

Bei mir heißt die Datei einfach nur "41-atmega" und liegt unter 
/etc/udev/rules.d/
1
# Please test and place config for other programmers here
2
# JTAGICE mkII 
3
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2103", GROUP="users", MODE="0666" 
4
# AVRISP mkII 
5
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", GROUP="users", MODE="0666" 
6
# Dragon
7
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2107", GROUP="users", MODE="0666"
8
# USBTiny
9
ATTR{idVendor}=="1781", ATTR{idProduct}=="0c9f", GROUP="users", MODE="0666" 
10
#USBasp
11
ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", GROUP="plugdev", MODE="0660" # USBASP von www.fischl.de
12
#
13
# Atmel Corp. AVR ISP mkII
14
ATTR{idVendor}=="03eb", ATTR{idProduct}=="2104", GROUP="plugdev", MODE="0660"
15
#ATTR{idVendor}=="03eb", SYSFS{idProduct}=="2104", GROUP="plugdev", MODE="0660"
16
# ID 03eb:2104 Atmel Corp. AVR ISP mkII

von Ralph S. (jjflash)


Lesenswert?

Arno schrieb:
> Halt, durch MODE=0666
> sollte das egal sein (sicher, dass du willst, dass jeder auf das Gerät
> zugreifen kann, egal ob in Gruppe dialout oder nicht?)

Das soll ein Programmiersystem werden und ich möchte wirklich, dass 
jeder einen USBASP verwenden kann (die Angabe der Gruppe ist ein 
verzweifelter Versuch von mir).

Arno schrieb:
> Ansonsten: Logging einschalten und nachsehen, was beim Anstecken
> passiert...
1
root@porteus:/home/mcu/programming/atmel_avr/fcount# udevadm monitor --env
2
monitor will print the received events for:
3
UDEV - the event which udev sends out after rule processing
4
KERNEL - the kernel uevent
5
6
KERNEL[8708.338324] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2 (usb)
7
ACTION=add
8
BUSNUM=006
9
DEVNAME=/dev/bus/usb/006/006
10
DEVNUM=006
11
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb6/6-2
12
DEVTYPE=usb_device
13
MAJOR=189
14
MINOR=645
15
PRODUCT=16c0/5dc/104
16
SEQNUM=3404
17
SUBSYSTEM=usb
18
TYPE=255/0/0
19
20
KERNEL[8708.341131] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0 (usb)
21
ACTION=add
22
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0
23
DEVTYPE=usb_interface
24
INTERFACE=0/0/0
25
MODALIAS=usb:v16C0p05DCd0104dcFFdsc00dp00ic00isc00ip00in00
26
PRODUCT=16c0/5dc/104
27
SEQNUM=3405
28
SUBSYSTEM=usb
29
TYPE=255/0/0
30
31
UDEV  [8708.854339] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2 (usb)
32
ACTION=add
33
BUSNUM=006
34
DEVNAME=/dev/bus/usb/006/006
35
DEVNUM=006
36
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb6/6-2
37
DEVTYPE=usb_device
38
ID_BUS=usb
39
ID_MODEL=USBasp
40
ID_MODEL_ENC=USBasp
41
ID_MODEL_ID=05dc
42
ID_REVISION=0104
43
ID_SERIAL=www.fischl.de_USBasp
44
ID_VENDOR=www.fischl.de
45
ID_VENDOR_ENC=www.fischl.de
46
ID_VENDOR_ID=16c0
47
MAJOR=189
48
MINOR=645
49
PRODUCT=16c0/5dc/104
50
SEQNUM=3404
51
SUBSYSTEM=usb
52
TYPE=255/0/0
53
USEC_INITIALIZED=8343508
54
55
UDEV  [8708.856960] add      /devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0 (usb)
56
ACTION=add
57
DEVPATH=/devices/pci0000:00/0000:00:1d.0/usb6/6-2/6-2:1.0
58
DEVTYPE=usb_interface
59
INTERFACE=0/0/0
60
MODALIAS=usb:v16C0p05DCd0104dcFFdsc00dp00ic00isc00ip00in00
61
PRODUCT=16c0/5dc/104
62
SEQNUM=3405
63
SUBSYSTEM=usb
64
TYPE=255/0/0
65
USEC_INITIALIZED=8856820

(sorry für diese lange Ausgabe)... irgendwie sieht das schon normal aus

von Ralph S. (jjflash)


Lesenswert?

Mike J. schrieb:
> ATTR{idVendor}=="16c0", ATTR{idProduct}=="05dc", GROUP="plugdev",
> MODE="0660"

Mit Änderung der GROUP zu "dialout" und MODE="0666" (für alle).
Warum die Gruppe noch mitangegeben werden muss erschließt sich mir nicht 
(wenn ich doch sowieso allen den Zugang ermöglichen möchte)

---------------------

Vielen Dank dass ihr Euch meines Problems angenommen habt !

von Günter R. (guenter-dl7la) Benutzerseite


Lesenswert?

zu ENV{DEVTYPE}... Bei mir steht in der 81-usbasp.rules übrigens auch

#
SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="16c0", 
ATTRS{idProduct}=="05dc", MODE="0660"
#

und der Fischl hängt am USBtty0 als USBasp. Bei Arduino-IDE funktioniert 
allerdings nur 'hochladen mit Programmer'

vielleicht hilft dir das

: Bearbeitet durch User
von Ralph S. (jjflash)


Lesenswert?

Jörg W. schrieb:
> 0644 - du sollst ja der Welt nicht auch gleich noch das Leserecht
> entziehen.
>
> Ansonsten mal auf den Rest der Antworten davor schauen.

Hab ich gemacht ... 644 und auch den "Rest der Antworten" ... und ich 
freue mich dass das jetzt funktioniert.

Danke noch mal an alle !

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.