根据 vendorid、productid 和 usb 总线信息编写 USB udev 规则

根据 vendorid、productid 和 usb 总线信息编写 USB udev 规则

我有几个 USB 网络摄像头,但不幸的是它们没有序列号。因此,它们在启动时往往会切换设备文件名。

由于它们总是位于同一个 USB 端口,因此我想基于此创建一个规则。但失败了。

以下是我迄今为止尝试过的:

#/sys/bus/usb/devices/2-5.1:1.1/uevent
#SUBSYSTEM=="usb", SYSFS{idVendor}=="05e1", SYSFS{idProduct}=="0408", PLACE=="2-5.1", NAME="video98"
#SUBSYSTEM=="usb", PLACE=="2-5.1", NAME="video98"
#SUBSYSTEM=="usb", ATTR{busnum}="002", ATTR{devnum}="009", ATTR{idVendor}="05e1", NAME="video98"
子系统=="usb", ATTR{busnum}="002", ATTR{devpath}="/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.1", ATTR{idVendor}="05e1", NAME="video98"

#/sys/bus/usb/devices/2-5.3:1.1/uevent
#SUBSYSTEM=="usb", ATTR{busnum}="002", ATTR{devnum}="010", ATTR{idVendor}="05e1", NAME="video99"
子系统=="usb", ATTR{busnum}="002", ATTR{devpath}="/devices/pci0000:00/0000:00:1d.7/usb2/2-5/2-5.3", ATTR{idVendor}="05e1", NAME="video99"

是的,我尝试过几次。我发现 devnum 在启动时也会改变,所以我不想使用它。

我其实只想使用“2-5.3”和“2-5.1”。这总是一样。但是该怎么做呢?

答案1

奇怪的是,我以前也做过几乎完全一样的事情。我的是外置硬盘,但对于 USB 相机来说应该没什么不同。我为端口使用了 SCSI 总线地址,效果很好。

我使用 获取了信息lsscsi,它将为 USB 设备打印类似以下内容的内容:

[2:0:0:0] disk <descriptor> <dev name>

然后类似下面的规则应该可以完成您想要的事情:

SUBSYSTEM=="usb", KERNEL=="sd*1", KERNELS=="2:0:0:0", SYMLINK+="<label_1>"

相关内容