USB Port durchreichen für Webcam

Sockelsieben

New member
Hallo,
ich versuche seit geraumer Zeit meine Webcams mit jeweils einer Docker Instanz zu verknüpfen.
Ich habe 3 3D-Docker laufen mit jeweils 1 Octoprint.
Nun möchte ich aber zu jedem Drucker eine Webcam anschließen.
Ich habe 3 Webcams die anscheinend alle die gleiche SN haben.
Darum können Sie anscheinend nicht immer eindeutig erkannt werden an welchen Port sie hängen.
wenn ich ls -l /dev/v4l/by-path eingebe kommt. :

Code:
dirk@Fujitsu:~$ ls -l /dev/v4l/by-path/
insgesamt 0
lrwxrwxrwx 1 root root 12 17. Sep 11:49 pci-0000:00:14.0-usb-0:3.2:1.0-video-index0 -> ../../video0
lrwxrwxrwx 1 root root 12 17. Sep 11:49 pci-0000:00:14.0-usb-0:3.2:1.0-video-index1 -> ../../video1
lrwxrwxrwx 1 root root 12 17. Sep 11:49 pci-0000:00:14.0-usb-0:3.4.1:1.0-video-index0 -> ../../video2
lrwxrwxrwx 1 root root 12 17. Sep 11:49 pci-0000:00:14.0-usb-0:3.4.1:1.0-video-index1 -> ../../video3
lrwxrwxrwx 1 root root 12 17. Sep 11:49 pci-0000:00:14.0-usb-0:3.4.3:1.0-video-index0 -> ../../video4
lrwxrwxrwx 1 root root 12 17. Sep 11:49 pci-0000:00:14.0-usb-0:3.4.3:1.0-video-index1 -> ../../video5

aber hinter den Verknüpfungen ändern sich die Geräte immer wenn ich den Rechner neu´starte.
Dann richte wieder alles neu ein und beim nächsten Neustart ist wieder alles durcheinander.
lsusb zeigt

Code:
dirk@Fujitsu:~$ lsusb
Bus 003 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 002 Device 003: ID 0bda:0129 Realtek Semiconductor Corp. RTS5129 Card Reader Controller
Bus 002 Device 010: ID 0c45:636b Microdia USB 2.0 Camera
Bus 002 Device 009: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 002 Device 008: ID 0c45:636b Microdia USB 2.0 Camera
Bus 002 Device 007: ID 045b:0209 Hitachi, Ltd
Bus 002 Device 006: ID 2c99:0002 Prusa Original Prusa i3 MK3
Bus 002 Device 005: ID 0c45:636b Microdia USB 2.0 Camera
Bus 002 Device 004: ID 1a86:7523 QinHeng Electronics CH340 serial converter
Bus 002 Device 002: ID 045b:0209 Hitachi, Ltd
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

dirk@Fujitsu:~$ lsusb -d 0c45:636b
Code:
Bus 002 Device 010: ID 0c45:636b Microdia USB 2.0 Camera
Bus 002 Device 008: ID 0c45:636b Microdia USB 2.0 Camera
Bus 002 Device 005: ID 0c45:636b Microdia USB 2.0 Camera

Ich benutze Octoprint als Docker.
Ich bekomme das mit den Webcams zwar hin, aber die ändern sich nach jedem Neustart.
--device /dev/v4l/by-id/...... usw.
Ich dachte so an /dev/bus/usb/002/010 an Docker .. wenn das geht.

hat jemand evtl. eine ID wie ich einen USB Port spezifisch in einen docker Port leiten kann, so das er sich nicht immer nach einem Neustart verändert ?
Vielen Dank
Gruß
Dirk
 
Zuletzt bearbeitet von einem Moderator:
Ich habe bisher selbst keine USB-Geräte mit einem Container verwendet, aber als Teil des Teams des offiziellen Docker Forums, weiss ich, dass es dort hin und wieder Fragen dazu gab, die am Ende immer mit "festnageln der Gerätename über udev rules" beantwortet wurden, bwz. wenn Geräte abgezogen und Neuverbunden wurden, da noch Nachbehandlung notwendig war:

Gerätename per udev rules pinnen: https://askubuntu.com/questions/715333/assign-webcam-to-a-specific-dev-video/715417#715417.

