问题描述
我在Ubuntu中使用Arduino IDE,并且遇到串口问题。它过去一直有效,但由于可能不必要的原因,我觉得有必要将一些文件的所有权从root所有权更改为我的用户所有权。
这使IDE正常工作,但我失去了使用正确串口的能力。在dev文件夹中,我需要的端口被列为权限166.有人(不再在该区域帮助我)将权限交换为666,这使得它全部工作得非常好。
但是,一旦我重新启动计算机,它就会恢复原状,如果我现在尝试使用该命令:
sudo chmod 666 ttyACM0
什么都没发生。没有错误消息,但也没有权限更改。
如何更改它,以及如何永久更改它。
如果这个问题过于简单或不清楚,我很抱歉,我是一个ubuntu noob,我不会吝惜反馈!
最佳解决办法
通过将您自己添加到dialout
组,可以永久解决/dev/ttyACM0
权限的问题。您必须注销,然后在识别组更改之前重新登录。
您可以使用sudo usermod -a -G dialout $USER
执行此操作
次佳解决办法
我无法使Rinzwind’s suggestion工作,因为它抱怨用户帐户已经存在。相反,我使用此命令将现有用户(terrik
)添加到现有组(dialout
),如Ubuntu Help Wiki中所述。
sudo adduser terrik dialout
此命令也可用于列出您当前的组,尽管正如Rinzwind所说,您必须在串口开始让您进入之前注销并登录。
groups terrik
第三种解决办法
我无法使Terrik’s answer正常工作,但如果我对ttyACM0
的路径稍作调整,我就可以了。
sudo chmod 666 /dev/ttyACM0
会发表评论,但我还没有特权……
第四种办法
另一种可能性是在/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"
现在只有这个设备获得权限。 Read this了解有关编写udev规则的更多信息。
第五种办法
尝试进入系统/用户和组,并在TTY组中的用户名上打开方框。