Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Probleme mit LXC Plugin und USB durchreichen / passthrough

Featured Replies

Hallo. Ich habe die Tage ein wenig mit dem LXC Plugin herumprobiert und bin auf ein Problem gestoßen wo ich nicht weiter komme. 

Mein Plan ist später mal meine Hausautomation komplett in einen LXC Container umzulagern. Um aber erstmal zu wissen wie so ein LXC Container Funktioniert wollte ich meinen Repetier Server aus der VM in so einen Container umlagern. 

 

Dazu habe ich einen Debian Container erstellt und den Repetier Server installiert. Das hat soweit wunderbar geklappt. Jetzt müssen nurnoch meine Drucker im Container ankommen. Und da komme ich gerade nicht weiter. 

 

Meine 3 Drucker hängen in meinem Büro an einem RaspberryPi der als USBIP Host dient und ich reiche die Drucker dann mithilfe des USB Manager Plugins an meine VM weiter. 

Und das wollte ich jetzt mit dem Container genau so machen. 

 

Eigentlich ist das ja ganz einfach: 

meine 3 Drucker sind unter: /dev/bus/usb/005/006 /dev/bus/usb/005/007 und /dev/bus/usb/005/008 verfügbar. Und auch als ttyUSB1 ttyUSB2 und ttyUSB3

 

der Befahl "ls -l /dev/bus/usb/005" sagt mit das ich die gerätekennung "189" erlauben muss. 

 

lxc.cgroup.devices.allow = c 189:* rwm

 

und dann muss ich ja nurnoch die 3 Geräte durchreichen
 

lxc.mount.entry = /dev/bus/usb/005/006 dev/bus/usb/005/006 none bind,optional,create=file
lxc.mount.entry = /dev/bus/usb/005/007 dev/bus/usb/005/007 none bind,optional,create=file
lxc.mount.entry = /dev/bus/usb/005/008 dev/bus/usb/005/008 none bind,optional,create=file

 

aber leider werden die Drucker nicht erkannt. 

 

Ich habe auch mal testweise mal noch ttyUSB 1-3 durchgereicht. Das hat leider auch nix gebracht. 

lxc.cgroup.devices.allow = c 188:* rwm
lxc.mount.entry = /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file
lxc.mount.entry = /dev/ttyUSB2 dev/ttyUSB2 none bind,optional,create=file
lxc.mount.entry = /dev/ttyUSB3 dev/ttyUSB3 none bind,optional,create=file

 

Dann dachte ich doch das es eventuell an den rechten liegt. Deswegen habe ich noch mit dem Befehl "chmod o+rw /dev/ttyUSB1" die Rechte geändert. aber auch das brachte keinen erfolg. 

 

Da ich in meiner Repetier Server VM Die Drucker per "dev/serial/by-path/" anspreche habe ich auch das mal probiert. Aber auch das hat nicht Funktioniert.

lxc.cgroup.devices.allow = c 188:* rwm
lxc.mount.entry = /dev/serial/by-path/platform-vhci_hcd.0-usb-0:1:1.0-port0 dev/serial/by-path/pci-0000:00:07.1-usb-0:1:1.0-port0 none bind,optional,create=file
lxc.mount.entry = /dev/serial/by-path/platform-vhci_hcd.0-usb-0:2:1.0-port0 dev/serial/by-path/pci-0000:00:07.1-usb-0:2:1.0-port0 none bind,optional,create=file
lxc.mount.entry = /dev/serial/by-path/platform-vhci_hcd.0-usb-0:3:1.0-port0 dev/serial/by-path/pci-0000:00:07.1-usb-0:3:1.0-port0 none bind,optional,create=file

 

 

Ich habe diese 3 Anleitungen gefunden die ich probiert habe. Aber alle 3 brachten keinen Erfolg. 

https://forums.unraid.net/topic/123935-plugin-lxc-plugin/
https://homematic-forum.de/forum/viewtopic.php?t=48361
https://coldcorner.de/2018/07/12/proxmox-usb-passthrough-fuer-lxc-container-z-wave-uzb1/

 

Kann das eventuell sein das man USBIP geräte nicht an einen LXC Container durchreichen kann ? 

 

config tvserver-v2-diagnostics-20231217-2102.zip

Solved by ich777

  • Solution
15 minutes ago, FlorianHE said:
lxc.cgroup.devices.allow = c 189:* rwm

Unraid nutzt cgroup v2 nicht cgroup v1 also müsste es heißen (im support Thread ist das jetzt mittlerweile veraltet da früher cgroupv1 verwendet wurde und mit der umstellung auf 6.11.0 dann cgroupv2 als Standard gesetzt wurde) :

lxc.cgroup2.devices.allow = ...

 

Hab die posts im support thread mal angepasst.

 