Zusätzlich könnte das hier noch relevant sein für den Fall, wenn die Webcam nicht permanent verbunden ist und neu erkannt werden muss, ohne den Container neu starten zu wollen: http://marc.merlins.org/perso/linux..._-for-fastboot_-adb_-without-using-privileged, für den



Rückfragen werde ich zu dem Thema leider nicht beantworten können.
 
Zuletzt bearbeitet:
Hallo und vielen Dank für deine Info bzw. Anregung.
klingt super und ich denke das es auch der richtige Ansatz ist.
Ich habe mich etliche Stunden mit den .rules rumgeschlagen, leider ohne Erfolg.
Die Port wechseln irgendwie immer nach einem Neustart des Rechners, so das die .rule dann nicht mehr passt und die Container werden dann nicht mehr gestartet, weil der Symlink ja nicht erstellt wurde.
Das die Ports sich verändern, finde ich übrigens sehr eigenartig.
Leider sind die Kameras zu 100% identisch, so das ich sie nicht mit anderen Attributen binden könnte.
Gruß
Dirk
 
Hallo Confluencer,

Cam 1
Code:
looking at device '/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.4/2-3.4.3':
    KERNEL=="2-3.4.3"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{authorized}=="1"
    ATTR{avoid_reset_quirk}=="0"
    ATTR{bConfigurationValue}=="1"
    ATTR{bDeviceClass}=="ef"
    ATTR{bDeviceProtocol}=="01"
    ATTR{bDeviceSubClass}=="02"
    ATTR{bMaxPacketSize0}=="64"
    ATTR{bMaxPower}=="500mA"
    ATTR{bNumConfigurations}=="1"
    ATTR{bNumInterfaces}==" 4"
    ATTR{bcdDevice}=="0100"
    ATTR{bmAttributes}=="80"
    ATTR{busnum}=="2"
    ATTR{configuration}==""
    ATTR{devnum}=="41"
    ATTR{devpath}=="3.4.3"
    ATTR{idProduct}=="636b"
    ATTR{idVendor}=="0c45"
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="Sonix Technology Co., Ltd."
    ATTR{maxchild}=="0"
    ATTR{power/active_duration}=="5536"
    ATTR{power/async}=="enabled"
    ATTR{power/autosuspend}=="2"
    ATTR{power/autosuspend_delay_ms}=="2000"
    ATTR{power/connected_duration}=="44930232"
    ATTR{power/control}=="auto"
    ATTR{power/level}=="auto"
    ATTR{power/persist}=="1"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="5069"
    ATTR{power/runtime_enabled}=="enabled"
    ATTR{power/runtime_status}=="suspended"
    ATTR{power/runtime_suspended_time}=="44924631"
    ATTR{power/runtime_usage}=="0"
    ATTR{product}=="USB 2.0 Camera"
    ATTR{quirks}=="0x0"
    ATTR{removable}=="unknown"
    ATTR{remove}=="(not readable)"
    ATTR{rx_lanes}=="1"
    ATTR{serial}=="SN0001"
    ATTR{speed}=="480"
    ATTR{tx_lanes}=="1"
    ATTR{urbnum}=="143"
    ATTR{version}==" 2.00"
