Frigate NVR with Raspberry Pi 5
Introduction
Frigate NVR is an open-source network video recorder designed for real-time object detection with AI models. Paired with the Raspberry Pi 5, it enables efficient video surveillance at the edge, powered by YOLOv8n. This guide will walk you through the installation and configuration process for an optimal setup.
Prepare Hardware
Recommended Components
Raspberry Pi 5 8GB | Raspberry Pi AI Kit |
---|---|
Alternatively, you also need at least one camera for video streaming. You can refer to Recommended hardware to see the recommended cameras.
Install Hailo PCIe Driver
Step 1: Enable PCIe Gen 3
Open a terminal and run the following command.
$ sudo apt update
$ sudo raspi-config
In the dialog, select 6 Advanced Options and then A8 PCIe Speed.
Choose "Yes" to enable PCIe Gen 3 mode.
Afterward, click "Finish" to exit.
Step 2: Install Hailo PCIe Driver
Install the dkms package. This package is required to install the Hailo PCIe driver.
$ sudo apt update
$ sudo apt install dkms
Get Hailo PCIe Driver from GitHub.
$ git clone --depth 1 https://github.com/hailo-ai/hailort-drivers
$ cd hailort-drivers/linux/pcie
Then, install the Hailo PCIe driver.
$ sudo make dkms_install
After installation, download firmware for Hailo and copy it to the /lib/firmware/hailo
directory.
$ cd ../..
$ ./download_firmware.sh
$ sudo mkdir -p /lib/firmware/hailo
$ sudo cp *.bin /lib/firmware/hailo
To avoid PCIe max_desc_page_size issue, we also need to create a rule in /etc/modprobe.d/hailo_pci.conf
with the following content.
options hailo_pci force_desc_page_size=4096
Restart the system to take effect.
$ sudo reboot
After the system is restarted, the Hailo PCIe driver is installed successfully. The /dev/hailo0
device will be created. Check the device by running the following command.
$ sudo ls /dev/hailo*
/dev/hailo0
Install Frigate NVR
In this part, we assume you have your camera set up and ready to stream with RTSP protocol in 1920x1080 resolution.
- Example RTSP URL:
rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
Step 1: Prepare the Environment
Update your system:
$ sudo apt update
Install Docker:
$ curl -fsSL get.docker.com | bash
$ sudo usermod -aG docker $USERReboot the system:
$ sudo reboot
Step 2: Deploying Frigate
Pull the Frigate Image:
Go to Package frigate, choose one image with
-h8l
suffix. In this example, we chooseghcr.io/blakeblackshear/frigate:b265b6b-h8l
.$ docker pull ghcr.io/blakeblackshear/frigate:b265b6b-h8l
Create Docker Compose File:
Here is an example of the
frigate.yml
file, thehailo0
device is the one you created in the previous step, configuration files are in the./config
directory and data files are in the./data
directory.:services:
frigate-hailo:
container_name: frigate-hailo
privileged: true
restart: unless-stopped
image: ghcr.io/blakeblackshear/frigate:b265b6b-h8l
shm_size: 1024mb
devices:
- /dev/hailo0:/dev/hailo0
volumes:
- /etc/localtime:/etc/localtime:ro
- ./config/:/config
- ./data/db/:/data/db
- ./data/storage:/media/frigate
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
ports:
- 5000:5000Download Model:
Go to Public Pre-Trained Models to download the model you want to use. Here is the example of using YOLOv8n model:
yolov8n
.$ mkdir -p ./config/model_cache
$ sudo wget https://hailo-model-zoo.s3.eu-west-2.amazonaws.com/ModelZoo/Compiled/v2.14.0/hailo8/yolov8n.hef -O ./config/model_cache/yolov8n.hefEdit Frigate Config:
Here is an example of the
config/config.yml
file, which is for the Frigate application:database:
path: /data/db/frigate.db
cameras:
home:
ffmpeg:
inputs:
- path: rtsp://admin:[email protected]:554/cam/realmonitor?channel=1&subtype=0
roles:
- record
- detect
objects:
track:
- person
- cat
detectors:
hailo8l:
type: hailo8l
device: PCIe
model:
path: /config/model_cache/yolov8n.hef
model:
width: 640
height: 640
input_tensor: nhwc
input_pixel_format: bgrStart Docker Instance:
$ docker compose -f frigate.yml up -d
After the Frigate is up and running, you can access the Frigate web UI at
http://<your-raspberry-pi-ip>:5000
to check the camera stream.
Tech Support & Product Discussion
Thank you for choosing our products! We are here to provide you with different support to ensure that your experience with our products is as smooth as possible. We offer several communication channels to cater to different preferences and needs.