Bei deinen Beispielen musst du sicherstellen wenn ud den container normal startest das auch der Pfad vorhanden ist wo deine mounts hinzeigen weil nur die Datei selbst erstellt wird.

 

Du kannst deinen container auch im "Vordergrund" von einem Unraid Terminal aus starten und dann siehst was nicht passt bzw. bekommst du eine Fehlermeldung warum er nicht startet:

lxc-start -F <CONTAINERNAME>

 

 

Beim mir hier läuft zB Homeassistant komplett im LXC und bin wesentlich zufriedener als mit den Docker container die verfügbar sind, der Zigbee Stick bei mir hängt an einem RockPi E auf dem Zigbee2MQTT läuft und das wird wiederum in Homeassistant eingebunden.

  • Author

 

4 hours ago, ich777 said:
lxc.cgroup2.devices.allow = ...

Vielen Dank. Das war das Problem. 

 

komischerweise hat das durchreichen des pfades "/dev/bus/usb/005........" nicht funtioniert.

 

Dafür habe 2 Wege gefunden wie ich meine Drucker zum laufen bekommen habe. Ich poste gleich mal die Vorgehensweise. Bevor ichs wieder vergesse :)

 

VARIANTE 1:

Schritt 1: USB Gerät herausfinden: 

 - Das geht am einfachsten über den USB Manager: 

USB-Manager.thumb.PNG.e74bf395bf03a6f33e893d3bc659c3d8.PNG

klickt man auf das Blattsymbol vom USB Gerät öffnet sich eine Ausgabe in der man das USB Gerät ablesen kann 

Ausgabe.PNG.0d01d3c77f36a66e68ee755bc928477e.PNG

 

Schritt 2: USB-Gerät rechte ändern: 

chmod o+rw /dev/ttyUSB1

 

Schritt 3: ID herausfinden: 

z.b. für ttyUSB1:

ls -l /dev/ttyUSB1

1421678900_gertenummer.PNG.786c70c6458df94c1b3c9d8289ef1399.PNG

 

in meinem Fall ist das dann die "188"

 

Schritt 4: Config vom LXC Container anpassen:

#USB configuration
lxc.cgroup2.devices.allow = c 188:* rwm
lxc.mount.entry = /dev/ttyUSB1 dev/ttyUSB1 none bind,optional,create=file

 

VARIANTE 2:

- Da immerwieder die zuordnung der Drucker anders ist (Drucker 1 ist mal ttyUSB1 und dann mal ttyUSB2) habe ich einen 2. Weg versucht der die Drucker Eindeutig zuordnet indem eigene Devices erzeugt werden über eine udev Regel

 

Schritt 1: USB Gerät herausfinden: Genau so wie bei Variante 1

Schritt 2: Filter heraussuchen: 

- für die Regel müssen Filter definiert werden dazu muss in der Konsole des hosts folgender Befehl eingegeben werden:

udevadm info --name=/dev/ttyUSB1 --attribute-walk

 

in der Ausgabe müssen jetzt Filter gesucht werden die die Geräte eindeutig idendifizieren. z.b. diese:

ATTRS{idVendor}=="1b1f" 
ATTRS{idProduct}=="c020" 
ATTRS{serial}=="3014***************"

 

bei mir war das aber leider so das 2 Drucker genau die gleiche "idProduct" und "serial" hatte und somit auch nicht eindeutig idendifiziert werden konnte. Deswegen musste ich anstatt "idProduct" "devpath" verwenden. Da ich die Drucker an meinem Raspi USBIP Host nie umstecke hoffe ich mal das das immer gleich bleibt. 

 

Schritt 3: udev Regel erstellen :

-dazu muss auf dem Host unter /etc/udev/rules.d/  die Regeldatei angelegt werden. z.b. so: 

nano /etc/udev/rules.d/99-usb-serial.rules

 

jetzt müssen in der Datei die Regeln eingetragen werden: 

 

#USB1
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{devpath}=="1", ATTRS{serial}=="0001", SYMLINK+="print-usb1"

#USB2
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{devpath}=="2", ATTRS{serial}=="5282b3e8f3b6e7119058b350d4b43ea0", SYMLINK+="print-usb2"

#USB3
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{devpath}=="3", ATTRS{serial}=="0001", SYMLINK+="print-usb3"

 

Schritt 4: Regeln Aktivieren:

mit diesem Befehl werden die neuen Regeln angewendet.

udevadm trigger

 

jetzt sollten die neuen USB Geräte auftauchen. Das Anpassen der Rechte ist nicht erforderlich

linkNeu.PNG.01e3b6d47e7a1c1eb57e3d475f833dfc.PNG

 

 Schritt 5: ID herausfinden: 

