串口设备权限设置

        有时候,我们插上在MID上插上带USB转串口的设备,机器能够识别到这个节点,比如ttyUSB0,但是通过打印信息看到设备没有权限去访问这个节点,此时就需要给这个节点赋予可访问的权限,当然,每次使用的时候,都执行chmod 777 /dev/ttyUSB0命令,发现设备可以访问此节点了,但是只能一次有效,下次插上设备的时候又失效了。

      下面介绍两种给节点赋予权限的方法:

      1.插上设备,查看串口信息,设备运行在函数usb_serial_device_probe(kernel/drivers/usb/serial/bus.c),添加如下代码:

       if(minor == 0) {
                 msleep(200);
                 sys_chmod("/dev/ttyUSB0", S_IRWXUGO);
                  printk("to change permission ttyUSB0");
          }

        注:minor参数值可查阅源代码以及串口信息,延时时间自行调节即可。

      2.在device根目录下修改u.rc文件,添加权限代码:

        /dev/ttyUSB0 0660 radio radio改为/dev/ttyUSB0 0666 system system

       

     

<think>好的,我现在需要帮用户解决如何设置TTYUSB串口的永久权限问题。用户提到他们想通过udev规则来配置,所以我要先回想相关的知识。 首先,我记得在Linux系统中,udev是管理设备节点的工具,可以通过规则文件来设定权限。用户之前可能尝试过临时用chmod修改权限,但重启后失效,所以需要永久解决方案。 接下来,我需要确认步骤是否正确。首先创建或编辑udev规则文件,通常在/etc/udev/rules.d/目录下,比如90-local.rules。然后添加规则,匹配对应的串口设备,比如通过SUBSYSTEM和KERNEL匹配ttyUSB*,然后设置GROUP和MODE。这样设备插入时就会自动应用权限。 可能还需要设置用户组,比如将用户加入dialout组,这样就不用每次修改权限了。然后记得重新加载udev规则,可能需要重启服务或者触发规则生效。用户之前引用的资料里提到使用systemctl命令,但正确的做法可能是使用udevadm control --reload和trigger命令。 还要注意,用户可能遇到权限问题,比如规则文件语法错误,或者设备匹配不正确。需要提醒用户检查规则是否正确,以及确保设备节点正确识别。另外,永久生效可能需要重启,或者拔插设备。 最后,用户可能需要测试配置是否生效,比如插拔USB转串口设备后,检查/dev/ttyUSB0的权限是否改变。如果有问题,查看系统日志排查错误。</think>### Linux TTYUSB串口永久权限设置教程 在Linux系统中配置TTYUSB串口永久权限,需通过udev规则实现,具体步骤如下: 1. **创建udev规则文件** ```bash $ sudo vim /etc/udev/rules.d/90-local.rules ``` 添加以下内容(以ttyUSB0为例): ``` KERNEL=="ttyUSB0", GROUP="dialout", MODE="0666" ``` * 若需要匹配所有ttyUSB设备,可改为`KERNEL=="ttyUSB*"`[^3] 2. **重新加载udev规则** ```bash $ sudo udevadm control --reload $ sudo udevadm trigger ``` 3. **验证配置** ```bash $ ls -l /dev/ttyUSB0 ``` 成功时应显示权限为`crw-rw-rw-` 4. **用户组配置(可选)** ```bash $ sudo usermod -aG dialout $USER # 将当前用户加入dialout组 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值