avrdude: / dev / ttyACM0 problem ze zmianą uprawnień


2

Używałem Arduino IDE na moim laptopie Arch Linux, po pewnym czasie / miesiącach nie mogę załadować szkicu z powodu uprawnień:

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

Mogę minicombez problemu uzyskiwać dostęp i pisać na urządzeniu , ponieważ uprawnienia są dobre:

crw-rw-rw- 1 root uucp

Mój użytkownik jest w uucpgrupie. Ale kiedy zaczynam ładować szkic, w związku z tym dmesg, urządzenie USB jest ponownie podłączane iw tym momencie widzę różne uprawnienia:

rw------- 1 root root

Po pewnym czasie (sekundach) uprawnienia wróciły do ​​poprzedniego stanu. dmesgwyjście tutaj:

[  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
...

Próbowałem to rozwiązać za pomocą kilku niestandardowych reguł udev, ale bez powodzenia:

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

Jak wymusić grupowanie lub tryb od pierwszego momentu pojawienia się w systemie? Mam nadzieję, że nie jest to tylko błąd w Arduino 1.8.3. Wersja jądra 4.11.9-1-ARCH.

EDYCJA 1 :

Zauważyłem, że po wyjściu z sieci występuje również zachowanie ponownego połączenia USB minicom, ale w takim przypadku avrdudejest to problem, ponieważ dzieje się tak, gdy program musi uzyskać dostęp do urządzenia.

Screencast tutaj

EDYCJA 2 :

Po pewnym czasie wróciłem do tego problemu i stwierdziłem, że mam problem tylko z ttyACM0(Yun / Micro / etc. Podłączony kablem microUSB) i ttyUSB0(Uno podłączony z USB-B) jest w porządku. Ale nawet to jest interesująca wskazówka, której nie potrafię rozgryźć.

Monitoruję prawa na urządzeniach tty:

watch -n 0.1 'ls -la /dev/ttyUSB* /dev/ttyACM*'
  • podczas przesyłania ttyUSB0tylko data / czas się zmienia i wszystko działa
  • po przesłaniu na ttyACM0urządzenie zniknęło na chwilę, to zostało utworzone nowe z niewłaściwymi prawami (i root:root), przesyłanie nie powiodło się, a następnie poprawnie ustawione są przez udev (z root:uucp) ... a następnie kolejny cykl (zniknij-źle-poprawnie)

Mój użytkownik jest w grupach locki. uucpPróbowałem dodać kilka reguł udev lub je wyłączyć, ale bezskutecznie ...

Jestem na 99% pewien, że jest to coś, zanim zasada udev go dotknie.


Czy kiedykolwiek próbowałeś dodać komendę zmiany uprawnień na /etc/rc.local? ten skrypt jest wywoływany na końcu sekwencji rozruchowej. Ten skrypt jest wykonywany z uprawnieniami administratora, więc powinieneś mieć możliwość chmod urządzenia ACM0
Genaro Morales

AFAIK W ArchLinux nie ma pliku rc.local, ale nawet to nie może zapobiec avrduderesetowaniu portu po przesłaniu.
dmnc

Nie jestem tego pewien, ale myślę, że coś można znaleźć tutaj wiki.archlinux.org/index.php/User:Herodotus/Rc-Local-Systemd
Genaro Morales

Wiem, że wciąż jest jeszcze avrdude, przyjrzę się temu.
Genaro Morales
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.