我有五个 USB 摄像头,相同品牌,相同型号(Canyon CNR-FWC120H)。它们用于 24/7 全天候监控不同的场景。我需要以某种方式从 Linux (Debian) 控制台或以编程方式(任何语言)确定哪个相机是哪个。
我试过查看 的输出lsusb -vvv,iSerial每个相机都有一个字段应该不同,但不幸的是,该制造商决定不打扰,所有相机在那个地方都有相同的序列号:200901010001
有没有其他方法可以识别哪个相机独立于它们所连接的 USB 端口,因为不幸的是,在我的特定场景中,我不能依赖相同的相机将始终连接到同一个端口的事实。
更新在评论中进行了一些讨论后,我意识到这是不可能完成的任务。所以忘记最后一段,或者如果你有一些巧妙的想法,欢迎你提出来。我现在很感兴趣,如果我能确定设备连接到哪个 USB 端口;我使用主板上的内置 USB 端口和额外的 PCI USB 控制器卡来容纳具有足够带宽的相机。我需要唯一标识端口,并且端口号/标识不应更改,例如,如果机器重新启动并且由于某种原因 USB 控制器以不同的顺序初始化。那可能吗?
更新 2我在其中一台摄像机的日志中看到以下信息:
[Wed Apr 30 18:35:02 2014] uvcvideo: Found UVC 1.00 device FULL HD 1080P Webcam (0bda:58b0)
[Wed Apr 30 18:35:02 2014] input: FULL HD 1080P Webcam as /devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
Run Code Online (Sandbox Code Playgroud)
使用它,我调用了这个命令:
udevadm info --query=all --path=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
Run Code Online (Sandbox Code Playgroud)
得到了这个:
P: /devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
E: DEVPATH=/devices/pci0000:00/0000:00:01.0/0000:01:00.0/usb3/3-2/3-2:1.0/input/input4
E: EV=3
E: ID_BUS=usb
E: ID_INPUT=1
E: ID_INPUT_KEY=1
E: ID_MODEL=FULL_HD_1080P_Webcam
E: ID_MODEL_ENC=FULL\x20HD\x201080P\x20Webcam
E: ID_MODEL_ID=58b0
E: ID_PATH=pci-0000:01:00.0-usb-0:2:1.0
E: ID_PATH_TAG=pci-0000_01_00_0-usb-0_2_1_0
E: ID_REVISION=5801
E: ID_SERIAL=Generic_FULL_HD_1080P_Webcam_200901010001
E: ID_SERIAL_SHORT=200901010001
E: ID_TYPE=video
E: ID_USB_DRIVER=uvcvideo
E: ID_USB_INTERFACES=:0e0100:0e0200:010100:010200:
E: ID_USB_INTERFACE_NUM=00
E: ID_VENDOR=Generic
E: ID_VENDOR_ENC=Generic
E: ID_VENDOR_ID=0bda
E: KEY=100000 0 0 0
E: MODALIAS=input:b0003v0BDAp58B0e5801-e0,1,kD4,ramlsfw
E: NAME="FULL HD 1080P Webcam"
E: PHYS="usb-0000:01:00.0-2/button"
E: PRODUCT=3/bda/58b0/5801
E: PROP=0
E: SUBSYSTEM=input
E: UDEV_LOG=3
E: USEC_INITIALIZED=41090223
Run Code Online (Sandbox Code Playgroud)
该相机之间不同的事情是DEVPATH,ID_PATH,ID_PATH_TAG,PHYS和(最有趣的)USEC_INITIALIZED。现在前四个元素可能与 USB 端口有关,但最后一个元素USEC_INITIALIZED看起来像某种序列号。我找不到任何关于它实际代表什么的信息。有人知道吗?我认为可能是相机初始化的时间以微秒为单位,但是在此之后初始化的相机有USEC_INITIALIZED=17919751,然后是之后的相机,USEC_INITIALIZED=25609278因此看起来相当随机。我会尝试重新启动系统并查看,但我需要等待一个方便的时间来执行此操作。
如果有人想知道为什么我不只是尝试重新连接相机,看看它是否保持不变。答案是我正在远程操作这台 PC,我正在调查所有这些,以准备系统在未来的任何潜在事件中完全自主。例如,这可能包括从 USB 端口断开相机。
zim*_*r62 -1
我听说有人在启动过程中延迟按顺序打开设备电源,这样您就可以根据设备打开的顺序来识别它们。它需要一些额外的硬件来按顺序控制各个 USB 端口的电源。
您可以破解一个 USB 集线器,该集线器的每个端口都有单独的电源开关,将其连接到 arduino 并触发它们的打开顺序。
| 归档时间: |
|
| 查看次数: |
4424 次 |
| 最近记录: |