通过 udev 修改 /dev/ttyTHS1 读写权限屡屡失败后找到原因

通过 udev 修改 /dev/ttyTHS1 读写权限

一、Jetson Nano 的 /dev/ttyTHS1 对应 USART2 串口,默认只有 root 有读写权限。

在网上找到了很多类似的案例:永久修改 /dev/ttyUSB0 读写权限的帖子。但是按照同样的方式操作,却不能解决问题。

二、 原因和解决方法

Google 查到了问题的原因:是因为有开机启动的服务占用了设备,导致修改规则无法正常重载。把对应服务关掉之后,再修改 UDEV 配置文件即可。

sudo lsof | grep ttyTHS1 # 发现一直占用该串口的服务进程是: nvgetty
systemctl stop nvgetty	 # 停止服务
systemctl disable nvgetty # 取消服务
三、UDEV

Linux 设备即文件的概念由来已久,UDEV 区分于“普通设备文件”和 “devfs”,它在 Linux 设备访问中,特别是那些对设备有极端需求的站点(比如需要控制上千个硬盘)和热插拔设备(比如USB摄像头和MP3播放器)上有极强的优势。可以通过配置 /etc/udev/rules.d/ 中的规则文件来灵活设定设备。UDEV 的使用方法如下:

# 查看设备信息
udevinfo -a -p /dev/ttyTHS1  
# 或者 
udevadm info -a /dev/ttyTHS1
# 添加规则文件, 一般前缀数字越小优先级越高
vim /etc/udev/rules.d/20-myserial.rules
# 增加或修改规则文件后重载规则
sudo  udevadm control --reload
# 重启电脑
sudo reboot
四、/etc/udev/rules.d/ 中的规则文件语法简介
# == 作用是条件匹配,= 作用是条件匹配成功后赋值
# KERNEL 代表设备名,SUBSYSTEM 代表设备所在子系统名
KERNEL=="ttyTHS1", SUBSYSTEM=="tty", GROUP="users", MODE="0666"

你可能感兴趣的:(通过 udev 修改 /dev/ttyTHS1 读写权限屡屡失败后找到原因)