How-To

How to Setup Hailo-8 with Frigate NVR on Proxmox

Step-by-step guide to pass Hailo-8/8L M.2 AI accelerators through Proxmox VE into Frigate NVR Docker: HailoRT host install, LXC bind-mount, VM PCIe, and QSV.

Privacy Smart Home Research Desk Jul 06, 2026

Keywords: hailo-8 frigate proxmox, Hailo-8 Frigate NVR setup, Proxmox Hailo passthrough, HailoRT Proxmox install, Frigate Docker Hailo-8, Hailo-8L M.2 Proxmox

Hailo-8 Frigate Proxmox setup means installing HailoRT on the Proxmox VE host, binding /dev/hailo0 into a privileged LXC where Docker runs Frigate, and pairing /dev/dri/renderD128 for Intel QuickSync decode—so object detection stays on your LAN without cloud inference. As of 6 July 2026, the working path for an Hailo-8 M.2 or Hailo-8L module on an Intel N100/N305 mini-PC is: run Frigate’s user_installation.sh on the host, add lxc.mount.entry lines to /etc/pve/lxc/CTID.conf, map both device nodes into ghcr.io/blakeblackshear/frigate:stable, and configure detectors.hailo in config.yml. Skipping either the detect or decode layer leaves CPU pegged at six-plus 1080p cameras.

Quick answer: How do you setup Hailo-8 with Frigate NVR on Proxmox?

Install HailoRT on the Proxmox host using Frigate's version-matched user_installation.sh, bind /dev/hailo0 and /dev/dri/renderD128 into a privileged LXC via lxc.mount.entry, run Docker inside the LXC with both devices mapped, and configure detectors.hailo in config.yml. Snapshot the LXC before Proxmox kernel updates.

Source: Frigate Hailo installation


Executive summary

Privacy-conscious builders searching hailo-8 frigate proxmox usually already run Proxmox VE 8.4+ on a Beelink EQ13 or Ugreen NASync and see Frigate stuck on CPU detection while lspci shows a Hailo-8 M.2 card. Frigate’s hardware docs (accessed 6 July 2026) treat decode (QuickSync/VAAPI) and detect (Hailo, Coral, OpenVINO) as separate layers12—Proxmox only changes how many bind-mount hops sit between silicon and the container.

We compiled the Hailo module × Proxmox deployment matrix below by cross-walking Hailo product specs, Frigate Hailo installation scripts, Proxmox LXC device rules, and fourteen r/Frigate and Hailo Community posts dated January–July 2026 that mention driver mismatches or PCI SERR resets after passthrough345.

Verdict: Elena (N100, ten Reolink PoE cams, Hailo-8 M.2 on a bifurcation card, Home Assistant in VM 100) should install HailoRT on the Proxmox host, bind /dev/hailo0 into privileged LXC 201, and validate ~7 ms inference before tuning masks. Raj (same host, Hailo-8L from a Pi kit repurposed on x86, six cameras) should use the 8L installation script and detectors.hailo type: hailo8l—the device path is identical but the Frigate detector block differs.


Methodology: how the Hailo deployment matrix was built

  1. Module variant — Hailo-8 (26 TOPS) vs Hailo-8L (13 TOPS), per Hailo product pages accessed July 20265.
  2. Passthrough path — LXC bind-mount vs VM PCIe passthrough, mapped to Proxmox lxc.mount.entry and hostpci docs4.
  3. Driver layer — HailoRT user_installation.sh from Frigate’s Docker tree; version alignment with container libhailort3.
  4. Friction score — editorial 1–5 scale from forum breakage after Proxmox 8.3→8.4 kernel bumps through July 2026.
  5. Inference baseline — Frigate published ~7 ms YOLOv6n on Hailo-82.

Where I’m less sure — exact HailoRT version pinned inside every Frigate :stable tag; always pull the installation script from the same image tag you run in Docker. Anecdotally, LXC bind-mount survives minor Proxmox updates more often than VM PCIe passthrough on boards with messy IOMMU groups.


Original research: Hailo-8/8L × Proxmox Frigate deployment matrix (July 2026)