hier muss die gleiche ID herausgefunden werden wie bei Variante 1 z.b. für ttyUSB1:

ls -l /dev/ttyUSB1

1421678900_gertenummer.PNG.786c70c6458df94c1b3c9d8289ef1399.PNG

 

Schritt 6: Config vom LXC Container anpassen:

#USB configuration
lxc.cgroup2.devices.allow = c 188:* rwm
lxc.mount.entry = /dev/print-usb1 dev/ttyUSB1 none bind,optional,create=file

 

 

Variante 2 hat mir geholfen die 3 Drucker immer gleich zu zuordnen auch wenn sie in unterschiedlicher Reihenfolge per USBIP eingebunden werden. 

Was ich noch nicht genau weis ob die Regel Datei vorhanden bleibt wenn der Unraid Server neu gestartet wurde. 

 

Kleiner Hinweis: Änderungen in der config werden nur wirksam wenn der Container gestoppt wird und dann wieder gestartet. Ein reiner neustart reicht nicht aus.

5 hours ago, FlorianHE said:

Variante 2 hat mir geholfen die 3 Drucker immer gleich zu zuordnen auch wenn sie in unterschiedlicher Reihenfolge per USBIP eingebunden werden. 

Was ich noch nicht genau weis ob die Regel Datei vorhanden bleibt wenn der Unraid Server neu gestartet wurde. 

Sorry aber ist das nicht over engineered? :D

Warum installierst du dir nicht im LXC einfach USBIP und bindest dann dort die Geräte ein, das wäre doch viel, viel, viel einfacher...

 

5 hours ago, FlorianHE said:

Kleiner Hinweis: Änderungen in der config werden nur wirksam wenn der Container gestoppt wird und dann wieder gestartet. Ein reiner neustart reicht nicht aus.

Du meinst über die WebGUI? Eigentlich sollte das keinen Unterschied machen weil die WebGUI macht einfach ein lxc-stop und dann ein lxc-start, hab ich aber ehrlich gesagt noch nie probiert.

  • Author
1 hour ago, ich777 said:

Warum installierst du dir nicht im LXC einfach USBIP und bindest dann dort die Geräte ein, das wäre doch viel, viel, viel einfacher...

 

 

Das hatte ich auch versucht bevor ich diesen request gestartet habe. Leider hat das nicht funktioniert.

Wenn man das Kernel Modul laden möchte mit 

modprobe vhci-hcd

modprobe vhci-hcd

 kommt der Fehler das modprobe nicht gefunden wird. 

 

Das abfragen hat zwar funktioiert: 

usbip list -r mein-rechner

 

aber wenn ich dann mit: 

usbip attach -r mein-rechner -b 1-1

 ein USB Gerät einbinden möchte kommt ein Fehler. 

Ich vermute mal weil das Kernel Modul nicht geladen ist. 

 

Ich erkläre mir das so das ja der LXC Container direkt auf den Kernel vom Unraid zugreift und deswegen ja kein Kernel modul im LXC Container geladen werden kann.  

1 minute ago, FlorianHE said:

modprobe vhci-hcd

Weil es am Host geladen werden muss und geladen sein muss.

 

1 minute ago, FlorianHE said:

 ein USB Gerät einbinden möchte kommt ein Fehler. 

Welcher? Ich habe mich mit USBIP in LXC noch nicht beschäftigt und mir fehlt momentan auch die Zeit dazu muss ich zugeben.

  • Author

Da ich meine Drucker und das Raspberry gerade aus geschaltet habe musste ich improvisieren und hab von meinem 2. unriad server mal das Bluetooth interface geteilt. 

Unter Unraid konnte ich das gerät einbinden. aber im LXC Container nicht. Wie auf dem Bild zu erkennen ist habe ich das vhci-hcd modul im Host aktiviert. 

 

fehler.thumb.PNG.f9303d0042de068c4911fbeb7dbe1218.PNG

  • Author

Ich habe mal noch eine andere Frage. Kann man eigentlich irgendwie auch die Icons der Container ändern. Oder gibt es irgend eine hilfreiche seite wo man lesen kann was man mit der config alles so anstellen kann ? 

42 minutes ago, FlorianHE said:

Kann man eigentlich irgendwie auch die Icons der Container ändern.

 

Du meinst dieses Icon URL Feld sichbar im Advanced View:

 

image.thumb.png.ada75ed1c41ee2a0c302751f165d1dcd.png

 

  • Author
17 hours ago, hawihoney said:

Du meinst dieses Icon URL Feld sichbar im Advanced View:

 

Das geht ja bei Docker so . 

 

In diesem Post hab ich die Lösung gefunden. 

 

 

Edited by FlorianHE

18 hours ago, FlorianHE said:

Ich habe mal noch eine andere Frage.

