Skip to main content

Auf Proxmox USB durchschleifen für FHEM

Proxmox: USB Passthrough an LXC Container 

Für diesen Vorgang ist ein Skript erstellt das im Normalfall 2 Minuten nach einem Neustart des Servers aktiviert werden sollte. Nach Möglichkeit demnächst mal überprüfen

Zusätzlich zum Proxmox und Proxmox: LXC Tutorial möchte ich heute gerne zeigen, wie man einen USB Stick zu einem Container durchreicht. Ich habe so meinen UZB1 Z-Wave USB Stick zu einer LXC mit Ubuntu und FHEM durchgereicht. Analog dazu kannst du jeden CUL oder andere USB-Geräte durchreichen.

Inhalt

Vorbereitungen in Proxmox

Als erster wählen wir uns über SSH in unseren Proxmox Server ein.

ssh root@192.168.178.XX

Nun stoppen wir den LXC Container, an den das USB-Gerät durchgereicht werden soll

pct stop 109

Die Nummer enspricht deiner VM / LXC – ID in Proxmox. Diese findest du im Proxmox Webinterface heraus

Mit folgendem Befehl kannst du nun die verbundenen USB-Geräte auflisten. Es empfiehlt sich zuerst eine Auflistung ohne eingesteckten USB-Stick anzufertigen und dann nochmal, nachdem der Stick eingsteckt wurde

lsusb

Wie du auf dem folgendem Screenshot erkennen kannst, heißt mein UZB1 Stick „Sigma Designs, Inc. und hat die BUS Nummer 1 und Device Nummer 18. Du hast vermutlich eine andere Nummer -> notiere dir diese.


Suche nach einem Device mit Future im Namen für Eltako 

Mittels folgendem Befehl kannst du nun den DeviceTree anzeigen. Wichtig: Trage hier deine BUS und DEVICE Nummer ein

ls -l /dev/bus/usb/001/018

Es werden erneut zwei Zahlen ausgegeben, wobei nur die erste für uns relevant ist

crw-rw-r– 1 root root 189, 17 Jul 12 18:35 /dev/bus/usb/001/018

Die Nummer 189 notierst du dir ebenfalls. Als nächstes müssen wir die Konfigurationsdatei für den LXC Container finden und editieren. Höchstwahrscheinlich findest du deine Konfigurationsdatei unter /etc/pve/nodes/pve/lxc – Schaue dazu am besten noch im Proxmox Webinterface welche ID dein Container hat.

Mit folgendem Befehl wechselst du in den Ordner mit den Konfigurationsdateien

cd /etc/pve/nodes/pve/lxc

mit „ls“ kannst du dir dann den Ordnerinhalt anzeigen lassen

nano 113.conf

Hier fügen wir folgende Zeilen am Ende der Datei ein

lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb/001/018 dev/bus/usb/001/018 none bind,optional,create=file

Trage hier entsprechend die BUS und Devicenummer, sowie die Nummer bei der Ausgabe von ls -l /dev/bus ….. ein

In meinem Fall mit dem UZB1 hat das aber noch nicht ausgereicht. Es wird ein Gerät mit dem Namen ttyACM0 angelegt. Dieses müssen wir ebenfalls durchreichen

Führe folgenden Befehl aus und notiere dir wieder die erste Nummer

ls -l /dev/ttyUSB0

Dann bearbeiten wir nochmal die LXC Konfig-Datei:

sudo nano 109.conf

Und fügen am Ende nochmal zwei Zeilen hinzu

lxc.cgroup.devices.allow: c 166:* rwm
lxc.mount.entry: /dev/ttyACM0 dev/ttyACM0 none bind,optional,create=file

Am Ende sieht die Konfig-Datei in etwas so aus:

Dann statten wir das Gerät ttyACM0 noch mit den nötigen Rechten aus

chmod o+rw /dev/ttyUSB0

Zuletzt starten wir den LXC Container erneut und können im nächsten Punkt überprüfen, ob alles soweit geklappt hat

pct start 113

Überprüfung im Container

Verbinde dich mittels SSH mit deinem LXC

ssh NUTZERNAME@IP-ADRESSE

mit „lsusb“ kannst du dir auch hier die USB-Geräte anzeigen lassen. Ob das Gerät ttyACM0 angelegt wurde erfährst du unter den Devices:

Shell Screenshot

cd /dev
ls

Fazit

Zugegeben, ein wenig kompliziert ist es leider schon, allerdings funktioniert es wirklich einwandfrei. Wenn du dieses Tutorial auch bei anderen Geräte erfolgreich getestet hast würde ich mich über einen kurzen Kommentar freuen und könnte dies diesem Artikel hinzufügen.