Eu estava usando o Arduino IDE no meu laptop Arch Linux sem problemas, depois de algum tempo / meses eu não sou capaz de fazer upload do esboço por causa das permissões:
avrdude: ser_open(): can't open device "/dev/ttyACM0": Permission denied
Eu posso acessar e escrever no dispositivo com minicom sem problemas, porque as permissões são boas:
crw-rw-rw- 1 root uucp
Meu usuário está no grupo uucp . Mas quando eu começo o upload do sketch, em relação ao dmesg , o dispositivo usb está sendo reconectado e nesse momento eu posso ver permissões diferentes:
rw------- 1 root root
E depois de algum tempo (segundos), as permissões retornam como estavam. dmesg output aqui:
[ 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
...
Eu tentei resolver isso com várias regras personalizadas do udev, mas sem sucesso:
SUBSYSTEMS="usb", ATTRS{idVendor}== "2341", GROUP="uucp", MODE="0666"
KERNEL=="ttyACM[0-9]*", SYMLINK+="%k", GROUP="uucp", MODE="0666"
Como forçar grupo ou modo desde o primeiro momento em que apareceu no sistema? Espero que isso não seja apenas um bug no Arduino 1.8.3. Versão do kernel 4.11.9-1-ARCH.
EDIT # 1 :
Descobri que o comportamento de reconexão usb ocorre após sair minicom também, mas no caso de avrdude isso é um problema porque está acontecendo quando o programa precisa acessar o dispositivo.
Screencast aqui
EDIT # 2 :
Depois de algum tempo eu voltei a esse problema e descobri que tenho problema apenas com ttyACM0 (Yun / Micro / etc conectado com cabo microUSB) e ttyUSB0 (Uno conectado com USB-B) está ok. Mas mesmo isso é uma pista interessante que eu não consigo entender.
Estou monitorando os direitos dos dispositivos tty:
watch -n 0.1 'ls -la /dev/ttyUSB* /dev/ttyACM*'
ttyUSB0 , apenas a data / hora está mudando e tudo está funcionando ttyACM0 device desapareceu por um momento, um novo com direitos errados (e root:root ) foi criado, o upload falhou e, em seguida, right foi definido corretamente pelo udev (com root:uucp ) ... e depois outro ciclo (desaparecer-errado-correto) Meu usuário está nos grupos lock e uucp , tentei adicionar algumas regras do udev ou desativá-las, mas sem sucesso ...
Tenho 99% de certeza de que isso é algo antes que a regra do udev esteja tocando nela.
Tags permissions usb udev arduino