更改串行端口的权限


54

我在Ubuntu中使用Arduino IDE,并且串行端口出现问题。它过去曾经有效,但是由于不必要的原因,我感到有必要将某些文件的所有权从根所有权更改为用户所有权。

这样可以使IDE正常工作,但是我失去了使用正确的串行端口的能力。在dev文件夹中,我需要的端口被列为权限166。某人(不再在该地区为我提供帮助)将权限交换为666,这使它们的工作都非常出色。

但是,重新启动计算机后,如果现在尝试使用以下命令,它就会还原:

sudo chmod 666 ttyACM0

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

我如何更改它,以及如何使其永久更改。

如果这个问题过于简单或不清楚,我深表歉意,我是个ubuntu新手,我也不会讨厌反馈!


1
sudo chmod 666 / dev / ttyACM0这是此页面上唯一适用于我的14.04 beta2实时环境的建议。谢谢!

Answers:


76

/dev/ttyACM0通过将您自己添加到该dialout组中,可以永久解决具有权限的问题。您必须先注销,然后再登录,才能识别组更改。

你可以这样做 sudo usermod -a -G dialout $USER


当Arduino IDE要求赋予root身份以将自己添加到“ Dailout组”时,我了解了这一点。现在我知道了。
Ufoguy 2013年

我刚刚购买了与我的新电视一起使用的Pulse-Eight USB-CEC适配器,发现它最初不适用于Ubuntu中的Kodi。检查崩溃日志并搜索错误消息“ ERROR:CecLogMessage-打开串行端口'/ dev / ttyACM0'时出错:权限被拒绝”后,出现此页面。多亏了您(以及下面的Don Kirkby,它也可以工作),我才能够立即解决问题。
Rich.T.

另外,“ user247020”的回答给了我另一个解决方案:打开GUI工具“用户和组”,并让自己成为“管理员”。除其他外,这会将您添加到“拨号”组(即“使用调制解调器”)。
Rich.T.

在sudo chgrp拨出/ dev / ttyS0后,usermod -a -G拨出pi可以正常工作,并且工作良好,但是当我重新启动时,所有配置都丢失了。我在覆盆子pi 3上
J261 2016年

将您需要重做的任何命令添加到启动脚本。所以bash或/ etc / profile或init。
Rinzwind'9

20

我无法获得Rinzwind的建议,因为它抱怨用户帐户已存在。而是使用此命令将现有用户(terrik)添加到现有组(dialout),如Ubuntu Help Wiki所述

sudo adduser terrik dialout

该命令也可用于列出当前组,尽管正如Rinzwind所说的那样,您必须先注销并登录,然后才能让串口进入。

groups terrik

10

我无法获得Terrik的答案,但是如果我对的路径做了些微调整,那我可以ttyACM0

sudo chmod 666 /dev/ttyACM0

会发表评论,但我还没有特权...


1
权限似乎拔出并重新回到Arduino的时候在复位。
user1063287

不起作用。:(
弗雷迪2015年

它也很好。但需要udev规则重新许可才能重新插入
pylover

我尝试过,sudo chmod 666 /dev/ttyACM0并且再次启动时不起作用。有没有人有办法解决吗?
user1063287 '16

嗯,这确实有效....将命令添加到启动脚本。(/ Dev在启动时会重新创建,因此您每次启动时都需要重做此命令)
Rinzwind

10

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

KERNEL=="ttyACM[0-9]*",MODE="0666"

请注意,这将为连接到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"

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


2

尝试进入“系统/用户和组”,然后选中TTY组中用户名上的框。


[Errno 13] Permission denied: '/dev/ttyACM0'。除tty组外,用户也在dialout组内。Linux Mint 17.1。
user1063287 2015年

1
@ user1063287试试sudo chmod a+rw /dev/ttyACM0
弗拉基米尔·S.
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.