我在 Ubuntu 中使用 Arduino IDE,但串行端口出现问题。以前它一直正常工作,但出于可能不必要的原因,我觉得需要将某些文件的所有权从 root 所有权更改为我的用户所有权。
这使得 IDE 正常工作,但我失去了使用正确串行端口的能力。在 dev 文件夹中,我需要的端口被列为权限 166。有人(不再在该地区帮助我)将权限交换为 666,这使一切都顺利运行。
但是,当我重新启动计算机时,它就恢复了,如果我现在尝试使用该命令:
sudo chmod 666 ttyACM0
什么都没发生。没有错误消息,但也没有权限更改。
我怎样才能改变它,怎样才能让它永久改变。
如果这个问题过于简单或不清楚,我深感抱歉,我是一名 ubuntu 新手,我不会吝惜反馈!
答案1
通过将您自己添加到该组/dev/ttyACM0
可以永久解决权限问题。dialout
您可以使用以下方式执行此操作:
sudo usermod -a -G dialout $USER
注销然后重新登录以使组更改生效。
答案2
我无法得到Rinzwind 的建议无法正常工作,因为它抱怨用户帐户已经存在。相反,我使用此命令将现有用户 ( terrik
) 添加到现有组 ( dialout
),如Ubuntu 帮助维基。
sudo adduser terrik dialout
此命令还可用于列出您当前的组,尽管正如 Rinzwind 所说,您必须先注销并登录,然后串行端口才开始让您进入。
groups terrik
答案3
另一种可能性是在目录中创建一个规则文件。我遇到了类似的问题,并在上面的目录中/etc/udev/rules.d/
创建了包含以下内容的文件:50-myusb.rules
KERNEL=="ttyACM[0-9]*",MODE="0666"
请注意,这将为连接到 ttyACM 套接字的任何设备提供读/写权限。如果您只需要特定设备获得读/写权限,您还必须检查idVendor
和idProduct
。您可以通过运行lsusb
命令两次来找到它们,一次是在设备未连接时,一次是在设备连接时,然后观察输出中的附加行。在那里你会看到类似的东西Bus 003 Device 005: ID ffff:0005
。在这种情况idVendor = ffff
下和idProduct = 0005
。你的会有所不同。然后你将规则文件修改为:
ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"
现在只有此设备获得权限。读这个了解有关编写 udev 规则的更多信息。
答案4
尝试进入系统/用户和组并选中 TTY 组中您的用户名的复选框。