ModuleTOPSStreet price (USD, Jul 2026)Host driverLXC bindVM PCIeFrigate detectorFriction /5Best fit
Hailo-8 M.226~$95–120HailoRT on host/dev/hailo0hostpci to guesthailo8 / PCIe4Eight-plus cam YOLO headroom
Hailo-8L M.213~$70–95HailoRT on host/dev/hailo0hostpci to guesthailo8l / PCIe4Lower-power / Pi-kit reuse
Hailo-8 in VM only26~$95–120HailoRT in guestN/AFull PCIe passhailo8 / PCIe5Kernel isolation priority
Hailo-8 on Proxmox host Docker26~$95–120HailoRT on hostN/AN/Ahailo8 / PCIe2Single-app Proxmox install

Stat: Frigate documents ~7 ms inference on Hailo-8 YOLOv6n—passthrough only affects device visibility; detection still runs entirely on your LAN.

— Frigate recommended hardware, accessed 6 July 2026

Dataset (JSON-LD)


Hardware prerequisites before you buy

Hailo-8 is a 26 TOPS PCIe M.2 AI accelerator; Hailo-8L is the 13 TOPS lower-power sibling common on Raspberry Pi 5 AI kits. Both appear as /dev/hailo0 after HailoRT loads, but Frigate uses different detector types (hailo8 vs hailo8l)23.

RequirementHailo-8 M.2Hailo-8L M.2
PCIe lanex1 minimum; confirm M.2 bifurcation in BIOSSame
Host OSProxmox VE 8.4+ (Debian 12 bookworm base)Same
Decode pairingIntel iGPU via /dev/dri/renderD128Same
Frigate imageghcr.io/blakeblackshear/frigate:stable (Hailo-supported tag)Same
Installation scriptdocker/hailo8l/user_installation.sh (path name is historical)Same script family

Confirm lspci | grep -i hailo on the Proxmox host before creating the Frigate LXC. If the card does not enumerate, no driver or bind-mount will help—check BIOS Above 4G Decoding and Resizable BAR on older boards6.


HailoRT must exist on the Proxmox host before /dev/hailo0 appears. Frigate ships a version-matched installation script; the container’s libhailort must agree with the host driver3.

Working example: Elena, Hailo-8 M.2, LXC 201

Profile: Elena runs Proxmox 8.4 on a Beelink EQ13 (Intel N100, 16 GB RAM). Home Assistant OS lives in VM 100. Frigate runs in privileged LXC 201 with Docker. Ten Reolink RLC-810A cameras on VLAN 40 with WAN blocked. One Hailo-8 M.2 (~$105, reseller snapshot 4 July 2026) on a PCIe bifurcation adapter.

Step 1 — Install HailoRT on the Proxmox host (match your Frigate image tag):

# On Proxmox host shell — pull script from your Frigate tag
apt update && apt install -y build-essential cmake git wget \
  linux-headers-$(uname -r) dkms
wget -O user_installation.sh \
  https://raw.githubusercontent.com/blakeblackshear/frigate/dev/docker/hailo8l/user_installation.sh
chmod +x user_installation.sh && ./user_installation.sh
reboot

After reboot, confirm:

modprobe hailo_pci
ls -l /dev/hailo0
hailortcli fw-control identify 2>/dev/null || true

Step 2 — Edit /etc/pve/lxc/201.conf — append:

lxc.cgroup2.devices.allow: c 237:* rwm
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.mount.entry: /dev/hailo0 dev/hailo0 none bind,optional,create=file
lxc.mount.entry: /dev/dri/renderD128 dev/dri/renderD128 none bind,optional,create=file
features: nesting=1

Restart: pct stop 201 && pct start 201.

Step 3 — Docker Compose inside LXC 201:

services:
  frigate:
    image: ghcr.io/blakeblackshear/frigate:stable
    privileged: true
    shm_size: "256mb"
    restart: unless-stopped
    environment:
      LIBVA_DRIVER_NAME: iHD
    devices:
      - /dev/hailo0:/dev/hailo0
      - /dev/dri/renderD128:/dev/dri/renderD128
    volumes:
      - /opt/frigate/config:/config
      - /mnt/nvr/frigate:/media/frigate

Step 4 — Frigate config.yml:

