Proxmox Google Coral USB

JasonBorn

Member
Mar 4, 2021
43
2
13
36
Hallo zusammen,
hat jemand eine Anleitung, wie ich den Google Coral USB Stick in einem Proxmox Container zum Laufen bekomme? Alle Anleitungen im Netz sind entweder schon alt oder in Verbindung mit Docker oder beides. Ich bekomme es einfach nicht hin. Bei mir wird immer folgendes angezeigt: (auf dem Host sowie im Container)


Code:
root@pve:~# lsusb
Bus 002 Device 002: ID 1a6e:089a Global Unichip Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 
Hat denn wirklich keiner dieses Problem? Will sich vielleicht jemand vom Proxmox Team diese Konstellation ansehen? Ich könnte meinen Coral USB auch versenden, falls es an Hardware fehlt. Grüße
 
Poste bitte die Ausgabe von
Code:
cat /etc/pve/lxc/ID-des-Container.conf

Dann wissen wir wie der Container konfiguriert ist. Bitte auch folgende Ausgabe posten
Code:
ls -l /dev/bus/usb/002/002
 
Poste bitte die Ausgabe von
Code:
cat /etc/pve/lxc/ID-des-Container.conf

Dann wissen wir wie der Container konfiguriert ist. Bitte auch folgende Ausgabe posten
Code:
ls -l /dev/bus/usb/002/002

Vielen vielen Dank für deine Hilfe. Hier meine Ausgaben. Hoffe das passt mit 004/002


cat /etc/pve/lxc/100.conf

Code:
arch: amd64
cores: 1
features: keyctl=1,nesting=1
hostname: zoneminder
memory: 5000
net0: name=eth0,bridge=vmbr0,firewall=1,hwaddr=1E:13:DF:B7:FF:4A,ip=dhcp,ip6=dhcp,type=veth
onboot: 1
ostype: ubuntu
rootfs: local-lvm:vm-100-disk-0,size=30G
swap: 512
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/bus/usb/004 dev/bus/usb/004 none bind,optional,create=dir 0, 0
lxc.cap.drop:
lxc.mount.auto: cgroup:rw

lsub:
Code:
root@pve:~# lsusb
Bus 002 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 002: ID 1a6e:089a Global Unichip Corp.
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 002: ID 04ca:005a Lite-On Technology Corp. USB Multimedia Keyboard
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

root@pve:~# ls -l /dev/bus/usb/004/002

Code:
crw-rw-r-- 1 root 100000 189, 385 Oct 20 17:26 /dev/bus/usb/004/002
 
Ändere mal
Code:
lxc.mount.entry: /dev/bus/usb/004 dev/bus/usb/004 none bind,optional,create=dir 0, 0
zu
Code:
lxc.mount.entry: /dev/bus/usb/004/002 dev/bus/usb/004/002 none bind,optional,create=file
Vllt. klappt es dann.
 
Ändere mal
Code:
lxc.mount.entry: /dev/bus/usb/004 dev/bus/usb/004 none bind,optional,create=dir 0, 0
zu
Code:
lxc.mount.entry: /dev/bus/usb/004/002 dev/bus/usb/004/002 none bind,optional,create=file
Vllt. klappt es dann.
leider keine Änderung. Ich muss ja nicht die ganzen Treiber etc auf dem Host installieren oder?
 
Nein, im Container
habs nun hinbekommen. Es wird Google angezeigt. Leider funktioniert das aber nur unter dem root User. Beim gewünschten User (zoneminder) erscheint:
Code:
ValueError: Failed to load delegate from libedgetpu.so.1

hab schon folgendes eingegeben, ohne Erfolg:
Code:
sudo usermod -aG plugdev zoneminder

Weißt du zufällig warum?



EDIT: Habs herausgefunden. Darf kein priviligierter Container sein.
 
Last edited:
Wäre es möglich das ganz mal als Doku zu bekommen, ich versuchen nämlich seit Stunden genau das gleiche Coral in einem LXC zu bekommen

Meine conf sieht wie folgt aus:

arch: amd64 cores: 4 features: nesting=1 hostname: frigate memory: 2048 nameserver: 192.168.1.1 net0: name=eth0,bridge=vmbr1,firewall=1,gw=192.168.1.1,hwaddr=1E:03:6D:00:92:CE,ip=192.168.1.2/24,type=veth ostype: debian rootfs: local-ssd:vm-104-disk-0,size=30G searchdomain: exmaple.com swap: 512 unprivileged: 1 lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:128 rwm lxc.cgroup2.devices.allow: c 29:0 rwm lxc.cgroup2.devices.allow: c 189:* rwm lxc.apparmor.profile: unconfined lxc.cgroup2.devices.allow: a lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0 lxc.mount.entry: /dev/bus/usb/001/003 dev/bus/usb/001/003 none bind,optional,create=dir 0, 0 lxc.cap.drop: lxc.mount.auto: cgroup:rw

