我的机器上有两个 USB 网络摄像头,但在启动时它们有时会切换/dev/video号码。这个问题的解决方案似乎是创建一个新udev规则。我已经添加了这个规则/etc/udev/rules.d/jj-video.rules:
KERNEL=="video1", SUBSYSTEM=="video4linux", SUBSYSTEMS=="usb", ATTRS{idVendor}=="1d6b", ATTRS{idProduct}=="0001", SYMLINK+="webcam1"
Run Code Online (Sandbox Code Playgroud)
KERNEL=="video2", SUBSYSTEM=="video4linux", ATTR{name}=="Logitech QuickCam Pro 3000", KERNELS=="0000:00:1d.0", SUBSYSTEMS=="pci", DRIVERS=="uhci_hcd", ATTRS{vendor}=="0x8086", ATTRS##{device}=="0x2658", SYMLINK+="webcam2"
Run Code Online (Sandbox Code Playgroud)
但webcam没有创建符号链接。我在这个文件中尝试了许多不同的组合。目前的只是我最近的尝试。
我在以下位置找到了参数:
jjk@eee-old:~$ udevadm info -a -p $(udevadm info -q path -p /class/video4linux/video1)
Run Code Online (Sandbox Code Playgroud)
Udevadm info 从 devpath 指定的设备开始,然后沿着父设备链向上走。它为找到的每个设备打印 udev 规则密钥格式中所有可能的属性。要匹配的规则可以由设备的属性和来自单个父设备的属性组成。
looking at device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0/video4linux/video1':
KERNEL=="video1"
SUBSYSTEM=="video4linux"
DRIVER==""
ATTR{name}=="Logitech QuickCam Pro 3000"
ATTR{index}=="0"
ATTR{button}=="0"
looking at parent device '/devices/pci0000:00/0000:00:1d.0/usb2/2-2/2-2:1.0':
KERNELS=="2-2:1.0"
SUBSYSTEMS=="usb"
DRIVERS=="Philips webcam"
ATTRS{bInterfaceNumber}=="00"
ATTRS{bAlternateSetting}==" 9"
ATTRS{bNumEndpoints}=="02"
ATTRS{bInterfaceClass}=="0a"
ATTRS{bInterfaceSubClass}=="ff" …Run Code Online (Sandbox Code Playgroud)