NEWS
Frigate auf Coral USB im LXC-Container ...
-
Für die grundlegende Konfiguration verweise ich erstmal auf die Arbeit von @Wal im Thread https://forum.iobroker.net/topic/64643/proxmox-lxc-mit-frigate
Der erstellte LXC Container ist
Unpriviligert(EDIT, der hat nicht funktioniert, mit Privilegierter ist es was geworden) erstellt worden!Das dort im Posting 1 geschriebene kann so weit ziemlich 1:1 erledigt werden (bis auf Privilegiert)- die dort bei der LXC-Container Konfiguration vorgeschlagene Ubuntu-Version wird nicht mehr angeboten, ich habe die nächsthöhere gewählt - 24.04 statt 23.4 ... Um die Hardware durchzureichen kann man inzwischen anders vorgehen ...
Nach dem Erledigen der grundlegenden Arbeiten aus Beitrag 1 bis zur Sichtbarkeit des ersten Kamerabildes im frigate Browsertab habe ich erstmal den LXC-Container gestoppt, und ein Backup des LXC mit Proxmox-Bordmitteln gezogen.
Vorher kann man ggfs. auf der Webseite der Frigate Instanz ein wenig stöbern, ob z. B. etwas Interessantes unter "Logs" zu sehen ist.(Wenn man sich verbastelt hat, muss man dann nicht von vorne anfangen, sondern kann immer aus dem Backup eine funktionierende Version zurückspielen!
Dann weiter zu den Intel-Render-Beschleunigern (ohne den LXC-Container zu starten)... die "Durchreiche" an den LXC kann man im aktuellen Proxmox aus der Proxmox-Gui im Browser erledigen ...
Unter Hinzufügen wählt man "Device Passthrough"
Wenn man mehrere Grafikkarten hat, könnte es unter /dev/dri/ neben renderD128 noch weitere Einträge geben..In der PVE-Shell ggfs. nachschauen, was es da für "/dev/dri/render...." Einträge gibt das könnte interessant sein, wenn man die Streams der diversen Kameras auf mehrer Grafikkarten zum Transkodieren verteilen kann...
root@pve:~# ls /dev/dri by-path card0 renderD128 root@pve:~#
Die Konfiguration des "Durchreichens" von Hardware an den LXC Container habe ich vorher schon nach der Anleitung von @Wal versucht zu erledigen - da ich den PVE Server nicht neu aufgesetzt habe, können Artefakte davon eine Rolle im Folgenden gespielt haben- bin aber eigentlich ziemlich sicher, dass das nicht der Fall ist.
Dann den LXC-Container neu starten, und schauen, was da so alles an Devices angezeigt wird: mit user und group auf "root" scheint Docker klarzukommen mit "nobody" nicht ...
frigate@ubuntu-frigate:~/frigate$ ls -l /dev/dri total 0 crw-rw---- 1 root root 226, 128 Jul 23 16:29 renderD128
dann das docker-compose.file anpassen
version: "3.9" services: frigate: container_name: frigate privileged: true # this may not be necessary for all setups restart: unless-stopped image: ghcr.io/blakeblackshear/frigate:stable shm_size: "64mb" # update for your cameras based on calculation above cap_add: - CAP_PERFMON devices: - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware volumes: - /etc/localtime:/etc/localtime:ro - /home/frigate/frigate:/config - /media/frigate:/media/frigate - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear target: /tmp/cache tmpfs: size: 1000000000 ports: - "5000:5000" - "1935:1935" # RTMP feeds
So sah meine config.yml aus, nachdem die Intel-Render-Beschleunigung eingeschaltet war:
mqtt: enabled: False cameras: stellplatz: ffmpeg: hwaccel_args: preset-vaapi inputs: - path: rtsp://192.168.2.189:8554/mjpeg/1 roles: - detect detect: enabled: False width: 1280 height: 720
Docker neu gestartet und folgendes im Frigate-Logging gefunden...
2024-07-23 16:30:34.897276981 [2024-07-23 16:30:34] frigate.util.services ERROR : Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied)
Das Problem habe ich bisher nicht lösen können - trotzdem Backup des LXC gemacht ...
Weiter zum Google Coral Chip
lsusb zeigte in der Proxmox-PVE Shell folgende
Bus 002 Device 002: ID 1a6e:089a Global Unichip Corp.
Ander sah es im wieder gestarteten LXC auch nicht aus, nachdem ich dorthin Bus 2/Device 2 durchgereicht hatte:
Eigentlich sollte da folgendes stehen:
Bus 002 Device 003: ID 18d1:9302 Google Inc.
Mal schauen, dachte ich...
config.yml angepasst:mqtt: enabled: False detectors: coral: type: edgetpu device: usb cameras: stellplatz: ffmpeg: hwaccel_args: preset-vaapi inputs: - path: rtsp://192.168.2.189:8554/mjpeg/1 roles: - detect detect: enabled: False width: 1280 height: 720
docker-compose.yml
services: frigate: container_name: frigate privileged: true # this may not be necessary for all setups restart: unless-stopped image: ghcr.io/blakeblackshear/frigate:stable shm_size: "64mb" # update for your cameras based on calculation above cap_add: - CAP_PERFMON devices: - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware - /dev/bus/usb/002/002 volumes: - /etc/localtime:/etc/localtime:ro - /home/frigate/frigate:/config - /media/frigate:/media/frigate - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear target: /tmp/cache tmpfs: size: 1000000000 ports: - "5000:5000" - "1935:1935" # RTMP feeds
Nachdem beides angepasst war Container neu gestartet:
frigate@ubuntu-frigate:~/frigate$ lsusb Bus 002 Device 003: ID 18d1:9302 Google Inc. Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub Bus 001 Device 003: ID 0403:6015 Future Technology Devices International, Ltd Bridge(I2C/SPI/UART/FIFO) Bus 001 Device 005: ID 303a:80c2 WEMOS.CC LOLIN-S2-MINI Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Irgendwas im Code des Containers hat das Coral USB so angefasst, dass er sich "anständig" meldet (Neue Firmware geladen?)
Richtig zufriedenstellen ist das nicht, aber die TPU wird erkannt, womit andere Probleme hatten ...2024-07-23 16:29:15.297071620 [INFO] Preparing Frigate... 2024-07-23 16:29:15.464806686 [INFO] Starting Frigate... 2024-07-23 16:29:23.754811837 [2024-07-23 16:29:23] frigate.app INFO : Starting Frigate (0.13.2-6476f8a) 2024-07-23 16:29:23.877506883 [2024-07-23 16:29:23] peewee_migrate.logs INFO : Starting migrations 2024-07-23 16:29:23.906106705 [2024-07-23 16:29:23] peewee_migrate.logs INFO : There is nothing to migrate 2024-07-23 16:29:23.924289754 [2024-07-23 16:29:23] frigate.app INFO : Recording process started: 230 2024-07-23 16:29:23.938529859 [2024-07-23 16:29:23] frigate.app INFO : go2rtc process pid: 86 2024-07-23 16:29:24.019337498 [2024-07-23 16:29:24] detector.coral INFO : Starting detection process: 239 2024-07-23 16:29:24.032800008 [2024-07-23 16:29:24] frigate.app INFO : Output process started: 241 2024-07-23 16:29:24.048060771 [2024-07-23 16:29:24] frigate.detectors.plugins.edgetpu_tfl INFO : Attempting to load TPU as usb 2024-07-23 16:29:24.179917130 [2024-07-23 16:29:24] frigate.app INFO : Camera processor started for stellplatz: 249 2024-07-23 16:29:24.184386354 [2024-07-23 16:29:24] frigate.app INFO : Capture process started for stellplatz: 250 2024-07-23 16:29:26.724384536 [2024-07-23 16:29:26] frigate.detectors.plugins.edgetpu_tfl INFO : TPU found 2024-07-23 16:30:34.897276981 [2024-07-23 16:30:34] frigate.util.services ERROR : Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied) 2024-07-23 16:30:34.897288793 2024-07-23 17:24:04.829536806 [2024-07-23 17:24:04] frigate.video ERROR : stellplatz: Unable to read frames from ffmpeg process. 2024-07-23 17:24:04.830031361 [2024-07-23 17:24:04] frigate.video ERROR : stellplatz: ffmpeg process is not running. exiting capture thread... 2024-07-23 17:24:14.593102490 [2024-07-23 17:24:14] watchdog.stellplatz ERROR : Ffmpeg process crashed unexpectedly for stellplatz. 2024-07-23 17:24:14.593114102 [2024-07-23 17:24:14] watchdog.stellplatz ERROR : The following ffmpeg logs include the last 100 lines prior to exit. 2024-07-23 17:24:14.593126178 [2024-07-23 17:24:14] ffmpeg.stellplatz.detect ERROR : [AVHWDeviceContext @ 0x61fc8b834000] libva: /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so init failed 2024-07-23 17:24:14.593207516 [2024-07-23 17:24:14] ffmpeg.stellplatz.detect ERROR : rtsp://192.168.2.189:8554/mjpeg/1: Input/output error
-
@martinp Änderung, die nichts gebracht hat:
Auf dem LXC-Container:
frigate@ubuntu-frigate:~$ getent group render render:x:108:
In der Proxmox-Oberfläche unter den LCX-Ressourceneinstellungen eine kleine Änderung (GID von 0 auf 108):
Hatte mich schon gefreut, aber nach 90 Sekunden dann doch wieder ein Reinfall
2024-07-23 18:05:43.458122640 [INFO] Preparing Frigate... 2024-07-23 18:05:43.614447795 [INFO] Starting Frigate... 2024-07-23 18:05:52.062821997 [2024-07-23 18:05:52] frigate.app INFO : Starting Frigate (0.13.2-6476f8a) 2024-07-23 18:05:52.186019756 [2024-07-23 18:05:52] peewee_migrate.logs INFO : Starting migrations 2024-07-23 18:05:52.210044690 [2024-07-23 18:05:52] peewee_migrate.logs INFO : There is nothing to migrate 2024-07-23 18:05:52.227919762 [2024-07-23 18:05:52] frigate.app INFO : Recording process started: 231 2024-07-23 18:05:52.242643407 [2024-07-23 18:05:52] frigate.app INFO : go2rtc process pid: 92 2024-07-23 18:05:52.326045840 [2024-07-23 18:05:52] detector.coral INFO : Starting detection process: 240 2024-07-23 18:05:52.329476931 [2024-07-23 18:05:52] frigate.app INFO : Output process started: 242 2024-07-23 18:05:52.351276659 [2024-07-23 18:05:52] frigate.detectors.plugins.edgetpu_tfl INFO : Attempting to load TPU as usb 2024-07-23 18:05:55.211035171 [2024-07-23 18:05:52] frigate.app INFO : Camera processor started for stellplatz: 250 2024-07-23 18:05:55.211895340 [2024-07-23 18:05:52] frigate.app INFO : Capture process started for stellplatz: 251 2024-07-23 18:05:55.235657285 [2024-07-23 18:05:55] frigate.detectors.plugins.edgetpu_tfl INFO : TPU found 2024-07-23 18:07:02.956372172 [2024-07-23 18:07:02] frigate.util.services ERROR : Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied)
root@pve:~# ls -la /dev/dri/ total 0 drwxr-xr-x 3 root root 100 Jul 22 18:35 . drwxr-xr-x 20 root root 4600 Jul 23 15:14 .. drwxr-xr-x 2 root root 80 Jul 22 18:35 by-path crw-rw---- 1 root video 226, 0 Jul 22 18:35 card0 crw-rw---- 1 root render 226, 128 Jul 22 18:35 renderD128 root@pve:~#
frigate@ubuntu-frigate:~$ ls -la /dev/dri total 0 drwxr-xr-x 2 root root 60 Jul 23 18:05 . drwxr-xr-x 8 root root 520 Jul 23 18:05 .. crw-rw---- 1 root render 226, 128 Jul 23 18:05 renderD128
-
Neuer Versuch mit privilegiertem Container hat geklappt:
Dabei habe ich alles "in einem Rutsch gemacht ...
Vor dem Starten des Docker Containers den LXC noch einmal gestoppt, und die beiden Devices durchgereicht
Ob das bei einem Priv Container überhaupt nötig ist, weiß ich nicht ...
Jedenfalls von Anfang an beide Dinge in der Config aktiviert, und alles funktionierte
services: frigate: container_name: frigate privileged: true # this may not be necessary for all setups restart: unless-stopped image: ghcr.io/blakeblackshear/frigate:stable shm_size: "64mb" # update for your cameras based on calculation above cap_add: - CAP_PERFMON devices: - /dev/dri/renderD128 # for intel hwaccel, needs to be updated for your hardware - /dev/bus/usb/002/003 volumes: - /etc/localtime:/etc/localtime:ro - /home/frigate/frigate/config.yml:/config/config.yml - /media/frigate:/media/frigate - type: tmpfs # Optional: 1GB of memory, reduces SSD/SD Card wear target: /tmp/cache tmpfs: size: 1000000000 ports: - "5000:5000" - "1935:1935" # RTMP feeds
und ...
mqtt: enabled: False detectors: coral: type: edgetpu device: usb cameras: stellplatz: ffmpeg: hwaccel_args: preset-vaapi inputs: - path: rtsp://192.168.2.189:8554/mjpeg/1 roles: - detect detect: enabled: False width: 1280 height: 720
Hier noch das Logging:
-
proxmox war bis vor kurzen in der Anleitung ja noch nicht aufgeführt
https://docs.frigate.video/frigate/installation/#proxmox
ansonsten
https://github.com/blakeblackshear/frigate/discussions/5773 -
@martinp Danke für die Anleitung.
Vielleicht sei noch als Ergänzung bemerkt, dass sich die Coral TPU in eine VM nicht so zuverlässig durchreichen lässt wie in einen LXC.
Zumindest dann nicht, wenn man ein einzelnes USB-Gerät oder Port, nicht aber die ganz IOMMU group durchreichen kann oder will.
Ich hatte es lange versucht und jeweils nach kurzer Zeit wurde sie neu initialisiert. Mit einem LXC klappt es seit ein paar Wochen problemlos. -
@martinp sagte in Frigate auf Coral USB im LXC-Container ...:
Docker neu gestartet und folgendes im Frigate-Logging gefunden...
Copy to Clipboard2024-07-23 16:30:34.897276981 [2024-07-23 16:30:34] frigate.util.services ERROR : Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied)Das ist Normal, die Fehlermeldung habe ich auch. Es ist ein Rechte Problem, Hardwarebeschleunigung funktioniert trotzdem.
-
@wal said in Frigate auf Coral USB im LXC-Container ...:
@martinp sagte in Frigate auf Coral USB im LXC-Container ...:
Docker neu gestartet und folgendes im Frigate-Logging gefunden...
Copy to Clipboard2024-07-23 16:30:34.897276981 [2024-07-23 16:30:34] frigate.util.services ERROR : Unable to poll intel GPU stats: Failed to initialize PMU! (Permission denied)Das ist Normal, die Fehlermeldung habe ich auch. Es ist ein Rechte Problem, Hardwarebeschleunigung funktioniert trotzdem.
Wirklich verblüffend, die Meldung besagt ja - wenn mich meine Englishkenntnisse nicht verlassen - definitiv das Gegenteil...
Woran erkennt man eigentlich, dass die GPU-Hardwarebeschleunigung trotzdem funktioniert?
Wäre ja schon ärgerlich, wenn ich mir die Arbeit mit dem privilegierten LXC umsonst gemacht hätte... -
@martinp ,
lass den Stream mit GoToRTC wandeln und schaue auf die CPU-Last, danach schaltest du das Hardwaretranscoden ab und schaust nochmal auf die CPU-Last.edit: es kommt auch eine Meldung beim Start von Frigate:
type Info Timestamp 2024-07-24 19:05:26 Tag frigate.util.services Message Automatically detected vaapi hwaccel for video decoding
-
@wal Gestern ein großes Update danach musste PVE, und somit auch alles, was darunter liegt neu gestartet werden...
Leider hat es dabei den Docker Container zerlegt.. und zwar sehr merkwürdig
frigate@ubuntu-frigate-privileged:~/frigate$ docker compose up [+] Running 1/0 ✔ Container frigate Created 0.0s Attaching to frigate Error response from daemon: readdirent /dev/serial/by-id: no such file or directory
habe kein serielles Device an den Container durchgereicht ...
Nach der alten Bauernregel "jeder Boot tut gut" habe ich den LXC-Container neu gestartet, und alles läuft wieder ...
-
@martinp Hattest Du seither mal einen Neustart des LXC gemacht oder den Coral AI aus- und wieder eingesteckt?
Bei mir hat sich nämlich der Pfad geändert.
Die letzte Zahl, also 002 wird immer um eins erhöht…
Das ist ein wenig unpraktisch.