lsusb auf dem Host:
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 002: ID 0463:ffff MGE UPS Systems UPS Bus 001 Device 004: ID 1a6e:089a Global Unichip Corp. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

und im Container genauso
 
Last edited:
Ich habs mittlerweile komplett gelöst. Also auch mit den Userrechten.
Du musst auf dem Host nur folgende Einstellungen mit in die lxc conf mit aufnehmen:

Code:
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/bus/usb/003 dev/bus/usb/003 none bind,optional,create=dir 0, 0
lxc.cap.drop:
lxc.mount.auto: cgroup:rw

Achte hierbei auf die lusb Einstellungen deines Hosts. Bei mir ist der Stick an 003 angeschlossen.

Der LXC muss priviligiert und Nesting=1 sein. Danach noch nach der Anleitung von Google selber die Treiber etc installieren und das Parrot Bild einmal testen. Danach wird dir der Stick als Google angezeigt.
 
  • Like
Reactions: Snobs
Danke für deine Antwort, ich bin jetzt an der Stelle das der Host mit den Papagei erkennt und im lsub auch google steht. ich weiß du nutzt Zonemindner aber im Frigate habe ich da im Docker Container leider noch keinen Zugriff drauf, der findet ihn nicht.

Ich suche weiter und bin durch deine Hilfe ein Stück weiter gekommen.
 
Code:
root@pve1:/etc/pve/nodes/pve1/lxc# cat 104.conf
arch: amd64
cores: 4
features: keyctl=1,nesting=1
hostname: frigate
memory: 2048
unprivileged: 1
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir 0, 0
lxc.cap.drop:
lxc.mount.auto: cgroup:rw
 
  • Like
Reactions: JasonBorn
Ich habs gefunden! Bei mir sieht es nun so aus und frigate findet die TPU

Code:
arch: amd64
cores: 4
features: nesting=1
hostname: frigate
memory: 2048
net0: name=eth0,bridge=vmbr6,firewall=1,gw=192.168.6.1,hwaddr=1E:03:6D:00:92:CE,ip=192.168.6.2/24,type=veth
ostype: debian
rootfs: local-ssd:vm-104-disk-0,size=30G
swap: 512
unprivileged: 0
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir 0, 0
lxc.cap.drop:
lxc.mount.auto: cgroup:rw

unprivileged: 0 war jetzt die Lösung

Danke vielmals für deine Unterstützung.
 
Ich habs gefunden! Bei mir sieht es nun so aus und frigate findet die TPU

Code:
arch: amd64
cores: 4
features: nesting=1
hostname: frigate
memory: 2048
net0: name=eth0,bridge=vmbr6,firewall=1,gw=192.168.6.1,hwaddr=1E:03:6D:00:92:CE,ip=192.168.6.2/24,type=veth
ostype: debian
rootfs: local-ssd:vm-104-disk-0,size=30G
swap: 512
unprivileged: 0
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.cgroup2.devices.allow: c 189:* rwm
lxc.apparmor.profile: unconfined
lxc.cgroup2.devices.allow: a
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file 0, 0
lxc.mount.entry: /dev/bus/usb/001 dev/bus/usb/001 none bind,optional,create=dir 0, 0
lxc.cap.drop:
lxc.mount.auto: cgroup:rw

unprivileged: 0 war jetzt die Lösung

Danke vielmals für deine Unterstützung.
Super, freut mich. Was mir eben noch einfällt. Ich hatte das Problem, dass der Stick nach einem Neustart nicht mehr erreichbar war. Also hab ich noch folgende Einstellungen auf dem Host eingefügt:
Datei:
/etc/udev/rules.d/99-edgetpu-accelerator.rules


Inhalt:
Code:
SUBSYSTEM=="usb",ATTRS{idVendor}=="1a6e",GROUP="plugdev"
SUBSYSTEM=="usb",ATTRS{idVendor}=="18d1",GROUP="plugdev"
 
Kannst du Gedanken lesen, das ist genau das was ich gerade noch machen wollte *cheers*
Wäre jetzt noch besser wenn er auch immer den selben BUS Pfad bekäme, weil entfernst du das Gerät einmal und steckst es wieder an, zählt er ja die letzte Nummer hoch. Bsspl. /dev/bus/usb/001/003 oder 004 usw...
 
Last edited:
Kannst du Gedanken lesen, das ist genau das was ich gerade noch machen wollte *cheers*
Wäre jetzt noch besser wenn er auch immer den selben BUS Pfad bekäme, weil entfernst du das Gerät einmal und steckst es wieder an, zählt er ja die letzte Nummer hoch. Bsspl. /dev/bus/usb/001/003 oder 004 usw...
Ja gut, so oft wird das bei mir Ned passieren :D
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!