我正在尝试与来自 Ubuntu 12.04 的 Arduino 通信。插入 USB 电缆时,arduino 的串口显示为 /dev/ttyUSB0。当我尝试使用moserial连接到它时,出现“无法打开设备 /dev/ttyUSB0”错误,但在我使用sudo启动moserial 时却没有。我必须配置什么才能使串行设备以普通非 root 用户身份访问?
您有多种选择:
您很可能在 Ubuntu 中运行了 systemd-logind 或 ConsoleKit,它们可以根据当前在控制台登录的用户帐户在设备节点上自动配置 ACL。这些 ACL 授予对通常权限的额外访问权限,可以使用getfacl
.
要使用它,请将以下内容添加到/etc/udev/rules.d/60-extra-acl.rules
1:
KERNEL=="ttyUSB[0-9]*", TAG+="udev-acl", TAG+="uaccess"
Run Code Online (Sandbox Code Playgroud)
(1是,创建文件。默认情况下它不存在;整个目录用于管理员自定义。)
tty 设备通常可由特定组读取/写入,例如“拨出”或“uucp”。将您自己添加到该组以访问所有串行端口:
# gpasswd -a YourUsername dialout
Run Code Online (Sandbox Code Playgroud)
不要忘记注销并重新登录,以便应用组更改。
与上述类似的 udev 规则也可用于设置“主要”所有者和组以及权限(这是默认组的设置方式)。例如:
KERNEL=="ttyUSB[0-9]*", OWNER="YourUsername"
or: KERNEL=="ttyUSB[0-9]*", GROUP="users", MODE="0660"
or: KERNEL=="ttyUSB[0-9]*", MODE="0666"
Run Code Online (Sandbox Code Playgroud)
您可以分配给 OWNER、GROUP 和 MODE 参数。
要进行一次性更改,只需像往常一样使用chmod
和/或chown
。
# chown YourUsername /dev/ttyUSB0
or: # chmod a+rw /dev/ttyUSB0
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17381 次 |
最近记录: |