Linux 摄像头设备树编号

Linux 摄像头设备树编号

我正在尝试/dev/video<N>通过 USB vendor:productID 识别相机,我发现sysfs 有该信息,例如:

cat /sys/class/video4linux/video0/device/input/input17/id/vendor
cat /sys/class/video4linux/video0/device/input/input17/id/product

但是,正如您所见,在我的示例中,我有子项.../input/input17/...,并且该编号似乎对于我拥有的所有相机都不同。 中似乎只有一个目录input

但是我可以依赖它吗,这样我就可以使用模式了input/input*/...?在哪里可以了解有关结构的更多信息?

答案1

这实际上并不是对我自己的问题的一个技术性答案,但至少对我来说,这个观察提供了足够的细节来识别相机:

连接相机可实现以下效果dmesg

$ dmesg
...
[48614.450392] usb 3-2.2: new high-speed USB device number 30 using xhci_hcd
...
[48614.884939] input: HBVCAM camera: HBVCAM camera as /devices/pci0000:00/0000:00:15.0/0000:03:00.0/usb3/3-2/3-2.2/3-2.2:1.0/input/input29

请注意/input29,还请注意它说“新的高速 USB 设备30号。这映射到等。每次我断开连接并断开相机时,/sys/class/video4linux/video0/device/input/input29/id/vendor数字都会增加。2930号似乎只是同一个数字的基于 1 的索引,也可以在中找到lsusb

$ lsusb
...
Bus 003 Device 030: ID 058f:3861 Alcor Micro Corp. VMware Virtual USB Hub
...

Device 030是我感兴趣的相机,其数字对应于(从零开始)input29

这证实了我只需在input/input*/路径中搜索,并假设其中只有一个项目,我可以忽略其编号。或者,如果我vid:pid已经知道我的,我可以使用它lsusb来获取设备编号,并使用它通过设备树找到我的路径。

相关内容