Mam pięć kamer USB, tej samej marki, tego samego modelu (Canyon CNR-FWC120H). Służą do monitorowania różnych scen przez całą dobę. Muszę jakoś ustalić, która kamera jest z konsoli Linux (Debian) lub programowo (w dowolnym języku).
Próbowałem spojrzeć na wyjście lsusb -vvv
, jest pole, iSerial
które powinno być inne dla każdej kamery, ale niestety ten producent postanowił nie zawracać sobie głowy i wszystkie kamery mają ten sam numer seryjny w tym miejscu:200901010001
Czy jest jakiś inny sposób, w jaki mógłbym określić, która kamera jest niezależnie od portów USB, do których są one podłączone, ponieważ niestety w moim konkretnym scenariuszu nie mogę polegać na tym, że ta sama kamera zawsze będzie podłączona do tego samego portu.
AKTUALIZACJA Po krótkiej dyskusji w komentarzach zdaję sobie sprawę, że misja jest niemożliwa. Zapomnij więc o ostatnim akapicie lub jeśli masz jakiś genialny pomysł, możesz go przedstawić. Jestem teraz zainteresowany, czy mogę zidentyfikować port USB, do którego urządzenie jest podłączone; Używam wbudowanych portów USB na płycie głównej i dodatkowych kart kontrolerów PCI USB, aby pomieścić kamery o wystarczającej przepustowości. Musiałbym jednoznacznie zidentyfikować port, a numer / identyfikator portu nie powinien się zmienić, jeśli na przykład urządzenie uruchomi się ponownie iz jakiegoś powodu kontrolery USB zostaną zainicjowane w innej kolejności. Czy to jest możliwe?
AKTUALIZACJA 2 W moich logach jednej z kamer widzę następujące informacje:
[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
Używając tego, wywołałem to polecenie:
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
I dostałem to:
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
Rzeczy, które różnią się między kamerami są DEVPATH
, ID_PATH
, ID_PATH_TAG
, PHYS
i (najbardziej interesujące) USEC_INITIALIZED
. Teraz pierwsze cztery elementy są prawdopodobnie związane z portem USB, ale ostatni USEC_INITIALIZED
wygląda jak jakiś numer seryjny. Nie mogę znaleźć żadnych informacji na temat tego, co faktycznie reprezentuje. Czy ktoś coś o tym wie? Pomyślałem, że może jest to czas w mikrosekundach, kiedy kamera się zainicjowała, ale kamera, która się zainicjowała po tym USEC_INITIALIZED=17919751
, a potem ta , a potem ta, USEC_INITIALIZED=25609278
więc wydaje się raczej przypadkowa. Spróbuję ponownie uruchomić system i zobaczę, ale muszę poczekać na dogodny czas, aby to zrobić.
A jeśli ktoś zastanawia się, dlaczego nie próbuję ponownie podłączyć aparatu i sprawdzić, czy to pozostanie takie samo. Odpowiedź brzmi: obsługuję ten komputer zdalnie i badam to wszystko, aby przygotować system do pełnej autonomii na wszelkie potencjalne zdarzenia w przyszłości. Co może na przykład obejmować odłączenie kamer od portów USB.