Skip to main content

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

Raspberry Pi 5 8GBRaspberry 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.

6 Advanced Options A8 PCIe Speed

Choose "Yes" to enable PCIe Gen 3 mode.

Choose Yes

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.

Step 1: Prepare the Environment

  1. Update your system:

    $ sudo apt update
  2. Install Docker:

    $ curl -fsSL get.docker.com | bash
    $ sudo usermod -aG docker $USER
  3. Reboot the system:

    $ sudo reboot

Step 2: Deploying Frigate

  1. Pull the Frigate Image:

    Go to Package frigate, choose one image with -h8l suffix. In this example, we choose ghcr.io/blakeblackshear/frigate:b265b6b-h8l.

    $ docker pull ghcr.io/blakeblackshear/frigate:b265b6b-h8l
  2. Create Docker Compose File:

    Here is an example of the frigate.yml file, the hailo0 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:5000
  3. Download 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.hef
  4. Edit 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: bgr
  5. Start 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.

    frigate-web

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.

Loading Comments...