USB-Passthrough, die x-te (Passthrough von USB HID Device)

marcel151

New Member
Aug 5, 2025
4
0
1
Hallo zusammen, da ein knapp 10 Jahre alter Pi hier so langsam den Geist aufzugeben scheint, möchte einen schon länger geplanten Umzug einer Hausautomation auf Proxmox vornehmen.

Konkret geht es um eine FHEM installation, an der ein HM-CFG-USB hängt, der einige Homematic-Komponenten steuert (ich weiß, alles alt). Der FHEM Container (installiert über Helper-Script) ist als privileged Container installiert uns sollte daher auch alle USB-Komponenten bereits durchgereicht haben, oder? Der HM-CFG-USB wird als HID device eingebunden, wird auch vom Container erkannt:
Code:
[    1.703758] usb 1-2: new full-speed USB device number 2 using xhci_hcd
[    1.831488] usb 1-2: New USB device found, idVendor=1b1f, idProduct=c00f, bcdDevice= 9.67
[    1.831500] usb 1-2: New USB device strings: Mfr=4, Product=14, SerialNumber=36
[    1.831503] usb 1-2: Product: HM-CFG-USB
[    1.831506] usb 1-2: Manufacturer: eQ-3
[...]
[    2.327777] usbcore: registered new interface driver usbhid
[    2.327784] usbhid: USB HID core driver
[    2.329485] hid-generic 0003:1B1F:C00F.0001: hiddev0,hidraw0: USB HID v1.10 Device [eQ-3 HM-CFG-USB] on usb-0000:00:14.0-2/input0

Leider funktioniert der Stick aber im Container mit hmland nicht, er wird nicht gefunden. Als Workaround wurde hmland aktuell auf dem Host eingerichtet. Da das über IP kommuniziert ist die Funktion so also gegeben. Ist aber keine schöne Lösung. Der Stick funktioniert grundsätzlich also. Jemand eine Idee warum das ganze nicht geht? Liegt es am USB HID bzw. muss dort noch etwas eingerichtet werden? Ein über Serial eingebundener Jeelink (für Temperatursensoren) funktioniert tadellos und ohne weiteres zutun.
 
Last edited:
ist als privileged Container installiert uns sollte daher auch alle USB-Komponenten bereits durchgereicht haben, oder?
Das würde ich beim Ersteller des Scriptes nachfragen.

Ein USB-Gerät wird normalerweise über Ressourcen in den Container gemountet:

ress.png

Das ist zB. ein Zigbee-Stick in IOBroker
 
Last edited:
Bevor ich nachfrage schaue ich mal nach:
https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/ct/fhem.sh
bzw.
https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func
Code:
# USB passthrough
lxc.cgroup2.devices.allow: a
lxc.cap.drop:
lxc.cgroup2.devices.allow: c 188:* rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/serial/by-id  dev/serial/by-id  none bind,optional,create=dir
lxc.mount.entry: /dev/ttyUSB0       dev/ttyUSB0       none bind,optional,create=file
lxc.mount.entry: /dev/ttyUSB1       dev/ttyUSB1       none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM0       dev/ttyACM0       none bind,optional,create=file
lxc.mount.entry: /dev/ttyACM1       dev/ttyACM1       none bind,optional,create=file

Das wird für beim Einrichten als privileged Container gemacht.
 
Last edited:
Diese Einträge finde ich nicht ungefährlich.
Ich entscheide lieber selber welchen USB-Port welcher LXC bekommt.

Mehr als ein:

Code:
dev0: /dev/ttyXXXx,mode=0xxx

ist einfach nicht notwendig. Und kann auch easy im GUI eingestellt werden.
 
Völlig verständlich. Ist aber in der Hinsicht auch nicht 100%ig, da sich die tty* auch ändern können nach Neustart von Proxmox und man dan möglicherweise das falsche Gerät durchreicht.
Aber wir weichen ab. Hilft mir bei meinem Problem nämlich leider nicht weiter.
 
Ich kenne die Scripte nicht und sehe sie mir auch nicht an.

Wie ist der Pfad deines Gerätes im Ordner /dev/
 
Ich kenne die Scripte nicht und sehe sie mir auch nicht an.
Das war auf Deine Aussage bezogen mit "dev0: /dev/ttyXXXx,mode=0xxx". Die /dev/ttyXXXx können sich ändern wenn man mehrere Geräte angeschlossen hat.
Wie ist der Pfad deines Gerätes im Ordner /dev/
Das ist genau mein Problem. Wie bekomme ich das raus? Ich sehe für den Stick nichts offensichtlich angelegtes unter /dev/.

/dev/ttyUSB0 ist der Jeelink.

Habe den Container jetzt nochmal neu als unprivileged angelegt, damit es sauber ist. Der Jeelink lässt sich per /dev/serial/by-id einbinden.

Beim HM-CFG-USB habe ich das jetzt nur per "/dev/bus/usb/001/002" geschafft. Damit funktioniert es nun. Ich muss dabei natürlich aufpassen, dass der Stick immer im gleichen USB-Port bleibt. Damit funktioniert es aber endlich.