【问题标题】:Udev rule for input device输入设备的udev规则
【发布时间】:2017-08-31 17:54:50
【问题描述】:

我有一个相机设备,它的输入设备列在/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

它现在在/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}==""

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

【问题讨论】:

  • 尝试使用“input21”的内核名称。示例:KERNEL=="input21", ATTR{name}=="See3CAM_CU51", MODE="0666" GROUP="plugdev"
  • 但是如果我以后插上摄像头,就不能保证是input21。也许我可以用符号链接做同样的事情。

标签: linux ubuntu driver udev


【解决方案1】:

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

ACTION=="...", KERNEL=="input[0-9]*", SUBSYSTEM=="input", ...

要匹配 任何 inputN 设备的特定操作,然后您可以添加 ATTR 过滤器以选择特定设备。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-16
    • 2014-02-15
    • 1970-01-01
    • 2014-10-08
    • 2020-09-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多