avrdude: / dev / ttyACM0 Problem mit sich ändernden Berechtigungen

2059
dmnc

Ich habe Arduino IDE ohne Probleme auf meinem Arch Linux-Laptop verwendet. Nach einiger Zeit / Monaten konnte ich die Skizze aufgrund von Berechtigungen nicht hochladen:

avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied

Ich kann minicomohne Probleme auf das Gerät zugreifen und schreiben, da die Berechtigungen gut sind:

crw-rw-rw- 1 root uucp 

Mein Benutzer ist in der uucpGruppe. Wenn ich jedoch mit dem Hochladen der Skizze beginne dmesg, wird das USB-Gerät neu verbunden, und in diesem Moment sehe ich verschiedene Berechtigungen:

rw------- 1 root root 

Und nach einiger Zeit (Sekunden) sind die Berechtigungen wieder so, wie sie waren. dmesghier ausgeben:

[ 313.042695] usb 2-1.2: USB disconnect, device number 3 [ 313.253085] usb 2-1.2: new full-speed USB device number 4 using ehci-pci [ 313.352387] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device [ 321.234517] usb 2-1.2: USB disconnect, device number 4 [ 321.439445] usb 2-1.2: new full-speed USB device number 5 using ehci-pci [ 321.541392] cdc_acm 2-1.2:1.0: ttyACM0: USB ACM device ... 

Ich habe versucht, dies mit mehreren benutzerdefinierten udev-Regeln zu lösen, jedoch ohne Erfolg:

SUBSYSTEMS="usb", ATTRS== "2341", GROUP="uucp", MODE="0666" KERNEL=="ttyACM[0-9]*", SYMLINK+="%k", GROUP="uucp", MODE="0666" 

Wie kann man eine Gruppe oder einen Modus vom ersten Moment an erzwingen, wenn er im System erscheint? Ich hoffe, dass dies nicht nur ein Fehler im Arduino 1.8.3 ist. Kernel-Version 4.11.9-1-ARCH.

EDIT # 1 :

Ich habe festgestellt, dass das Wiederherstellen der USB-Verbindung auch nach dem Beenden auftritt. minicomIn diesem Fall ist avrdudedies jedoch ein Problem, da das Programm auftritt, wenn das Programm auf das Gerät zugreifen muss.

Screencast hier

EDIT # 2 :

Nach einiger Zeit kam ich wieder auf dieses Problem zurück und stellte fest, dass ich Probleme damit hatte ttyACM0(Yun / Micro / etc., Die mit einem microUSB-Kabel verbunden sind) und ttyUSB0(Uno mit USB-B verbunden) ok ist. Aber auch das ist ein interessanter Hinweis, dass ich es nicht herausfinden kann.

Ich überwache die Rechte auf den tty-Geräten:

watch -n 0.1 'ls -la /dev/ttyUSB* /dev/ttyACM*' 
  • Beim Hochladen auf ttyUSB0nur das Datum und die Uhrzeit ändert sich und alles funktioniert
  • Wenn das Hochladen auf das ttyACM0Gerät für einen Moment verschwunden ist, wurde ein neues mit falschen Rechten (und root:root) erstellt, der Upload ist fehlgeschlagen und dann werden von udev (mit root:uucp) die richtigen Einstellungen vorgenommen.

Mein Benutzer ist in den Gruppen lockund uucp, ich habe versucht, einige udev-Regeln hinzuzufügen oder sie zu deaktivieren, aber ohne Erfolg ...

Ich bin zu 99% sicher, dass dies etwas ist, bevor die udev-Regel es berührt.

2
Haben Sie jemals versucht, den Befehl zum Ändern der Berechtigungen in /etc/rc.local hinzuzufügen? Dieses Skript wird am Ende der Startsequenz aufgerufen. Dieses Skript wird mit Root-Berechtigung ausgeführt, sodass Sie das ACM0-Gerät chmodeln können Genaro Morales vor 6 Jahren 0
AFAIK gibt es in ArchLinux kein rc.local, aber auch das kann nicht verhindern, dass avrdude den Port beim Upload zurücksetzt. dmnc vor 6 Jahren 0
Ich bin mir nicht sicher, aber ich denke, Sie können hier etwas finden: https://wiki.archlinux.org/index.php/User:Herodotus/Rc-Local-Systemd Genaro Morales vor 6 Jahren 0
Ich weiß, dass die Avrdude noch aussteht, ich werde mir das mal ansehen. Genaro Morales vor 6 Jahren 0

0 Antworten auf die Frage