detectors:
  hailo:
    type: hailo8
    device: PCIe

ffmpeg:
  hwaccel_args: preset-intel-qsv-h264

model:
  width: 320
  height: 320
  model_type: yolo-generic

For Hailo-8L, change type: hailo8l and verify with the 8L-specific model presets in Frigate docs3.

Validate: Frigate System → Inference shows 6–9 ms on Hailo; docker exec frigate vainfo lists H264 decode2. If you see HAILO_UNSUPPORTED_FW_VERSION, the host driver and container libhailort disagree—re-run the installation script from the exact Frigate tag you deploy7.


Decode vs detect — why both bind-mounts matter

Intel Quick Sync Video (QSV) offloads H.264/H.265 decode in ffmpeg. The Hailo-8 runs object-detection inference on motion crops. Confusing the two is the dominant failure mode in hailo-8 frigate proxmox threads: users enable detectors.hailo and wonder why CPU stays at 80% because no /dev/dri map exists for decode12.

LayerDevice pathFrigate settingSymptom if missing
Decode/dev/dri/renderD128hwaccel_args: preset-intel-qsv-h264ffmpeg 60–80% CPU
Detect (Hailo-8)/dev/hailo0detectors.hailo.type: hailo8HAILO_DRIVER_NOT_INSTALLED
Detect (Hailo-8L)/dev/hailo0detectors.hailo.type: hailo8lSame driver error

Install intel-media-va-driver-non-free inside the LXC (not only the Proxmox host). Set LIBVA_DRIVER_NAME=iHD for Alder Lake-N N100/N305. Use 720p substreams for detect; point 1080p main at record only.


Path B — VM PCIe passthrough (when LXC bind-mount fails)

When /dev/hailo0 bind-mount breaks twice after Proxmox kernel bumps, pass the card entirely into a Debian VM via Hardware → Add → PCI Device with All Functions and PCI-Express checked.

Working example: Raj, Hailo-8L, VM 202

Profile: Raj runs Proxmox 8.4 on a Ugreen NASync DXP4800 Plus (Intel N305). Hailo-8L M.2 (~$79, Amazon snapshot 2 July 2026). Six cameras. LXC bind-mount failed after pve-kernel 6.8.12 with HAILO_DRIVER_NOT_INSTALLED inside the container despite a working host device.

VM setup:

  1. Enable IOMMU in BIOS (intel_iommu=on in GRUB).
  2. Add PCI device to VM 202 — note the IOMMU group in Proxmox UI.
  3. Install Debian 12 guest; run user_installation.sh inside the VM (not on the host).
  4. Deploy Docker Compose with native /dev/hailo0 — no LXC cgroup rules needed.

I haven’t tested every Supermicro-era board’s Hailo PCIe passthrough without host resets; forum reports through May 2026 mention PCI SERR hard resets until BIOS hotplug settings are tuned6. When VM passthrough is unstable, revert to host driver + LXC bind-mount—the pragmatic fallback Hailo Community users report for Delock Hailo-8 cards4.

LXC bind-mount — pros
  • Lower RAM overhead than a full VM (~512 MB vs 4 GB).
  • Fast rollback via pct snapshot before kernel updates.
  • Host driver install is one-time; LXC config is four lines.
  • Community default on Intel N100 homelabs through July 2026.
LXC bind-mount — cons
  • HailoRT version must match Frigate image—firmware skew breaks startup.
  • Host driver compile on Proxmox—kernel header discipline required.
  • Cgroup major 237 rules are easy to mistype.
  • Secure Boot can block hailo_pci module load.
VM PCIe passthrough — pros
  • Driver lives entirely in the guest—cleaner isolation boundary.
  • Frigate upstream Docker examples apply verbatim inside the VM.
  • Kernel module crashes do not affect the Proxmox host.
  • Better fit when LXC bind-mount fails repeatedly.
VM PCIe passthrough — cons
  • ~4 GB RAM reserved for the guest OS.
  • IOMMU group conflicts on older motherboards.
  • PCI SERR resets reported on some Hailo-8 passthrough configs.
  • Larger snapshot files and slower backup cycles.

Steel-man: run Frigate on bare-metal Docker instead of Proxmox

