[vz-users] Proxmox: Zugriff aus USB-Adapter aus Container
Florian Heiber
florian at heiber.me
Mi Dez 22 11:10:31 CET 2021
Hallo zusammen,
ich bin mir ziemlich sicher, dass diese eigentlich nicht die richtige Gruppe für diese Frage ist, aber ich halte es nicht für unwahrscheinlich, dass jemand ein ähnliches Setup hat. Daher seht es mir bitte nach.
Ich betreibe einen NUC, auf dem Proxmox mit einigen Containern läuft. Nun würde ich mir gerne einen als “Datenlogger” aufsetzen. Dafür habe ich zwei USB-IR-Leseköpfe in meinen Hauptverteiler gehängt und an den NUC angeschlossen. Eine weitere lange USB-Leitung kommt von unserer Wärmepumpe – aber das tut hier nichts zur Sache und ist eher für ein späteres Projekt interessant.
Ein anderer Container, der bereits seit einiger Zeit läuft, stellt eine InfluxDB zu Verfügung. Die würde ich gerne auch für den Datenlogger nutzen. So viel zum Setup.
Das vzlogger-Projekt sieht hierfür ganz vielversprechend aus.
Die IR-Leseköpfe werden auf dem Host augenscheinlich richtig gemounted. Sie sind jeweils unter (hier nur exemplarisch für den ersten)
– /dev/bus/usb/001/043
– /dev/ttyUSB0
– /dev/serial/by-id/usb-Silicon_Labs_CP2104_USB_to_UART_Bridge_Controller_015AD0B3-if00-port0
verfügbar. Ein "cat /dev/ttyUSB0 | od -tx1” liefert kontinuierlich scheinbar saubere Daten. Nach der in der Anleitung [1] beschriebenen Konfiguration kann ich auf diese Daten auch via /dev/lesekopf0 zugreifen. Die Daten sehen so aus:
0000000 00 00 00 00 e0 00 fe 70 00 01 07 e0 00 00 ff 00
0000020 ff 00 00 00 00 00 00 00 00 00 00 00 7e 00 00 00
0000040 00 00 00 e0 00 00 00 00 00 00 fe 30 00 00 00 ff
0000060 10 00 00 00 f8 00 00 00 00 7e 00 00 00 00 00 00
0000100 00 00 00 00 00 0f 00 00 00 00 00 00 e0 00 01 00
…
Die Grundvoraussetzungen sehen damit für mich erstmal gut aus. Weiter also zum Container. Ich habe einen mit Debian 10 buster aufgesetzt. Warum? Ich habe das Image bereits auf meinem NUC gehabt und meine anderen Container laufen auch damit.
Nachdem der neue Container nun lief, bin ich erstmal zurück auf den Host um dort die Config vom Container [2] (/etc/pve/lxc/<id>.conf) so anzupassen, dass die USB-Devices durchgereicht werden:
lxc.cgroup.devices.allow: c 188:* rwm
lxc.mount.entry: /dev/ttyUSB0 dev/ttyUSB0 none bind,optional,create=file
Nach einem Neustart des Containers taucht nun hier auch das in der Config erwähnte Device auf. Allerdings starten nun auch die Probleme. Der Versuch, Daten via cat wie oben beschrieben auszulesen, schlägt fehl:
florian at datalogger:~$ cat /dev/ttyUSB0 | od -tx1
cat: /dev/ttyUSB0: Permission denied
0000000
Ein kurzer Blick auf die Permissions sagt mir, dass User und Group auf “nobody” bzw. “nogroup” stehen. Das macht mich zumindest stutzig.
florian at datalogger:~$ ls -lha /dev/ttyUSB0
crw-rw---- 1 nobody nogroup 188, 0 Dec 21 16:48 /dev/ttyUSB0
Auf dem Host wird /dev/ttyUSB0 als “root” und “dialout” geführt.
Hat jemand von euch vielleicht ein ähnliches Setup und sieht, wo ich mich hier verrannt habe oder was mein Problem ist? Ich bin sehr unsicher, welches der Devices vom Host ich überhaupt durchreichen soll. /dev/ttyUSB0 oder doch lieber einen der anderen? Ich habe bereits ein paar Konfigurationen durchprobiert. Aber fast alle mit demselben Ergebnis. Lediglich der Symlink (/dev/lesekopf0) gibt etwas mehr Auskunft, da er auch auf dem Container als Symlink auftaucht dessen Ziel (/dev/ttyUSB0) dann allerdings fehlt. Vielleicht brauche ich auch eine Kombination der Geräte. Ich weiß es nicht.
Auch was die Permissions nobody:nogroup angeht bin ich sehr unsicher. Allerdings finde ich im Container noch mehr Devices mit der Kombination. Vielleicht ist das also auch in Ordnung.
Vielen Dank für eure Zeit.
Beste Grüße
– Florian
[1]: https://wiki.volkszaehler.org/hardware/controllers/ir-schreib-lesekopf-usb-ausgang
[2]: https://medium.com/@konpat/usb-passthrough-to-an-lxc-proxmox-15482674f11d
Mehr Informationen über die Mailingliste volkszaehler-users