ttyUSB设备节点权限设置
当系统在运行过程中,插上一个USB转串口设备,系统能识别到节点ttyUSB0。但是在一般情况下,系统没有获取root权限,没办法对节点进行操作。对于这种情况,需要设置该节点的权限,有下面几种设置节点权限的方法。
方法一:
在终端直接输入命令改变权限:
Chmod 0777 ttyUSB0
这种方法只合适短暂性操作,一旦重新拔插设备或重启系统,节点即会恢复到最初的权限,前面的命令就会失效。
方法二:
在Android系统中,ueventd进程可以对“热插拔”设备进行监测,在系统运行中,当有USB设备插入时,ueventd会接收到这一事件,并为插入的设备动态创建设备节点文件。我们可以在文件ueventd.rc中添加:
/dev/ttyUSB0 0777 radio radio
这种方法可以让我们对ttyUSB0有永久操作权限。
方法三:
这一方法要改动代码了,相对复杂。
在kerne/driver/usb/serial/bus.c文件里的usb_device_probe函数中添加如下代码:
msleep(50);
do {
switch(minor) {
case 0:
re = sys_chmod("/dev/ttyUSB0", 0666);
break;
case 1:
re = sys_chmod("/dev/ttyUSB1", 0666);
break;
case 2:
re = sys_chmod("/dev/ttyUSB2", 0666);
break;
default:
break;
}
}while(re < 0 && ++retry < 5);
if(re < 0)
printk("change permission ttyUSB%d faild!\n", minor);
else
printk("change permission ttyUSB%d succeed!\n", minor);
为了避免权限设置失败,最好多retry几次。要记得在文件头加入#include <linux/syscalls.h>使包含sys_chmod函数。这一方法也可以使ttyUSB0有永久操作权限。