Why the Hailo-10H?
The AI HAT+ 2 (Hailo-10H) is Raspberry Pi's second-generation AI accelerator HAT. Compared to the original AI HAT+ (Hailo-8L, 13 TOPS), the Hailo-10H delivers 40 TOPS — enough to run larger models at real frame rates or stack multiple inference pipelines simultaneously on a single Pi 5.
| Spec |
AI HAT+ (Hailo-8L) |
AI HAT+ 2 (Hailo-10H) |
| Chip |
Hailo-8L |
Hailo-10H |
| TOPS |
13 |
40 |
| Form Factor |
HAT+ |
HAT+ |
| Interface |
PCIe Gen 2/3 |
PCIe Gen 3 |
| HEF Compatibility |
Hailo-8L .hef only |
Hailo-10H .hef only |
| Runtime |
HailoRT 5.3.0 |
HailoRT 5.3.0 |
| YOLOv8s FPS |
~180 |
~500+ |
Model Compatibility Warning
Hailo-compiled model files (.hef) are not cross-compatible between chips. Hailo-8L .hef files will not load on a Hailo-10H and vice versa. If you're upgrading from an AI Kit or AI HAT+ (Hailo-8L), you need Hailo-10H compiled variants from the Hailo Model Zoo or the hailo-rpi5-examples repo. Check the repo's model download scripts — they auto-select the correct architecture.
Phase 1 — System Update
Start from a fully updated OS. The Hailo packages in the RPi repository track the firmware, so running on a stale system can cause version mismatches:
// system prep
sudo apt update && sudo apt full-upgrade -y
Reading package lists... Done
Calculating upgrade... Done
...
Upgrade complete
sudo reboot
Phase 2 — PCIe Gen 3 Configuration
The AI HAT+ 2 communicates via PCIe. Unlike the M.2 AI Kit, the AI HAT+ 2 uses the HAT+ PCIe interface which is usually enabled by default in recent RPi OS firmware — but Gen 3 speed still needs to be opted into explicitly for full throughput:
// /boot/firmware/config.txt
/boot/firmware/config.txt
sudo nano /boot/firmware/config.txt
sudo reboot
Phase 3 — Install the Hailo Stack
The hailo-h10-all meta-package in the RPi OS repository handles all components. As of recent RPi OS updates, it detects the Hailo device architecture automatically and installs the correct firmware and libraries:
// hailo-h10-all — what gets installed
- hailort — Runtime library +
hailortcli command-line tool
- hailort-pcie-driver — Kernel module (dkms, builds for your kernel version)
- hailo-firmware — On-chip firmware loaded at device init
- python3-hailort — Python bindings for inference scripting
- hailo-tappas-core — GStreamer plugin library for camera pipeline integration
sudo apt update
sudo apt install dkms
sudo apt install hailo-h10-all
Reading package lists... Done
The following NEW packages will be installed:
hailo-h10-all hailort hailort-pcie-driver hailo-firmware
python3-hailort hailo-tappas-core
...
Building kernel module for hailort-pcie-driver ...
Module built and installed
sudo reboot
Phase 4 — Verify the Device
After rebooting, confirm the Hailo-10H is visible and reporting correctly. The device architecture field should read HAILO10H:
// device identification
hailortcli --version
HailoRT-CLI 5.1.1
hailortcli fw-control identify
Identifying board
Control Protocol Version: 2
Firmware Version: 5.1.1 (release,app)
Board Name: Hailo-10
Device Architecture: HAILO10H
Serial Number: HLDDLBB2XXXXXX...
Product Name: HAILO-10H AI ACC HAT+ MODULE
sudo lspci -vvv | grep -A5 Hailo
0001:01:00.0 Co-processor: Hailo Technologies Ltd.
LnkSta: Speed 8GT/s (ok), Width x1 (ok)
8GT/s = PCIe Gen 3 confirmed ✓
What to look for
You want Device Architecture: HAILO10H and Speed 8GT/s for Gen 3. If you see 5GT/s, you're on Gen 2 — check that dtparam=pciex1_gen=3 is saved in config.txt and you've rebooted.
Phase 5 — Hailo-10H Model Downloads
This is the critical step that differs from the Hailo-8L. You need .hef files compiled specifically for the Hailo-10H architecture. The hailo-rpi5-examples repo provides a download script that handles this:
// hailo-rpi5-examples — architecture-aware model fetch
git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
cd hailo-rpi5-examples
pip install -r requirements.txt
./download_resources.sh
Detected device: HAILO10H
Fetching Hailo-10H compiled models...
yolov8s_h10h.hef ... OK
yolov8s_pose_h10h.hef ... OK
yolov8s_seg_h10h.hef ... OK
Models ready for Hailo-10H inference
Don't mix .hef files across chips
If you've used a Hailo-8L before, delete those .hef files before running examples on your Hailo-10H. Loading a Hailo-8L model on a Hailo-10H will fail with a cryptic architecture mismatch error. The architecture is baked into the compiled model binary.
Phase 6 — Run Inference Demos
With Hailo-10H compiled models in place, the examples run identically to the Hailo-8L — just faster:
// detection · pose · segmentation
python basic_pipelines/detection.py --input resources/detection0.mp4
Hailo-10H device opened
FPS: 512 | Latency: 1.95ms
python basic_pipelines/pose_estimation.py --input resources/detection0.mp4
python basic_pipelines/instance_segmentation.py --input resources/detection0.mp4
python basic_pipelines/detection.py --input /dev/video0
Phase 7 — Camera Pipeline with rpicam-apps
The fastest path to live camera inference — no Python needed for the core pipeline. The Hailo-10H works with the same rpicam-apps post-processing descriptors as the Hailo-8L, but you'll see higher FPS:
// rpicam-apps live inference
sudo apt install rpicam-apps
ls /usr/share/rpi-camera-assets/ | grep hailo
hailo_yolov5_personface.json
hailo_yolov6_inference.json
hailo_yolov8_inference.json
hailo_yolov8_pose.json
hailo_yolov8_seg.json
rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.json --lores-width 640 --lores-height 640
rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_pose.json --lores-width 640 --lores-height 640
Phase 8 — Multi-Pipeline Workloads
The Hailo-10H's 40 TOPS headroom opens up workloads that weren't practical on the Hailo-8L. You can run multiple inference tasks in parallel without saturating the NPU:
// running two pipelines simultaneously
The hailo-rpi5-examples multi-stream scripts let you push multiple camera feeds through the same Hailo-10H concurrently:
python basic_pipelines/detection.py \
--input resources/detection0.mp4 \
--input resources/detection1.mp4
Stream 1 — FPS: 250
Stream 2 — FPS: 248
NPU utilization: ~62% (plenty of headroom)
Ollama + Hailo-10H on the same Pi
Like the Hailo-8L, Ollama and the Hailo-10H operate in completely separate runtimes. Ollama runs on the RPi 5's CPU cores for LLM inference; the Hailo NPU handles vision tasks. Both run simultaneously on an 8GB Pi 5 without contention — the NPU doesn't consume system RAM for inference (it has dedicated on-chip memory).
Performance Reference
Hailo-10H on RPi 5, PCIe Gen 3, HailoRT 5.3.0 — NPU-side inference throughput:
| Model |
Task |
Resolution |
Hailo-10H FPS |
vs Hailo-8L |
| YOLOv8s |
Detection |
640×640 |
~500 |
+178% |
| YOLOv8n |
Detection |
640×640 |
~1000+ |
+122% |
| YOLOv8s-pose |
Pose Estimation |
640×640 |
~370 |
+185% |
| YOLOv8s-seg |
Segmentation |
640×640 |
~290 |
+190% |
| ResNet-50 |
Classification |
224×224 |
~1200+ |
+167% |
NPU-side numbers from Hailo published benchmarks. End-to-end throughput including camera capture, pre/post-processing, and display is lower — typically 30–90 FPS depending on pipeline. The bottleneck at high NPU speeds shifts to CPU-side pre/post-processing and PCIe transfer overhead.
Model Compatibility
Quick reference for sourcing Hailo-10H compiled models:
| Source |
Hailo-10H .hef? |
Notes |
| hailo-rpi5-examples download_resources.sh |
yes |
Auto-selects architecture — safest starting point |
| Hailo Model Zoo (GitHub) |
yes |
Check releases for hailo10h-specific .hef packages |
| Hailo Developer Zone |
yes |
Full model catalog, requires free account |
| Hailo-8L .hef files (existing) |
no |
Architecture mismatch — will fail to load |
| Custom ONNX → Hailo Dataflow Compiler |
compile req'd |
Target hailo10 architecture in compiler flags |
Troubleshooting
// common issues — Hailo-10H specific
-
Architecture mismatch when loading model
You're loading a Hailo-8L .hef on a Hailo-10H. Re-run download_resources.sh — it will pull the correct architecture. Or delete old .hef files from resources/ and re-download.
-
hailortcli shows HAILO8L, not HAILO10H
Firmware may not have loaded the Hailo-10H profile. Run sudo apt reinstall hailo-firmware and reboot. If still wrong, check the physical HAT is seated fully on the GPIO header.
-
PCIe shows 5GT/s instead of 8GT/s
Gen 3 not active. Verify dtparam=pciex1_gen=3 is saved in /boot/firmware/config.txt and that you've rebooted after the change. Run sudo lspci -vvv | grep LnkSta to confirm.
-
hailo-h10-all installed but hailortcli not found
Log out and back in to reload your PATH, or run hash -r. The CLI binary installs to /usr/bin/hailortcli.
-
Permission denied accessing /dev/hailo0
Add yourself to the hailo group: sudo usermod -aG hailo $USER, then log out and back in.
-
Thermal throttling / FPS drops under sustained load
The Hailo-10H runs hotter than the Hailo-8L at full throughput. Ensure active cooling is in contact with the HAT heatsink. Check temperature with hailortcli monitor — aim to keep below 75°C for sustained inference.
Quick feedback
Did this guide help?
Your answers shape what we write next.
Related Guides