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.
No Comments