Answers:
通常,这是通过添加到/etc/udev/rules.d
一个可能50-usb-scale.conf
具有以下内容的文件来完成的:
SUBSYSTEM=="usb", ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2", MODE="0666"
凡HEX1和HEX2与供应商和产品ID分别替换。
要匹配的接口类型,而不是,你可以尝试更换ATTR{idVendor}=="HEX1", ATTR{idProduct}=="HEX2"
一个匹配的bInterfaceClass
是03
(HID):
SUBSYSTEM=="usb", ATTR{bInterfaceClass}=="03", MODE="0666"
但请注意,这也将捕获鼠标和键盘。
.rules
扩展名。带有.conf
扩展名的文件将不起作用。
lsusb -vvv
获取idProduct和idVendor
lsusb
是一个很好的开始,以查看连接的内容和ID。idVendor
并且idProduct
匹配似乎区分大小写,因此ID DA77
对我不起作用,但对我来说有效da77
。(手持诊断: udevadm info --attribute-walk /dev/bus/usb/008/023
,总线008设备023我的例子; lsusb
用于你的)添加规则后,sudo udevadm control --reload-rules
然后sudo udevadm trigger
可避免重新引导:变化秒后这一点。ATTR vs ATTRS没有任何问题。我的.rules文件显示为:SUBSYSTEM=="usb", ATTR{idVendor}=="da77", ATTR{idProduct}=="d12e", GROUP="users", MODE="0666"
。
仅作总结:
您可以过滤:
并使用:
==比较是否相等。
!=比较不平等。
=为键分配一个值。代表列表的键将被重置,并且仅分配此单个值。
+ =将值添加到包含条目列表的键中。
:=最后为键分配一个值;禁止以后进行任何更改。
您可以在/ dev / ...中为特定设备指定特定的新路径。
例如:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", ATTRS{idProduct}=="05df", ATTRS{serial}=="1234567", GROUP="cdrom", OWNER="user28", MODE="0640", SYMLINK+="myhid"
结果是:
您可以通过“ / dev / hiddevx”或“ / dev / myhid”轻松访问设备,“ cdrom”组中的每个用户都可以从设备读取信息。所有者“ user28”可以读写。
或最简单:
KERNEL=="hiddev*", ATTRS{idVendor}=="16c0", MODE="0666"
结果:每个用户都可以从供应商0x16c0访问每个hiddevice
有关详细信息,请参阅:文档
如果是HIDRAW设备,则必须
chmod 0666 /dev/hidrawX
其中X是隐藏的设备号,例如hidraw0。你可以做
ls /dev/hid*
查看列表:)或只是做
sudo chmod 0666 /dev/hidraw*
为所有Hidraw设备设置,可能不建议这样做。
Ubuntu 18.04更新/澄清:
Kees Cook的答案很接近,但是需要进行2项更改才能在18.04中工作(当前版本,只有我对此进行了测试)。
总线001设备011:ID 04b8:014a Seiko Epson Corp.
SUBSYSTEM ==“ usb”,ATTRS {idVendor} ==“ 04b8”,ATTR {idProduct} ==“ 014a”,MODE =“ 0666”但是使用您的idVendor和idProduct十六进制值。
ATTRS
供应商和产品ID都一样?然后您的代码示例是错误的(就像您稍后声明两行一样)。