📜  linux arduino 权限被拒绝 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 15:17:20.187000             🧑  作者: Mango

Linux Arduino 权限被拒绝 - Shell/Bash

当在 Linux 平台上使用 Arduino 时,有时可能会遇到权限被拒绝的问题。

问题描述

当您尝试在 Linux 平台上使用 Arduino 程序时,您可能会看到如下的错误消息:

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

这个错误信息表明您尝试连接到 Arduino 板时,无法打开串行设备。

解决方案
1. 添加用户到 dialout 组

为了能够访问串行设备,您需要将自己添加到 dialout 组。您可以通过以下命令将当前用户添加到该组:

sudo usermod -a -G dialout $USER

接下来,注销并重新登录您的帐户,以使更改生效。

2. 添加 udev 规则

如果第一种方法无法解决问题,您可以尝试添加一个 udev 规则。使用文本编辑器打开 /etc/udev/rules.d/99-arduino.rules 文件,如果该文件不存在则自己创建一个。将以下代码段复制并粘贴到文件中:

SUBSYSTEMS=="usb", ATTRS{idVendor}=="2341", ATTRS{idProduct}=="0043", MODE="0666", GROUP="dialout"

保存文件并执行以下命令以使更改生效:

sudo udevadm control --reload-rules
sudo udevadm trigger
3. 检查串口号

确保您正在使用正确的串口号。最简单的方法是在 Arduino IDE 中打开 “工具” 菜单 并检查串口列表。或者,在终端中运行以下命令:

ls /dev/tty*

这将列出所有可用的串口设备名称。找到与您的 Arduino 板匹配的设备名称,并在相应的位置使用该设备名称。

结论

通过执行上述步骤,您应该能够解决 Arduino 在 Linux 平台上的权限问题。如果问题仍然存在,请确认硬件设备是否被正确连接并检查您所使用的程序是否已针对当前硬件设备进行了正确的设置。