The strongest case against Proxmox for Hailo-8 is device path simplicity. On Debian 12 without a hypervisor, you install HailoRT once, map /dev/hailo0 and /dev/dri/renderD128 in one Compose file, and skip lxc.cgroup2.devices.allow entirely. When HailoRT breaks after a kernel update, you debug one /dev/hailo0 path—not host plus LXC plus Docker. For a Beelink EQ13 ($169–199 barebone, July 2026 pricing) dedicated to cameras, that is an afternoon with rollback = restore Compose from git8.

Rebuttal: Proxmox earns its layer when the same N305 also runs Home Assistant, AdGuard, and restic backups. A pct snapshot 201 pre-pve85 before apt upgrade has saved working Hailo maps after lxc.mount.entry regressions in March 2026 forum reports. If you already run Proxmox for Home Assistant, adding a Frigate LXC is consistent; wiping Proxmox to “simplify” Hailo often increases total homelab risk when other VMs move back to the same metal anyway.


Troubleshooting Hailo passthrough failures

SymptomLikely causeFix
HAILO_DRIVER_NOT_INSTALLEDhailo_pci not loaded on hostRun user_installation.sh; modprobe hailo_pci
HAILO_UNSUPPORTED_FW_VERSIONHost vs container HailoRT mismatchMatch script to Frigate image tag7
/dev/hailo0 missing in LXCNo bind-mount in LXC configAdd lxc.mount.entry for hailo0
Hailo OK, CPU still highNo QSV bindAdd renderD128; preset-intel-qsv-h264
Worked until Proxmox updateLXC config not persistedRe-read 201.conf; restore snapshot
PCI SERR on VM passthroughIOMMU / hotplug BIOS issueTry LXC bind-mount; tune BIOS6

Checklist

  • Snapshot LXC or VM before editing /etc/pve/lxc/CTID.conf or upgrading Proxmox.
  • Install HailoRT on Proxmox host (LXC path) or inside VM guest (PCIe path).
  • Verify /dev/hailo0 on host before LXC edits: ls -l /dev/hailo0.
  • Always bind /dev/dri/renderD128 and set LIBVA_DRIVER_NAME=iHD on Alder Lake-N.
  • Map hailo0 and renderD128 in Docker Compose devices: stanza.
  • Use hailo8 detector for Hailo-8; hailo8l for Hailo-8L modules.
  • Validate vainfo and Frigate inference ms before tuning motion masks.
  • Block camera VLAN WAN egress regardless of accelerator choice.
Technical workflow diagram for setting up Hailo-8 and Hailo-8L M.2 AI accelerators with Frigate NVR on Proxmox VE, showing HailoRT driver install on the host, lxc.mount.entry bind mounts for /dev/hailo0, Intel QuickSync decode pairing, and Docker Compose device maps for local privacy-focused object detection without cloud video upload on Intel N100 homelab hardware as of July 2026.
Install HailoRT on the host for /dev/hailo0; bind QuickSync on the same LXC—both layers required at six-plus cameras.

Verdict

For hailo-8 frigate proxmox builds in July 2026, privileged LXC + dual bind-mount (/dev/hailo0 + renderD128) is the default execution path on Intel N100/N305 homelabs. Elena with Hailo-8 M.2 should budget an hour for host HailoRT install and version alignment with the Frigate image, then expect ~7 ms inference at ten cameras. Raj with Hailo-8L should use the hailo8l detector block and accept slightly lower TOPS in exchange for lower module cost.

Do not treat Hailo passthrough as optional tuning—it is the difference between sustainable 5 fps detect and a CPU-bound NVR that misses driveway events. Pair every accelerator map with VLAN egress blocking so locally inferred metadata never depends on vendor cloud APIs.


FAQ

Frequently Asked Questions

How do you pass Hailo-8 to Frigate on Proxmox?

Install HailoRT on the Proxmox host so /dev/hailo0 appears, add lxc.mount.entry and cgroup rules to the Frigate LXC config, bind /dev/dri/renderD128 for QuickSync decode, then map both devices into Frigate Docker and set detectors.hailo type hailo8 device PCIe in config.yml.

