Proxmox LXC Container: Durchreichen eines USB-Gerätes (Passthrough) klappt nicht

Begonnen von Gunther, 14 Januar 2018, 19:47:02

Vorheriges Thema - Nächstes Thema

Aleks-83

Hi, und vielen Dank für die super Anleitung!

Ich hänge leider bei dem Punkt nach dem Reboot und der SymLink Erstellung.

Hier meine Ausgaben:

lsusb
Bus 001 Device 002: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC



ls -la /dev/ttyUSB*
crw-rw---- 1 root dialout 188, 0 Mar 21 07:01 /dev/ttyUSB0



udevadm info -a -n /dev/ttyUSB0 | grep '{serial}' | head -n1
ATTRS{serial}=="AXXXXX"


Eintrag in "/etc/udev/rules.d./99-usb-serial.rules". (Diese Datei, und den Ordner rules.d gab es übrigens bei mir nicht und habe ich per mkdir erstellt.)
SUBSYSTEM=="tty", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="6001", ATTRS{serial}=="AXXXX", SYMLINK+="USBxyz"

Hier mein Problem:
root@pve:~# ls -la /dev/USBxyz
ls: cannot access '/dev/USBxyz': No such file or directory



EDIT:
Ich habe noch ein anderes Tut gefunden, mit dem habe ich es nun hinbekommen.
Wenn auch nur mit /dev/TTyUSB0. nicht mit dem Namen...

Aleks-83

Ich muss mich korrigieren.
Es hat nur bis zu einem Neustart gehalten.

jetzt bekomme ich immer Zugriffsfehler auf das Gerät.

Das Device was ich durchschleifen will hat folgende Attribute:
root@OSCam ~ > ls -la /dev/ttyUSB*
crw-rw---- 1 nobody nogroup 188, 0 Mar 26 18:53 /dev/ttyUSB0


Das nobody:nogroup wundert mich.
Ich vermute dass ich deswegen nicht gescheit darauf zugreifen kann.

Wenn ich das Gerät mit root übernehmen will, bekomme ich folgende Ausgabe:
root@OSCam ~ > sudo chown root:root /dev/ttyUSB0
chown: changing ownership of '/dev/ttyUSB0': Operation not permitted


Das soll angeblich an irgend einem Flag liegen, was man mittels
chattr -i /dev/ttyUSB0 entfernen kann.

Dann bekomme ich aber dieses zu lesen:
root@OSCam ~ > sudo chattr -i /dev/ttyUSB0
chattr: Operation not supported while reading flags on /dev/ttyUSB0


Irgendwie drehe ich mich im Kreis...

Ranseyer

Gib  dem Device als erstes doch einfach mal 777 Rechte. Das kann man später immer noch ordentlich machen. (chmod 777 /dev/xx)
FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

Aleks-83

chmod und chown wurden immer mit "permission denied" abgelehnt. (obwohl als root ausgeführt)

Bin gerade dabei das Debian als VM aufzusetzen anstatt als LXC.
Vielleicht hilft das.

Ranseyer

FHEM mit FTUI. Homematic-Funk für Thermostate und Licht. MySensors als Basis für eigene HW.
Zentrale ist der MAPLE-CUL mit RFM69+HModUART-AddOn.
Doku zu meinen Projekten: Github/Ranseyer. Platinen falls verfügbar gerne auf Anfrage.
Support: gerne wenn ich Zeit+Lust habe im Forum. Nicht per PN!

Aleks-83


Esjay

Hast du den LXC wenigstens bestehen lassen oder gelöscht?
Ich könnte dir morgen meine Settings durchgeben.

Grüße

Aleks-83

Habe ich gelöscht  :P
Der LXC bestand sowieso nur für diese eine Aufgabe mit dem USB Device...
Als VM frisst er jetzt auch nicht viel mehr Hardware.

Danke für das Angebot.
Aber vielleicht interessiert es hier noch jemand anderen.

HelixOWL

Ich häng mich mal dran.

Das Einbinden von JeeLink und SingnalDuino hat bei mir ohne Probleme funktioniert.
Danach habe ich zahlreiche Stunden für das Einbinden des HM-CFG-USB-2 benötigt. Warum ist mir im nachhinein schleierhaft  ;)  . Ich habe zunächst immer mit den falschen Devices getestet.

Daher hier gerne meine Lösung:

