I picked up a Hailo-8L last month because my Frigate NVR was choking on object detection across four cameras. CPU inference on a Pi 5 keeps hitting 85% utilization, which means dropped frames and missed detections. The accelerator promised 13 TOPS and a way to actually use that M.2 slot. Spoiler: it works, but the path from unboxing to ‘running inference’ isn’t as obvious as it should be.

Why you might want this
The Hailo-8L sits in the Pi 5’s M.2 HAT slot and offloads AI inference entirely to dedicated hardware. That’s different from GPU acceleration on other boards. You’re not competing with system load for compute. Frigate can delegate object detection, pose estimation, and other vision tasks. Home Assistant can run local models for automations without slowing down the main instance. If you’re already running container-based home automation at scale, this fills a real gap.
It’s not cheap at around $120, and it only works on Pi 5. But if you’re past the tinkering phase and actually want reliable AI on modest hardware, the math works.
What you need before you start
- Raspberry Pi 5 (8GB minimum, though 4GB works)
- Latest Raspberry Pi OS (bookworm). Bullseye will not cooperate.
- The M.2 HAT and Hailo-8L module itself
- A USB cable and maybe 30 minutes
- Internet connection for downloading models and SDK packages
Make sure your Pi is fully updated before touching anything else. I skipped this step once and spent an hour debugging kernel module mismatches.
sudo apt update
sudo apt upgrade -y
sudo reboot
Physical install and drivers
The M.2 HAT clips onto the Pi’s expansion connector. The Hailo module slots into the M.2 connector on the HAT. Both of these are press-fit — you don’t need screws, though the HAT does come with standoffs if you want them. Let it sit flush. Power the Pi and check that the board is recognized.
lspci
You should see something like:
0000:01:00.0 Co-processor: Hailo Technologies Ltd. Hailo-8
If you get nothing, power off, reseat both connections, and try again. No sane error messages; it either shows up or it doesn’t.
Next, grab the Hailo runtime and dev packages from Hailo’s repository. This is where the instructions get scattered across different docs, and I always end up cross-referencing three pages.
curl https://hailo-public-repo.s3.eu-west-1.amazonaws.com/common/hailo-rpi5-setup.sh | bash
This script adds Hailo’s package repo and installs the runtime, dev tools, and PCIe drivers. It’s reasonably well-behaved — no random sudo calls during install, just sets up the repo and pulls dependencies. Takes about five minutes.
After it finishes:
sudo reboot
Your first inference
Hailo ships with a basic test suite and pre-compiled models. Verify the install by running a quick inference check:
hailortcli fw-info
You’ll see firmware version and device info. If this works, the driver stack is solid.
Now run a real example. Hailo includes a Python demo that does object detection on a webcam or image file:
pip3 install hailo-sdk-common
The SDK includes pre-built models for common tasks. Download one and test it:
python3 -m hailo_sdk_common.examples.detection --input image.jpg
If you don’t have an image handy, grab one from somewhere or use /dev/video0 if you have a camera attached. The output will show detected objects, confidence scores, and execution time. That’s your proof the accelerator is doing actual work.
Integrating with Frigate (or whatever else you’re running)
Most people want this for Frigate NVR. The integration is built-in. You need to mount the Hailo device into your container and tell Frigate which detector to use.
If you’re running Frigate in Docker, your compose file needs device access:
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:0.13.2
devices:
- /dev/hailo0:/dev/hailo0
volumes:
- ./config/frigate.yml:/config/config.yml
environment:
- LIBVA_DRIVER_NAME=hailo
And in your Frigate config, specify the detector:
detectors:
hailo:
type: hailo
device_id: 0
Then assign it to your cameras:
cameras:
front_door:
detector:
- hailo
Restart the container. Frigate will load the model and start detecting. Watch the logs — it takes a moment to initialize the first time.
The thing that bites you
There’s a permissions gotcha. The Hailo device sometimes comes up with restrictive permissions, and your container can’t access it. You’ll get a vague error about device not found. The fix is to create a udev rule:
echo 'SUBSYSTEMS=="pci", ATTRS{vendor}=="1e60", MODE="0666"' | sudo tee /etc/udev/rules.d/99-hailo.rules
Then reload:
sudo udevadm control --reload-rules
sudo udevadm trigger
After that, /dev/hailo0 should be readable by any user in the video group. I didn’t do this initially and spent twenty minutes convinced the module wasn’t loading properly.
What to do next
Once inference is working reliably, experiment with different models. Hailo’s model zoo has pre-compiled versions for various tasks. If you want custom models, you’ll need to run them through Hailo’s compiler, which requires their cloud service (no local compilation option yet). That’s a limitation worth knowing about upfront if you’re building anything proprietary.
The accelerator is genuinely stable once it’s up. I’ve had it running continuously for three weeks without crashes or thermal issues. CPU load dropped from 80% to roughly 10% on my Frigate instance, which freed capacity for other services on the same Pi.
If you’re considering this mainly for Frigate or Home Assistant automations, it’ll work. Just budget time for the driver install and expect to look up the permissions thing at least once.
Explore Hailo-8L in our AI Homelab Toolkit.
Recommended Hardware & Hosting
Build your homelab with hardware tested and used by our team.
Affiliate links — we may earn a small commission at no extra cost to you.