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

ser*_*fra 35 arduino 18.04

我的操作系统是 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
    
    Run Code Online (Sandbox Code Playgroud)

更新 2:

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

小智 56

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

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

ls /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)

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

sudo chmod a+rw /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)

  • 这对我有用,但这种设置对我来说并不是永久性的。几乎每次上传草图时我都必须这样做 (2认同)

Bob*_*Bob 11

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

sudo apt install --reinstall arduino
Run Code Online (Sandbox Code Playgroud)

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

which avrdude
Run Code Online (Sandbox Code Playgroud)

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

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

sudo nano /home/sergio/.arduino/preferences.txt
Run Code Online (Sandbox Code Playgroud)

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

serial.port=/dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)

之后重启电脑。


Dra*_*nis 5

以下是对我有用的内容:

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

现在一切又恢复正常了!


小智 5

$USER从 Ubuntu 软件下载 Arduino 后,这可以解决“无法打开串行端口”问题(将您的 Ubuntu 用户名放入其中)。

sudo usermod -a -G dialout $USER  
sudo chmod a+rw /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)