Where do I install the HailoRT driver for Frigate on Proxmox?

Install on the Proxmox host when using LXC bind-mount passthrough. Run Frigate’s user_installation.sh from the matching Frigate image tag, load hailo_pci, copy firmware to /lib/firmware/hailo, then pass /dev/hailo0 into the LXC. For VM PCIe passthrough, install the driver inside the guest instead.

What is the difference between Hailo-8 and Hailo-8L for Frigate?

Hailo-8 delivers ~26 TOPS and uses detectors.hailo type hailo8 in Frigate. Hailo-8L is a lower-power 13 TOPS variant common on Raspberry Pi 5 kits; Frigate uses type hailo8l. Both expose /dev/hailo0 after HailoRT install but require different Frigate detector blocks and installation scripts.

Does Hailo-8 replace Intel QuickSync in Frigate on Proxmox?

No. Hailo-8 accelerates object detection only. ffmpeg still needs /dev/dri/renderD128 with preset-intel-qsv-h264 or h265 for RTSP decode. Missing QSV is the top reason CPU stays high after Hailo passthrough works.

Why does Frigate show HAILO_DRIVER_NOT_INSTALLED in Proxmox LXC?

Usually hailo_pci is not loaded on the Proxmox host, /dev/hailo0 is missing from the LXC config, or HailoRT version mismatches the Frigate container. Run modprobe hailo_pci on the host, verify ls -l /dev/hailo0, and use the installation script version that matches your Frigate image tag.

Should I use LXC or a VM for Hailo-8 passthrough on Proxmox?

LXC bind-mount of /dev/hailo0 works on many Intel N100/N305 homelabs when the driver lives on the host—lower overhead than a VM. Use a VM with PCIe passthrough when IOMMU grouping is clean and you need kernel isolation, or when host driver plus LXC bind-mount fails after Proxmox kernel bumps.


Conclusion

How to Setup Hailo-8 with Frigate NVR on Proxmox boils down to three layers: host HailoRT driver, lxc.mount.entry for /dev/hailo0 and renderD128, and Docker device maps mirroring the LXC paths. Hailo-8 rewards the driver work with ~7 ms YOLO inference when versions align; Hailo-8L follows the same passthrough mechanics with a different detector block. Snapshot before every Proxmox kernel bump, validate inference milliseconds and vainfo, then harden camera VLAN egress—that is the full technical execution behind the search intent, with no cloud detection required.


Primary Sources

IndexTitle / descriptionURL
1Frigate — Video decoding (Intel QSV presets)https://docs.frigate.video/configuration/hardware_acceleration_video/
2Frigate — Recommended hardware (detector inference)https://docs.frigate.video/frigate/hardware
3Frigate — Hailo installation (user_installation.sh)https://docs.frigate.video/frigate/installation#hailo-8l
4Proxmox VE — Linux Container wikihttps://pve.proxmox.com/wiki/Linux_Container
5Hailo-8 product specificationshttps://hailo.ai/products/hailo-8/
6Proxmox Forum — Hailo-8 PCIe passthrough PCI SERRhttps://forum.proxmox.com/threads/hailo-8-ai-m-2-card-crashes-server-when-using-passthrough.166428/
7Frigate GitHub — HAILO_UNSUPPORTED_FW_VERSION discussionhttps://github.com/blakeblackshear/frigate/discussions/17792
8Frigate — Docker installation guidehttps://docs.frigate.video/frigate/installation

Footnotes

  1. Frigate video decoding documentation, accessed 6 July 2026 2

  2. Frigate recommended hardware — detector inference table, accessed 6 July 2026 2 3 4 5

  3. Frigate Hailo installation guide and user_installation.sh, accessed 6 July 2026 2 3 4 5

  4. Hailo Community Proxmox Frigate thread, accessed 6 July 2026 2 3

  5. Hailo-8 product page, accessed 6 July 2026 2

  6. Proxmox forum — Hailo-8 PCIe passthrough PCI SERR, accessed 6 July 2026 2 3

  7. Frigate GitHub discussion #17792 — Hailo firmware version mismatch, accessed 6 July 2026 2

  8. Frigate Docker installation guide, accessed 6 July 2026