Proxmox Host:
Nach einstecken des USB-Devices gibt es drei neue Devices. Benötigt wird nur ein einziges!

root@proxmox:/dev/bus/usb/001# lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 002: ID 8087:0a2b Intel Corp.
Bus 001 Device 005: ID 1b1f:c00f
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub


1. nicht benötigt
/dev/hidraw0
root@proxmox:/dev# ls -ls /dev/hidraw0
0 crw------- 1 root root 239, 0 Apr 21 10:01 /dev/hidraw0


2. nicht benötigt 
/dev/usb
root@proxmox:/dev# ls -ls /dev/usb
total 0
0 crw------- 1 root root 180, 0 Apr 21 10:01 hiddev0


Hier bin ich lange über den anderen Namen gestolpert und dachte meine Probleme lägen daran.

3.
/dev/bus/usb/001/005
root@proxmox:/dev# ls -ls /dev/bus/usb/001/005
0 crw-rw-r-- 1 root root 189, 4 Apr 21 10:01 /dev/bus/usb/001/005


Demnach habe ich meine /etc/pve/lxc/100.conf folgendermaßen konfiguriert:
lxc.cgroup.devices.allow: c 189:* rwm
lxc.mount.entry: /dev/bus/usb/001/005 dev/bus/usb/001/005  none bind,optional,create=file


Rechte auf dem Host setzten:
root@proxmox:/dev# chmod o+rw /dev/bus/usb/001/005


Container testen

3.
user@fhem2:~$ ls -ls /dev/bus/usb/001/005
0 crw-rw-r-- 1 nobody nogroup 189, 4 Apr 21 10:01 /dev/bus/usb/001/005



Auf dem Client das hier präsentierte Script zur Installation von HMLAN ausführen (sofern noch nicht geschehen):
https://forum.fhem.de/index.php/topic,13071.msg190887.html#msg190887

Dann testen:
user@fhem2:~$ /opt/hmcfgusb/hmland -p 1234 -D



EDIT:
Um die chmod Rechte auch nach dem Neustart des Hosts zu erhalten habe ich dieses Lösung genommen:
http://ask.xmodulo.com/change-usb-device-permission-linux.html




Maui

Zitat von: mark79 am 11 Juli 2018, 09:58:24
Micro weiß ich nicht, aber ich habe die interne Soundkarte vom Rock64 durchgereicht bekommen. Für TTS Sprachausgaben.
Vielleicht fehlt dir noch snd? und wichtig sind auch die cgroup Einträge... die bekommst du mit ein ls -l heraus, siehe unten.

lxc.mount.entry = /dev/snd dev/snd none bind,optional,create=dir 0 0

lxc.cgroup.devices.allow = c 280:* rwm
lxc.cgroup.devices.allow = c 116:* rwm



root@rocki:/var/lib/lxc/fhem# ls -l /dev | grep snd
drwxr-xr-x 3 root root         280 Jul  3 17:38 snd


root@rocki:/var/lib/lxc/fhem# ls -l /dev/snd
total 0
drwxr-xr-x 2 root root      100 Jul  3 17:38 by-path
crw-rw---- 1 root audio 116,  2 Jul  3 17:38 controlC0
crw-rw---- 1 root audio 116,  7 Jul  3 17:38 controlC1
crw-rw---- 1 root audio 116,  9 Jul  3 17:38 controlC2
crw-rw---- 1 root audio 116,  4 Jul  3 17:38 pcmC0D0c
crw-rw---- 1 root audio 116,  3 Jul  3 17:38 pcmC0D0p
crw-rw---- 1 root audio 116,  6 Jul  3 17:38 pcmC0D1c
crw-rw---- 1 root audio 116,  5 Jul  3 17:38 pcmC0D1p
crw-rw---- 1 root audio 116,  8 Jul  3 17:38 pcmC1D0p
crw-rw---- 1 root audio 116, 10 Jul  3 17:38 pcmC2D0p
crw-rw---- 1 root audio 116,  1 Jul  3 17:38 seq
crw-rw---- 1 root audio 116, 33 Jul  3 17:38 timer


Moin, ich stehe grad vor dem gleichen Problem und versuche das PS3 Eye in eine Snips LXC einzubinden.
Leider scheitere ich.
Habe die cgroups, snd und den usb stick selbst in die Config eingebunden.
Hab es ohne USB mal versucht, aber leider ohne Erfolg.

