avrdude:/dev/ttyACM0 权限更改问题

avrdude:/dev/ttyACM0 权限更改问题

我在 Arch Linux 笔记本电脑上使用 Arduino IDE 时没有遇到问题,但一段时间/几个月后,由于权限问题,我无法上传草图:

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

我可以毫无问题地访问和写入设备minicom,因为权限很好:

crw-rw-rw- 1 root uucp

我的用户在uucp组中。但是当我开始上传草图时,关于dmesg,USB 设备正在重新连接,此时我可以看到不同的权限:

rw------- 1 root root

经过一段时间(几秒)后,权限恢复原状。dmesg输出如下:

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

我尝试使用几个自定义 udev 规则来解决这个问题,但没有成功:

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

如何从系统中出现的第一刻起强制组或模式?我希望这不仅仅是 Arduino 1.8.3 中的一个错误。内核版本 4.11.9-1-ARCH。

编辑#1

我发现退出后minicom也会发生 USB 重新连接行为,但在这种情况下avrdude是个问题,因为它发生在程序需要访问设备时。

截屏直播这里

编辑#2

过了一段时间我又回过头来研究这个问题,发现只有ttyACM0(Yun/Micro/etc. 用 microUSB 线连接) 和ttyUSB0(Uno 用 USB-B 连接) 有问题。但即使是这个有趣的线索,我也没法弄清楚。

我正在监控 tty 设备上的权限:

watch -n 0.1 'ls -la /dev/ttyUSB* /dev/ttyACM*'
  • 当上传ttyUSB0日期/时间发生变化且一切正常时
  • 当上传到ttyACM0设备消失片刻后,又root:root创建了一个具有错误权限(和 )的新设备,上传失败,然后 udev 正确设置了权限(使用root:uucp)...然后是另一个循环(消失-错误-正确)

我的用户在lockuucp组中,我尝试添加一些 udev 规则或禁用它们,但没有成功......

我 99% 确信这是 udev 规则触及它之前的事情。

答案1

我遇到了同样的问题,我删除了 tlp 包,这个问题就消失了。

相关内容