5台のUSBカメラ、同じブランド、同じモデル(Canyon CNR-FWC120H)があります。これらは、さまざまなシーンを24時間365日監視するために使用されます。Linux(Debian)コンソールから、またはプログラム(任意の言語)からどのカメラがどのカメラであるかを何らかの方法で識別する必要があります。
の出力を見てみましたがlsusb -vvv
、iSerial
カメラごとに異なるはずのフィールドがありますが、残念ながらこのメーカーは気にしないことに決め、すべてのカメラはその場所で同じシリアルを持っています:200901010001
私の特定のシナリオでは残念ながら同じカメラが常に同じポートに接続されるという事実に頼ることができないため、接続されているUSBポートとは無関係にどのカメラがどれであるかを識別することができる他の方法はありますか?
更新コメントの中でいくつかの議論の後、私はこれが使命不可能であることを理解しています。最後の段落は忘れてください。独創的なアイデアをお持ちの場合は、ぜひご紹介ください。デバイスが接続されているUSBポートを特定できるかどうかに興味があります。マザーボードの組み込みUSBポートと追加のPCI USBコントローラカードを使用して、十分な帯域幅のカメラに対応しています。ポートを一意に識別する必要があります。たとえば、マシンが再起動し、何らかの理由でUSBコントローラーが異なる順序で初期化された場合、ポート番号/識別は変更されません。それは可能ですか?
更新2カメラの1つのログに次の情報が表示されます。
[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
それを使用して、このコマンドを呼び出しました。
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
そして、これを得た:
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
カメラ間で異なるものがありDEVPATH
、ID_PATH
、ID_PATH_TAG
、PHYS
および(最も興味深いです)USEC_INITIALIZED
。現在、最初の4つの要素はおそらくUSBポートに関連していますが、最後の要素はUSEC_INITIALIZED
何らかのシリアル番号のように見えます。私はそれが実際に何を表すかについての情報を見つけることができません。誰もそれについて何か知っていますか?カメラが初期化されたのはマイクロ秒単位の時間であると考えましたが、この後に初期化されたカメラはUSEC_INITIALIZED=17919751
その後であり、USEC_INITIALIZED=25609278
かなりランダムに見えます。システムを再起動して確認しようとしますが、それを行うには都合の良い時間を待つ必要があります。
そして、誰かがカメラを再接続して、それが同じままであるかどうかを確認しない理由を疑問に思っている場合。答えは、私はこのPCをリモートで操作しており、将来のあらゆる潜在的なイベントに対して完全に自律するようにシステムを準備するためにこれらすべてを調査しているということです。たとえば、USBポートからカメラを切断することが含まれます。