更改串口权限

Ter*_*rik 62 permissions chmod serial-port arduino

我在 Ubuntu 中使用 Arduino IDE,但串行端口出现问题。它在过去一直有效,但由于可能不必要的原因,我觉得需要将某些文件的所有权从 root 所有权更改为我的用户所有权。

这使 IDE 正常工作,但我无法使用正确的串行端口。在 dev 文件夹中,我需要的端口被列为权限 166。有人(不再在该区域帮助我)将权限交换为 666,这使得它一切正常。

但是,一旦我重新启动计算机,它就会恢复,如果我现在尝试使用以下命令:

sudo chmod 666 ttyACM0
Run Code Online (Sandbox Code Playgroud)

没发生什么事。没有错误消息,但也没有权限更改。

我怎样才能改变它,我怎样才能让它永久改变。

如果这个问题过于简单或不清楚,我深表歉意,我是一个 ubuntu 菜鸟,我不会吝啬反馈!

Rin*_*ind 92

/dev/ttyACM0可以通过将自己添加到dialout组来永久解决权限问题。

你可以这样做:

  1. sudo usermod -a -G dialout $USER

  2. 注销然后重新登录以使组更改生效。


Don*_*kby 21

我无法让Rinzwind 的建议起作用,因为它抱怨用户帐户已经存在。相反,我使用此命令将现有用户 ( terrik)添加到现有组 ( dialout),如Ubuntu 帮助 Wiki 中所述

sudo adduser terrik dialout
Run Code Online (Sandbox Code Playgroud)

此命令用于列出您当前的组也很有用,尽管正如 Rinzwind 所说,您必须在串行端口开始让您进入之前注销并登录。

groups terrik
Run Code Online (Sandbox Code Playgroud)


Non*_*del 15

另一种可能性是在/etc/udev/rules.d/目录中创建一个规则文件。我遇到了类似的问题,我50-myusb.rules在上面的目录中创建了包含以下内容的文件:

KERNEL=="ttyACM[0-9]*",MODE="0666"
Run Code Online (Sandbox Code Playgroud)

请注意,这将授予连接到 ttyACM 套接字的任何设备读/写权限。如果您只需要特定设备来获得读/写权限,您还必须检查idVendoridProduct。您可以通过lsusb两次运行命令来找到这些,一次没有连接设备,一次连接时,然后观察输出中的附加行。在那里你会看到类似的东西Bus 003 Device 005: ID ffff:0005。在这种情况下idVendor = ffffidProduct = 0005。你的会不一样。然后将规则文件修改为:

ACTION=="add", KERNEL=="ttyACM[0-9]*", ATTRS{idVendor}=="ffff", ATTRS{idProduct}=="0005", MODE="0666"
Run Code Online (Sandbox Code Playgroud)

现在只有此设备获得权限。阅读本文以了解有关编写 udev 规则的更多信息。


小智 12

我无法让Terrik 的答案起作用,但如果我对ttyACM0.

sudo chmod 666 /dev/ttyACM0
Run Code Online (Sandbox Code Playgroud)

将作为评论发布,但我还没有权限...