Zuverlässige Zuordnung identischer USB-Geräte

Detlef Paschke

Renowned Member
Feb 12, 2019
160
27
68
Cottbus
helpdesk.schabau.eu
Hallo,
ich habe nach einem Kernelupdate gerade eine etwas unschöne Beobachtung bei Proxmox 8.4.14 gemacht, welche wohl auch auf anderen Proxmox-Versionen so gegeben sein wird. Es geht um ein Problem beim durchreichen von USB-Geräten von dem ich bisher verschont wurde, weil ich in der Regel die Hersteller/Geräte ID (Vendor/Device ID) für die Zuordnung verwende.
Nun habe ich ein USB-Gerät (Sonoff Zigbee 3.0 USB Dongle Plus V2 (10c4:ea60)) zwei mal, von welchen jeweils eines zu einer VM und das andere zu einer anderen VM durchgereicht werden muss. Auch wenn es baugleiche Geräte sind, dürfen sie nicht vertauscht werden, da sie in der VM exakt identifiziert werden.

Weil es sich um identische Geräte handelt, habe ich in der Hardwareeinstellungen der VMs, für diese Geräte den jeweiligen USB-Port verwendet. Nach einem Kernelupdate und dem anschließenden Neustart von Proxmox wurde aus den bisherigen USB-Ports 1-1.1 und 1-1.2 für diese Geräte aber die Ports 2-1.1 und 2.1.2. Die Geräte wurden somit nicht mehr in den VMs zur Verfügung gestellt. Nachdem mir das aufgefallen ist, habe ich zunächst die veränderten USB-Ports neu angegeben, dann aber testweise einen weiteren Neustart von Proxmox durchgeführt. Und wieder waren die USB-Ports nicht an ihrer (neuen) Position sondern wieder an der ursprünglichen.
Das alte udev-Problem schlägt hier also mit aller Macht durch.

Wie könnte ich diese identischen USB-Geräte zuverlässig zuordnen?
Bei Resource Mapping sehe ich auch keine alternative, denn die Zuordnung ist dort ja auch nur nach Port oder Vendor/Device ID gegeben.

Viele Grüße
Detlef Paschke
 
was sagt den lsusb -vvv zu deinem Device, haben die vielleicht unterschiedliche iSerial,
ich hab z.B. drei USV die ich damit eindeutig zuweise bzw per udev bekomme die dann neue Name das ich weiß welche USV welches Gerät ist
zum besser auslesen
 
du könntest dann in /etc/udev/rules.d eine Datei erstellen sonoff.rules mit folgendem Inhalt

Code:
# Sonoff1
KERNEL=="hiddev*", ATTRS{manufacturer}=="manufacturer", ATTRS{serial}=="iSeriel  ", OWNER="root", SYMLINK+="usb/sonoff1"
# Sonoff2
KERNEL=="hiddev*", ATTRS{manufacturer}=="manufacturer", ATTRS{serial}=="iSeriel  ", OWNER="root", SYMLINK+="usb/sonoff2"

manufacturer und iSeriel natürlich ersetzten
danach systemctl restart systemd-udevd

dann sollte unter /dev/usb/ deine Somoff als sonoff1 und sonoff2 auftauchen die du dann im der vm zuweisen kannst so sind es dann immer die richtigen Geräte

bei mir unter /dev/usb sieht es so aus z.B.

Code:
lrwxrwxrwx  1 root root      7  2. Nov 15:30 ups-dl-180 -> hiddev3
lrwxrwxrwx  1 root root      7  2. Nov 15:30 ups-pc -> hiddev1
lrwxrwxrwx  1 root root      7  2. Nov 15:30 ups-pve -> hiddev2

mein Eintrag in meiner ups.rules sieht so aus

Code:
# Server PVE-SRV

KERNEL=="hiddev*", ATTRS{manufacturer}=="American Power Conversion", ATTRS{serial}=="X4546O21877  ", OWNER="root", SYMLINK+="usb/ups-pve"

ah ne mist, unter pve selber sieht man ja leider die Namen nicht der geht ja nur über den Port direkt wenn man ein USB Gerät hinzufügen möchte
aber schau mal hier ob das hilft
USB_Physical_Port_Mapping

die Ports sollten aber auch nach einem Reboot gleich bleiben eigentlich
 
Last edited:
An udev als Möglichkeit habe ich auch gedacht, abgesehen davon, dass ich udev-rules zutiefst verabscheue.
Udev hat seit Anbeginn mehr Ärger als Freude gemacht und die gemachten Regeln hat man ohnehin vergessen bevor man ein defektes Gerät tauschen muss.