HOST

ls -l /dev/bus/usb/001/005
crw-rw-r-- 1 root root 189, 4 Jun  3 14:27 /dev/bus/usb/001/005



ls -l /dev | grep snd
drwxr-xr-x 4 root root         380 Jun  3 14:27 snd



ls -l /dev/snd
total 0
drwxr-xr-x 2 root root       60 Jun  3 14:27 by-id
drwxr-xr-x 2 root root       80 Jun  3 14:27 by-path
crw-rw---- 1 root audio 116,  2 Jun  2 21:14 controlC0
crw-rw---- 1 root audio 116, 13 Jun  3 14:27 controlC1
crw-rw---- 1 root audio 116, 11 Jun  2 21:14 hwC0D0
crw-rw---- 1 root audio 116, 12 Jun  2 21:14 hwC0D2
crw-rw---- 1 root audio 116,  4 Jun  2 21:14 pcmC0D0c
crw-rw---- 1 root audio 116,  3 Jun  2 21:14 pcmC0D0p
crw-rw---- 1 root audio 116, 10 Jun  2 21:14 pcmC0D10p
crw-rw---- 1 root audio 116,  5 Jun  2 21:14 pcmC0D1p
crw-rw---- 1 root audio 116,  6 Jun  2 21:14 pcmC0D3p
crw-rw---- 1 root audio 116,  7 Jun  2 21:14 pcmC0D7p
crw-rw---- 1 root audio 116,  8 Jun  2 21:14 pcmC0D8p
crw-rw---- 1 root audio 116,  9 Jun  2 21:14 pcmC0D9p
crw-rw---- 1 root audio 116, 14 Jun  3 14:27 pcmC1D0c
crw-rw---- 1 root audio 116,  1 Jun  2 21:14 seq
crw-rw---- 1 root audio 116, 33 Jun  2 21:14 timer



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

lxc.cgroup.devices.allow = c 380:* rwm
lxc.cgroup.devices.allow = c 116:* rwm



arecord -l
**** List of CAPTURE Hardware Devices ****
card 0: PCH [HDA Intel PCH], device 0: ALC283 Analog [ALC283 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: CameraB409241 [USB Camera-B4.09.24.1], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0


In dem LXC leider nicht.


maui@snips:~$ arecord -l
arecord: device_list:270: no soundcards found...

Thyraz

Gehen Aufnahmen/Abspielen im Host System? Dort muss auch alsa-utils installiert sein, oder was auch immer du zur Soundausgabe nutzt.

Hier mal was ich mir damals notiert hatte:

Zitat
Sowohl auf Host als auch im LXC Container:
sudo apt-get install alsa-utils
Audioaufnahmen müssten auf dem Host nun gehen:
arecord --device=hw:1,0 -f S16_LE -c 4 -r 16000 -d5 test.wav
Auf dem Hostsystem c-groups für /dev/snd und dessen Inhalt ermitteln:
ls -la /dev/ | grep snd
ls -la /dev/snd/
Ergibt z.B. 360 und 116
dann auf dem Host diese c-groups und  /dev/snd durchreichen:
nano /etc/pve/nodes/pve/lxc/10<x>.conf
erweitern mit:
lxc.mount.entry: /dev/snd dev/snd none bind,create=dir,optional 0 0
lxc.cgroup.devices.allow: c 116:* rwm
lxc.cgroup.devices.allow: c 360:* rwm
Danach müssen auf dem Gastsystem Audioaufnahmen möglich sein:
sudo arecord --device=hw:1,0 -f S16_LE -c 4 -r 16000 -d5 test.wav

sudo nano /etc/asound.conf anpassen:
pcm.!default {
  type asym
   playback.pcm {
     type plug
     slave.pcm "hw:2,0"
   }
   capture.pcm {
     type plug
     slave.pcm "hw:1,0"
   }
}
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Maui

Host geht. Hab den Sound an sich erstmal hinbekommen, indem ich den Container privileged (nicht non-privileged :) ) gemacht habe.
Nicht schön, aber da nur lokal erstmal verkraftbar.
Jetzt hänge ich allerdings bei snips allgemein, ich gehe erstmal wieder einen Schritt zurück und teste es am Pi 3. Wenn ich da dann Erfolge hatte, gehe ich wieder vorwärts Richtung Proxmox.

Gruß
Maui