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 使 包含sys_chmod函数。 这一方法也可以使 ttyUSB0有永久操作权限。

你可能感兴趣的:(驱动)