Problem mit wechselnder Device Nummer bei USB Gerät / eudev Regel

Forenfrage

New Member
Feb 14, 2023
2
1
3
Hallo liebe Forumsmitglieder,

ich betreibe Proxmox VE 7.2.7 auf einem Raspberry Pi 4. Darauf betreibe ich unter anderem einen unpreviligierten LXC Container mit Devuan 4 und Octoprint Server zur Steuerung meines 3D Druckers.
Dazu reiche ich in der Config des Containers zwei USB Ports für den Drucker und eine Webcam durch.
Damit das ganze funktioniert muss ich vorher noch die Zugriffsrechte der entsprechenden Dateien in /dev ändern.
Beispiel:
Code:
chmod 777 /dev/bus/usb/001/034
[CODE]
Das ganze funktioniert auch einwandfrei, bis ich den Drucker ein und wieder ausschalte, da sich dabei jedesmal die Device Nr. ändert.

Beispiel der lsusb Ausgabe: 
Bus 001 Device 034: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
nach Reconnect:
[CODE] CP210x UART Bridge

Nach jedem reconnect des Druckers muss ich also erneut per chmod die Zugriffsrechte neu vergeben und dann den Container neu starten.
Im vorgenannten Beispiel also:
 [CODE]chmod 777 /dev/bus/usb/001/034[CODE]

Hier noch meine Config:
[CODE]  GNU nano 5.4                                                              /etc/pve/lxc/103.conf                                                                       
arch: arm64
cores: 1
features: nesting=1
hostname: octoprinter
memory: 512
net0: name=eth0,bridge=vmbr0,firewall=1,gw=192.168.5.1,hwaddr=xx:xx:xx:xx:xx:xx,ip=192.168.x.x/24,type=veth
onboot: 1
ostype: devuan
rootfs: daten:103/vm-103-disk-0.raw,size=8G
swap: 512
unprivileged: 1
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb/001/ dev/bus/usb/001/ none bind,optional,create=file
lxc.mount.entry: /dev/bus/usb/001/ dev/bus/usb/001/ none bind,optional,create=file
lxc.cgroup.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
lxc.cgroup.devices.allow: c 81:* rwm
lxc.mount.entry: /dev/video0 dev/video0 none bind,optional,create=file

Meine Idee ist jetzt das ganze per eudev Regel (devuan verwendet eudev anstelle von systemd-udev) zu automatisieren sobald das USB Gerät reconnected.
Leider konnte ich in der udev Dokumentation keinen entsprechenden Befehl finden um die Zugriffsrechte eines USB Gerätes zu setzen.
Kann mir jemand ein Beispiel nennen, wie eine enstrprechende udev Regel aussehen sollte oder läßt sich das ganze eventuell auch mittels der Container.conf Datei lösen?
 
Hallo, das sollte eigentlich mit einer udev-Regel wie der folgenden funktionieren (siehe z.B. [1])
Code:
SUBSYSTEM=="usb", ATTRS{idVendor}=="deine_vendor_id", ATTRS{idProduct}=="deine_product_id", MODE:="0666"
wobei laut deinem lsusb-Output die Vendor ID wohl 10c4 und die Product ID ea60 sind.

Das heißt dann aber auch, dass alle User auf dem Host schreibend auf das Device zugreifen können.

Noch eine Frage: Funktioniert denn diese Zeile
Code:
lxc.mount.entry: /dev/bus/usb/001/ dev/bus/usb/001/ none bind,optional,create=file
bei dir? Bei mir muss ich create=file durch create=dir ersetzen, damit auch das ganze Verzeichnis /dev/bus/usb/001 durchgereicht wird.

[1] https://askubuntu.com/questions/15570/configure-udev-to-change-permissions-on-usb-hid-device
 
Sorry für die späte Rückmeldung!
Code:
SUBSYSTEM=="usb", ATTRS{idVendor}=="deine_vendor_id", ATTRS{idProduct}=="deine_product_id", MODE:="0666"
hat funktioniert. Sowohl für die Webcam als auch für den 3 Drucker. Musste für den Drucker noch folgendes hinzufügen:
Code:
  KERNEL=="ttyUSB0",SUBSYSTEM=="tty", MODE:="0666"

Noch eine Frage: Funktioniert denn diese Zeile
Code:
lxc.mount.entry: /dev/bus/usb/001/ dev/bus/usb/001/ none bind,optional,create=file
bei dir? Bei mir muss ich create=file durch create=dir ersetzen, damit auch das ganze Verzeichnis /dev/bus/usb/001 durchgereicht wird.
Hat bei mir mit
Code:
create=file
funktioniert.

Vielen Dank für die Hilfe!
 
  • Like
Reactions: fweber