Cam 2
Code:
looking at device '/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.2':
    KERNEL=="2-3.2"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{authorized}=="1"
    ATTR{avoid_reset_quirk}=="0"
    ATTR{bConfigurationValue}=="1"
    ATTR{bDeviceClass}=="ef"
    ATTR{bDeviceProtocol}=="01"
    ATTR{bDeviceSubClass}=="02"
    ATTR{bMaxPacketSize0}=="64"
    ATTR{bMaxPower}=="500mA"
    ATTR{bNumConfigurations}=="1"
    ATTR{bNumInterfaces}==" 4"
    ATTR{bcdDevice}=="0100"
    ATTR{bmAttributes}=="80"
    ATTR{busnum}=="2"
    ATTR{configuration}==""
    ATTR{devnum}=="8"
    ATTR{devpath}=="3.2"
    ATTR{idProduct}=="636b"
    ATTR{idVendor}=="0c45"
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="Sonix Technology Co., Ltd."
    ATTR{maxchild}=="0"
    ATTR{power/active_duration}=="9568"
    ATTR{power/async}=="enabled"
    ATTR{power/autosuspend}=="2"
    ATTR{power/autosuspend_delay_ms}=="2000"
    ATTR{power/connected_duration}=="160996"
    ATTR{power/control}=="auto"
    ATTR{power/level}=="auto"
    ATTR{power/persist}=="1"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="9168"
    ATTR{power/runtime_enabled}=="enabled"
    ATTR{power/runtime_status}=="suspended"
    ATTR{power/runtime_suspended_time}=="151294"
    ATTR{power/runtime_usage}=="0"
    ATTR{product}=="USB 2.0 Camera"
    ATTR{quirks}=="0x0"
    ATTR{removable}=="unknown"
    ATTR{remove}=="(not readable)"
    ATTR{rx_lanes}=="1"
    ATTR{serial}=="SN0001"
    ATTR{speed}=="480"
    ATTR{tx_lanes}=="1"
    ATTR{urbnum}=="149"
    ATTR{version}==" 2.00"

Cam 3

Code:
looking at device '/devices/pci0000:00/0000:00:14.0/usb2/2-3/2-3.1':
    KERNEL=="2-3.1"
    SUBSYSTEM=="usb"
    DRIVER=="usb"
    ATTR{authorized}=="1"
    ATTR{avoid_reset_quirk}=="0"
    ATTR{bConfigurationValue}=="1"
    ATTR{bDeviceClass}=="ef"
    ATTR{bDeviceProtocol}=="01"
    ATTR{bDeviceSubClass}=="02"
    ATTR{bMaxPacketSize0}=="64"
    ATTR{bMaxPower}=="500mA"
    ATTR{bNumConfigurations}=="1"
    ATTR{bNumInterfaces}==" 4"
    ATTR{bcdDevice}=="0100"
    ATTR{bmAttributes}=="80"
    ATTR{busnum}=="2"
    ATTR{configuration}==""
    ATTR{devnum}=="6"
    ATTR{devpath}=="3.1"
    ATTR{idProduct}=="636b"
    ATTR{idVendor}=="0c45"
    ATTR{ltm_capable}=="no"
    ATTR{manufacturer}=="Sonix Technology Co., Ltd."
    ATTR{maxchild}=="0"
    ATTR{power/active_duration}=="10232"
    ATTR{power/async}=="enabled"
    ATTR{power/autosuspend}=="2"
    ATTR{power/autosuspend_delay_ms}=="2000"
    ATTR{power/connected_duration}=="341336"
    ATTR{power/control}=="auto"
    ATTR{power/level}=="auto"
    ATTR{power/persist}=="1"
    ATTR{power/runtime_active_kids}=="0"
    ATTR{power/runtime_active_time}=="9833"
    ATTR{power/runtime_enabled}=="enabled"
    ATTR{power/runtime_status}=="suspended"
    ATTR{power/runtime_suspended_time}=="330971"
    ATTR{power/runtime_usage}=="0"
    ATTR{product}=="USB 2.0 Camera"
    ATTR{quirks}=="0x0"
    ATTR{removable}=="unknown"
    ATTR{remove}=="(not readable)"
    ATTR{rx_lanes}=="1"
    ATTR{serial}=="SN0001"
    ATTR{speed}=="480"
    ATTR{tx_lanes}=="1"
    ATTR{urbnum}=="149"
    ATTR{version}==" 2.00"

Ich habe es auch mit dem Attribut urbnum versucht. Selbst dieser Wert ändert sich nach einem Neustart des Rechners.

Die Cameras und die 3D Drucker hängen an einem USB3.0 Hub. Es ist aber auch egal. Selbst wenn ich die Camera direkt an den Rechner anschließe, ändern sich die Werte nach einem Neustart.
Das gleiche habe ich auch wenn ich einen anderen Hub nehme.

Gruß
Dirk
 
Hallo Barungar,

ja stimmt. Ich hatte mal 5 von diesen Cams gekauft und alle haben die gleiche SN , Vendor, ID. echt blöd :)

Gruß
Dirk
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
4.543
Beiträge
46.525
Mitglieder
4.179
Neuestes Mitglied
CColli
Zurück
Oben