Du müsstest mich bitte immer quoten, ich sehe nicht immer überall rein und folge allen Threads sonst würde ich kein Leben mehr haben.

 

Bin aber froh das du es gefunden hast... :)

2 hours ago, FlorianHE said:

Das geht ja bei Docker so . 

 

In diesem Post hab ich die Lösung gefunden. 

 

Es ging doch um Docker Container, oder?

 

image.png.61afb3c969e05133b3973386f087539d.png

 

Edited by hawihoney

18 hours ago, hawihoney said:

Es ging doch um Docker Container, oder?

Nein ich glaube um LXC und dort ist es auch möglich.

  • Author

Ja es ging um Lxc 

  • Author
On 12/19/2023 at 10:01 AM, ich777 said:

Du müsstest mich bitte immer quoten, ich sehe nicht immer überall rein und folge allen Threads sonst würde ich kein Leben mehr haben.

 

Bin aber froh das du es gefunden hast... :)

 

Ich habe mal noch eine Frage. 

Ich hatte eigentlich vor den Backup Ordner der LXC Container mit Syncthing zwischen 2 Unraid Servern Snchron zu halten. So dass meine Hausautomations Backups zur not automatisch gleich auf dem 2. Server verfügbar sind,

 

Jetzt ist mir aber aufgefallen das die backups auf dem 2. Server zwar angelegt werden aber in der UI im backup reiter nicht auftauchen. Das gleiche auch umgekehrt.

Das gleiche passiert auch wenn ich den einen angelgten Container lösche und die liste leer ist. Dann verschwindet der Backup tab. Ein Restore ist dann nicht möglich.

 

Wie bekomme ich den restore jetzt wieder hin? 

Edited by FlorianHE

6 hours ago, FlorianHE said:

Jetzt ist mir aber aufgefallen das die backups auf dem 2. Server zwar angelegt werden aber in der UI im backup reiter nicht auftauchen.

Hast du denn einen gleichnamigen Container auf dem Backup system? Wenn ja, sind die Pfade auch richtig zu den Backups angegeben wo du hinsynchronisierst?

 

6 hours ago, FlorianHE said:

Das gleiche passiert auch wenn ich den einen angelgten Container lösche und die liste leer ist. Dann verschwindet der Backup tab.

Das ist auch so gewollt, ein Backup ist ein Backup vom Container und kein Snapshot.

 

6 hours ago, FlorianHE said:

Ein Restore ist dann nicht möglich.

Das stimmt so nicht, mach ein Unraid Terminal auf und dann gib mal:

lxc-autobackup

ein, das ist eine Funktion die ich geschrieben habe und nur auf Unraid verfügbar ist. Diese Funktion ermöglicht es dir automatisch Backups zu erstellen und auch wiederherzustellen.

 

Die Anzeige in der GUI ist nur bereits für bestehende Container gedacht von denen du Backups erstellst, selbst wenn du einen Container löschen solltest, das Backup bleibt bestehen und wird nicht gelöscht (weil es eben ein Backup ist) das du dann vom Terminal wiederherstellen kannst.

Wenn du die Anzeige im GUI willst legst dir einfach einen leeren, gleichnamigen Container auf dem Backup system an und syncst dann dort in das Verzeichnis das du dort angegeben hast.

grafik.thumb.png.6d0b6d48a45e3146137de3ce7a9d5c16.png

(bitte beachte hier die Usage und ob du die global config verwendest oder nicht)

  • Author

 

3 hours ago, ich777 said:
lxc-autobackup

Okay. Das hat Funktioniert. Konnte meine gesyncten Backups auf dem Zweitsystem wiederherstellen. Ich hab mir schon fast gedacht das man irgendwie über die Konsole den Restore starten kann. Man muss halt nur wissen was man eingeben muss ;)

Ich hatte auch von dem autobackup script im Forum gelesen. Bin aber davon ausgegangen das das veraltet ist bzw durch die Backup Funktion der GUI abgelöst wurde. 

 

Vielen Dank. 

1 hour ago, FlorianHE said:

Bin aber davon ausgegangen das das veraltet ist bzw durch die Backup Funktion der GUI abgelöst wurde.

Nein, die GUI nutzt sogar diese Funktion im Hintergrund. ;)

  • 2 years later...

Kurze frage ich weiss nicht was ich falsch mache. Grundsätzlich funktioniert das durchreichen ohne Probleme aber nach jedem Neustart von Unraid ist die Datei /"etc/udev/rules.d/99-usb-serial.rules" nicht mehr vorhanden und ich muss Sie jedes mal nach dem Neustart neu anlegen und mit udevadm trigger ausführen....

gibt es einen weg das diese Datei nach dem Neustart von unraid persistent bleibt?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.