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ę minicom
bez 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 uucp
grupie. 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. dmesg
wyjś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 avrdude
jest 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
ttyUSB0
tylko data / czas się zmienia i wszystko działa - po przesłaniu na
ttyACM0
urządzenie zniknęło na chwilę, to zostało utworzone nowe z niewłaściwymi prawami (iroot:root
), przesyłanie nie powiodło się, a następnie poprawnie ustawione są przez udev (zroot:uucp
) ... a następnie kolejny cykl (zniknij-źle-poprawnie)
Mój użytkownik jest w grupach lock
i. uucp
Pró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.
źródło
avrdude
resetowaniu portu po przesłaniu.