将代码上传到 arduino 时出现错误:“avrdude: ser_open(): 无法打开设备“/dev/ttyACM0”: 权限被拒绝”

将代码上传到 arduino 时出现错误:“avrdude: ser_open(): 无法打开设备“/dev/ttyACM0”: 权限被拒绝”

我的操作系统是 Ubuntu 18.04,arduino 一直运行到现在。

尽管有一些解决方案,但对我来说似乎都没有用。

我跟着这些说明在 arduino 网站上。

然后我尝试这在 arduino Stack Exchange 上/etc/udev/ruled.d/,这在第一个解决方案不起作用的情况下应该有效。答案是我们应该在路径上创建一些规则。

但它们对我都不起作用。

我也在 Windows 10 中测试了 arduino 以查看是否是硬件问题,但它运行正常。

有人对如何解决这个问题有其他想法吗?

更新:

  • 我的用户名 sergio 属于这两个组 (tty 和 dialout);
  • 我按照 arduino 官方教程的解释退出并重新登录;
  • 在 Arduino IDE 中,配置正确:Arduino UNO 和 ttyACM0
  • ll /dev/ttyACM0这是运行教程命令后的输出:

    crw-rw-rw- 1 root dialout 166, 0 Jul 15 05:41 /dev/ttyACM0
    

更新2:

我创建了一个脚本来解决这个问题: https://github.com/sergiomafra/iniarduino

答案1

当我尝试将草图上传到 Arduino 时,我遇到了类似的问题。该问题与缺少读取/写入串行端口的权限有关。我能够使用以下命令进行修复:

要确认端口存在,请从根目录输入以下内容。

ls /dev/ttyACM0

要设置读/写权限,请输入以下内容

sudo chmod a+rw /dev/ttyACM0

答案2

重新安装从 Ubuntu 软件中心安装的 arduino:

sudo apt install --reinstall arduino

重新安装是必要的,因为which avrdude根据您的评论,您的命令没有返回任何内容,但应该是/usr/bin/avrdude。再检查一下:

which avrdude

重新安装后运行 Arduino IDE 并关闭它。

检查你的 arduino 配置。打开/home/sergio/.arduino/preferences.txt文件并检查serial.port选项。尝试将其更改为/dev/ttyACM0。打开该文件:

sudo nano /home/sergio/.arduino/preferences.txt

并应用相应的更改,即选项应该看起来

serial.port=/dev/ttyACM0

然后重新启动计算机。

答案3

以下是对我有用的方法:

  • 从 Apt 卸载该版本,它无法正常工作 ( sudo apt uninstall arduino; sudo apt autoremove)
  • 安装来自 Arduino 网站的版本
  • sudo apt install avrdude因为网站上没有包含它
  • sudo usermod -a -G dialout $USER因为网站上的那个不会自动执行此操作(该dialout组拥有设备文件;这会将当前用户添加到该组)

现在一切恢复正常了!

答案4

结合我读过的所有帖子,我按照这个帖子中的指示解决了这个问题。

在新的终端中,我输入了以下内容,如下所示。

https://i.stack.imgur.com/ifRmx.png

请注意,fourplus 是我的用户名。

相关内容