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