Tengo cinco cámaras USB, la misma marca, el mismo modelo (Canyon CNR-FWC120H). Se utilizan para monitorear diferentes escenas 24/7. Necesito identificar de alguna manera qué cámara es cuál desde la consola de Linux (Debian) o mediante programación (cualquier idioma).
Intenté mirar la salida de lsusb -vvv
, hay un campo iSerial
que debería ser diferente para cada cámara, pero desafortunadamente este fabricante decidió no molestarse y todas las cámaras tienen la misma serie en ese lugar:200901010001
¿Hay alguna otra manera de identificar qué cámara es independiente de los puertos USB a los que están conectados porque, lamentablemente, en mi situación específica no puedo confiar en el hecho de que la misma cámara siempre estará conectada al mismo puerto?
ACTUALIZACIÓN Después de algunas discusiones en los comentarios, me doy cuenta de que esta es una misión imposible. Así que olvídate del último párrafo o si tienes alguna idea ingeniosa, por favor, puedes presentarla. Ahora estoy interesado si pudiera identificar a qué puerto USB está conectado el dispositivo; Utilizo los puertos USB integrados en la placa base y tarjetas controladoras USB PCI adicionales para acomodar las cámaras con suficiente ancho de banda. Necesitaría identificar de forma exclusiva el puerto, y el número / identificación del puerto no debería cambiar si, por ejemplo, la máquina se reinicia y, por alguna razón, los controladores USB se inicializan en un orden diferente. ¿Es eso posible?
ACTUALIZACIÓN 2 Veo en mis registros para una de las cámaras la siguiente información:
[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
Usando eso, he llamado a este comando:
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
Y tengo esto:
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
Las cosas que difieren entre las cámaras son DEVPATH
, ID_PATH
, ID_PATH_TAG
, PHYS
y (lo más interesante) USEC_INITIALIZED
. Ahora los primeros cuatro elementos probablemente estén relacionados con el puerto USB, pero el último USEC_INITIALIZED
parece una especie de número de serie. No puedo encontrar ninguna información sobre lo que realmente representa. ¿Alguien sabe algo al respecto? Pensé que tal vez sea el tiempo en microsegundos cuando la cámara se inicializó, pero la cámara que se inicializó después de esta USEC_INITIALIZED=17919751
, y luego la siguiente, USEC_INITIALIZED=25609278
por lo que parece bastante aleatorio. Trataré de reiniciar el sistema y veré, pero necesito esperar un momento conveniente para hacerlo.
Y si alguien se pregunta por qué no trato de volver a conectar una cámara y ver si sigue igual. La respuesta es que estoy operando esta PC de forma remota, y estoy investigando todo esto para preparar el sistema para que sea completamente autónomo para cualquier evento potencial en el futuro. Lo que, por ejemplo, podría incluir desconectar las cámaras de los puertos USB.