Raspberry Pi · Hardware · AI · 40 TOPS

Hailo-10H AI HAT+ 2
on RPi 5

The Hailo-10H triples the original AI HAT+ throughput — 40 TOPS of edge NPU on a Pi 5. This is the real setup: PCIe config, the right packages, camera pipelines, and what actually changed from the Hailo-8L.

⏱ 30–45 min 📊 Intermediate 📅 May 2026 🧠 40 TOPS

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.

What You'll Need

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

bash
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
# Enable PCIe Gen 3 for AI HAT+ 2
# Add at end of file (dtparam=pciex1 may already be present)
dtparam=pciex1_gen=3
bash
sudo nano /boot/firmware/config.txt
# Add: dtparam=pciex1_gen=3
# Save and exit, then:
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
bash
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

bash
# Confirm HailoRT runtime version
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
# Confirm PCIe Gen 3 link is active
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

bash
git clone https://github.com/hailo-ai/hailo-rpi5-examples.git
cd hailo-rpi5-examples
pip install -r requirements.txt
# Download models — the script auto-detects your Hailo architecture
./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

bash
# Object detection (YOLOv8s — 640x640)
python basic_pipelines/detection.py --input resources/detection0.mp4
Hailo-10H device opened
FPS: 512 | Latency: 1.95ms
# Pose estimation
python basic_pipelines/pose_estimation.py --input resources/detection0.mp4
# Instance segmentation
python basic_pipelines/instance_segmentation.py --input resources/detection0.mp4
# Live camera (requires USB cam or RPi Camera Module)
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

bash
sudo apt install rpicam-apps
# Check available hailo post-process descriptors
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
# Live YOLOv8 object detection on camera stream
rpicam-hello -t 0 --post-process-file /usr/share/rpi-camera-assets/hailo_yolov8_inference.json --lores-width 640 --lores-height 640
# Pose estimation on camera
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:

bash
# Multi-stream detection across 2 video sources
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.

Did this guide help?

Your answers shape what we write next.

Related Guides

Join the conversation.

Running a different pipeline? Hit a different error? Let's figure it out.