Ich habe fünf USB-Kameras der gleichen Marke und des gleichen Modells (Canyon CNR-FWC120H). Sie werden verwendet, um verschiedene Szenen rund um die Uhr zu überwachen. Ich muss irgendwie identifizieren, welche Kamera welche von der Linux (Debian) -Konsole oder programmgesteuert (in einer beliebigen Sprache) ist.
Ich habe versucht, auf die Ausgabe von zu schauen lsusb -vvv
, es gibt ein Feld, iSerial
das für jede Kamera unterschiedlich sein sollte, aber leider hat dieser Hersteller beschlossen, sich nicht darum zu kümmern, und alle Kameras haben an dieser Stelle die gleiche Seriennummer:200901010001
Gibt es eine andere Möglichkeit, die Kamera zu identifizieren, unabhängig von den USB-Anschlüssen, an die sie angeschlossen sind? In meinem speziellen Szenario kann ich mich leider nicht darauf verlassen, dass immer dieselbe Kamera an denselben Anschluss angeschlossen ist.
UPDATE Nach einigen Diskussionen in den Kommentaren ist mir klar, dass dies keine Mission ist. Vergiss also den letzten Absatz oder wenn du eine geniale Idee hast, kannst du sie gerne präsentieren. Ich bin jetzt interessiert, ob ich herausfinden kann, an welchen USB-Anschluss das Gerät angeschlossen ist. Ich verwende die eingebauten USB-Anschlüsse des Motherboards und zusätzliche PCI-USB-Controller-Karten, um die Kameras mit ausreichender Bandbreite unterzubringen. Ich müsste den Port eindeutig identifizieren, und die Portnummer / -identifikation sollte sich nicht ändern, wenn zum Beispiel der Computer neu startet und aus irgendeinem Grund die USB-Controller in einer anderen Reihenfolge initialisiert werden. Ist das möglich?
UPDATE 2 Ich sehe in meinen Protokollen für eine der Kameras die folgenden Informationen:
[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
Damit habe ich diesen Befehl aufgerufen:
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
Und bekam das:
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
Die Dinge, die sich zwischen den Kameras unterscheiden DEVPATH
, ID_PATH
sind ID_PATH_TAG
, PHYS
und (am interessantesten) USEC_INITIALIZED
. Jetzt hängen die ersten vier Elemente wahrscheinlich mit dem USB-Anschluss zusammen, aber der letzte USEC_INITIALIZED
sieht aus wie eine Art Seriennummer. Ich kann keine Informationen darüber finden, was es tatsächlich darstellt. Weiß jemand etwas darüber? Ich dachte, dass es vielleicht die Zeit in Mikrosekunden ist, in der die Kamera initialisiert wurde, aber die Kamera, die danach initialisiert wurde USEC_INITIALIZED=17919751
, und dann die danach, USEC_INITIALIZED=25609278
so dass es eher zufällig erscheint. Ich werde versuchen, das System neu zu starten und zu sehen, aber ich muss auf eine angemessene Zeit warten, um das zu tun.
Und wenn sich jemand fragt, warum ich nicht einfach versuche, eine Kamera wieder anzuschließen und zu sehen, ob das gleich bleibt. Die Antwort ist, dass ich diesen PC von einem entfernten Standort aus bediene und dies alles untersuche, um das System darauf vorzubereiten, für alle möglichen zukünftigen Ereignisse völlig autonom zu sein. Dazu gehört beispielsweise das Trennen der Kameras von den USB-Anschlüssen.