linux - 输入设备的udev规则

标签 linux ubuntu driver udev

我有一个相机设备,它的输入设备列在 /dev/input 下。 .我想将该输入设备添加到组 plugdev .

当我插入相机时:

[  704.406837] input: See3CAM_CU51 as /devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/input/input21
[  705.157657] hid-generic 0003:2560:C152.0007: hiddev0,hidraw4: USB HID v1.11 Device [e-con Systems See3CAM_CU51] on usb-0000:00:1

它现在符号链接(symbolic link)在 /dev/input/by-id
0 lrwxrwxrwx 1 root root 10 Aug 31 10:50 usb-e-con_Systems_See3CAM_CU51_172A0202-event-if00 -> ../event20

但是,event20 具有以下权限:
0 crw-rw---- 1 root input 13, 84 Aug 31 10:50 event20

我已经成功地为 hiddevice 本身编写了 udev 规则,但由于某种原因,我无法为输入设备获得正确的规则。这是我尝试过的:
KERNEL=="input", ATTR{name}=="See3CAM_CU51", MODE="0666" GROUP="plugdev"

但它似乎不起作用。改变输入设备所有权的例子并不多(至少我发现了)。

更新:

当我将 udev 规则更改为
    KERNEL=="input", MODE="0666" GROUP="plugdev"

也就是说,我省略了设备名称,我在/dev/input 中的所有输入设备都具有正确的权限。

所以基本上,我是说“每个输入设备都设置为模式 0666,并且属于 plugdev 组”,这是可行的。但是添加 ATTR{name}== 会破坏它。

这是 udevadm 信息的输出:
udevadm info -a -p /devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/input/input21

looking at device '/devices/pci0000:00/0000:00:14.0/usb4/4-2/4-2:1.0/input/input21':
KERNEL=="input21"
SUBSYSTEM=="input"
DRIVER==""
ATTR{name}=="See3CAM_CU51"
ATTR{phys}=="usb-0000:00:14.0-2/button"
ATTR{properties}=="0"
ATTR{uniq}==""

它应该可以工作,我为设备设置了正确的名称,我犯了什么愚蠢的错误?

最佳答案

udev 规则支持字符串匹配,您可能正在寻找:

ACTION=="...", KERNEL=="input[0-9]*", SUBSYSTEM=="input", ...
匹配任何 inputN 的特定操作设备,然后您可以添加您的 ATTR过滤器以选择特定设备。

关于linux - 输入设备的udev规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45987478/

相关文章:

virtual-machine - VirtualBox:无法访问内核驱动程序

c - 未解析的外部符号 _malloc

linux - Hadoop从本地上传文件到HDFS

linux - 如果 x > y 在 x 大于 y 的地方不起作用 python 2.7

linux - 如何在 Linux 上安装 Node 二进制分发文件

ubuntu - 如何实现配额?

c - 需要一个内核模式 API 来找到用户模式 ​​Win32 Dll 的基地址

linux - 无法在 CentOS 6.6 上安装 MySQL?

php - 客户端无法连接到本地主机上的 RabbitMQ 服务器

scala - Ubuntu下安装IntelliJ + Scala