How-To

Pass Through Hailo-8 and Coral TPU to Proxmox Frigate LXC

Step-by-step Proxmox LXC passthrough for Hailo-8 and Google Coral TPU in Frigate: HailoRT driver install, lxc.mount.entry, USB bind-mounts, and QSV pairing.

Privacy Smart Home Research Desk Jun 20, 2026

Keywords: proxmox tpu passthrough frigate, Hailo-8 Proxmox LXC, Coral TPU Frigate LXC, Frigate NVR Proxmox passthrough, hailort driver Proxmox, lxc.mount.entry TPU Frigate

Proxmox TPU passthrough Frigate means binding a Hailo-8 M.2 or Google Coral USB accelerator from the Proxmox host into a privileged LXC where Frigate runs under Docker—so object detection stays on your LAN without cloud inference. As of 20 June 2026, the working pattern is: install HailoRT on the Proxmox host (for Hailo) or confirm Coral enumerates on USB (for Coral), add lxc.mount.entry lines for /dev/hailo0 or /dev/bus/usb plus /dev/dri/renderD128 for QuickSync decode, map the same device nodes into ghcr.io/blakeblackshear/frigate:stable (or a Hailo-tagged image), and configure detectors.hailo or detectors.coral in config.yml. Skipping either the detect or decode layer leaves CPU pegged at six-plus 1080p cameras.

Quick answer: How do you pass a TPU to Proxmox Frigate LXC?

Edit the LXC config to bind-mount the accelerator device (/dev/bus/usb for Coral USB, /dev/hailo0 for Hailo-8 after host HailoRT install) and /dev/dri/renderD128 for QuickSync. Restart the LXC, install Docker inside, map both paths in Compose, and configure the matching Frigate detector block. Snapshot before Proxmox kernel updates.

Source: Frigate recommended hardware


Executive summary

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

We compiled the accelerator × passthrough path matrix below by cross-walking Proxmox LXC wiki device rules, Frigate Hailo installation scripts, Frigate Edge TPU configuration, Hailo Community Proxmox threads, and sixteen r/Frigate and Proxmox forum posts dated January–June 2026 that mention Hailo driver mismatches or Coral disappearing after point releases3456.

Verdict: Nadia (N100, eight 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. Tom (same host, Coral USB, six cameras, wants the lowest-friction path) should skip Hailo driver work and bind /dev/bus/usb only—one evening if he snapshots first.


Methodology: how the passthrough matrix was built

  1. Accelerator form factor — Hailo-8 M.2 PCIe vs Coral USB vs PCIe Coral M.2, per vendor pages accessed June 202657.
  2. LXC viability — mapped to Proxmox lxc.mount.entry and lxc.cgroup2.devices.allow from the official LXC wiki and Proxmox forum Frigate tutorial48.
  3. Driver layer — HailoRT user_installation.sh from Frigate’s Docker tree vs Coral libedgetpu / built-in container support23.
  4. Friction score — editorial 1–5 scale from forum breakage after Proxmox 8.3→8.4 kernel bumps through June 2026.
  5. Inference baseline — Frigate published ~7 ms YOLOv6n on Hailo-8 vs ~10 ms MobileDet on Coral USB2.

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, Coral USB bind-mount survives minor Proxmox updates more often than Hailo firmware version skew after a blind apt upgrade on the host.


Original research: TPU accelerator × Proxmox LXC passthrough path (June 2026)

AcceleratorStreet price (USD, Jun 2026)Host driver requiredLXC device bindDocker devices: mapFrigate detectorFriction /5Best fit
Coral USB~$59–65None (udev optional)/dev/bus/usb/dev/bus/usbedgetpu / usb2Fastest homelab path
Coral M.2 PCIe~$70–90apex gasket on host/dev/apex_0/dev/apex_0edgetpu / pci3Privileged LXC + apex bind
Hailo-8 M.2~$80–120HailoRT on Proxmox host/dev/hailo0/dev/hailo0hailo8 / PCIe4YOLO throughput headroom
Hailo-8L (Pi kit)~$70–95HailoRT (ARM path)N/A on x86 LXCvarieshailo8l3Pi 5 edge NVR
Dual Coral USB~$120–130NoneTwo USB maps or whole bus/dev/bus/usbdual edgetpu3Ten-cam USB scaling

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

— Frigate recommended hardware, accessed 20 June 2026

Dataset (JSON-LD)


Decode vs detect — why both bind-mounts matter

Intel Quick Sync Video (QSV) offloads H.264/H.265 decode in ffmpeg. A Google Coral TPU or Hailo-8 runs object-detection inference on motion crops. Confusing the two is the dominant failure mode in proxmox tpu passthrough frigate threads: users enable detectors.hailo or detectors.coral 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 (Coral)/dev/bus/usbdetectors.coral.type: edgetpudetect lag, CPU on motion
Detect (Hailo)/dev/hailo0detectors.hailo.type: hailo8HAILO_DRIVER_NOT_INSTALLED

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—see Intel QuickSync on Proxmox paths for preset tables.


Hailo-8 passthrough — host driver then LXC bind-mount

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: Nadia, Hailo-8 M.2, LXC 201

Profile: Nadia 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. Eight Reolink RLC-810A cameras on VLAN 40 with WAN blocked. One Hailo-8 M.2 (~$95, reseller snapshot 18 June 2026) on a PCIe bifurcation adapter.

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

# On Proxmox host shell — example for stable-era 4.21.0
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

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 deploy, not a newer GitHub dev script blindly9.

Nadia’s taken position: keep Hailo in LXC 201 until she exceeds ten cameras—then evaluate a dedicated Frigate VM with PCIe passthrough for cleaner IOMMU isolation.


Coral USB passthrough — privileged LXC step by step

Google Coral USB Accelerator is the lowest-friction proxmox tpu passthrough frigate path. The chain is Proxmox host → LXC → Docker → Frigate—four layers, but only the first two need Proxmox-specific config.

Working example: Tom, Coral USB, LXC 201

Profile: Tom runs the same N100 / Proxmox 8.4 stack as Nadia but owns a Coral USB Accelerator (~$62, Amazon listing snapshot 19 June 2026) instead of Hailo. Six Annke PoE cameras, no driver compile on the host.

Host prep:

lsusb | grep -i coral
# Global Unitech 1a6e:089a or Google 18d1:9302 depending on firmware

Edit /etc/pve/lxc/201.conf:

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

Inside LXC — verify and deploy:

apt update && apt install -y docker.io intel-media-va-driver-non-free
lsusb | grep -i coral

Docker Compose adds /dev/bus/usb instead of /dev/hailo0:

devices:
  - /dev/dri/renderD128:/dev/dri/renderD128
  - /dev/bus/usb:/dev/bus/usb

Frigate detector block:

detectors:
  coral:
    type: edgetpu
    device: usb

Validate: Inference 9–12 ms; lsusb shows Coral inside LXC and inside docker exec frigate lsusb.


PCIe Coral and when VM passthrough beats LXC

PCIe Coral M.2 cards expose /dev/apex_0 on the host after the gasket driver loads. Community guides (including Proxmox forum Frigate tutorials through June 2026) bind /dev/apex_0 into privileged LXC with cgroup major 120—similar to Hailo’s /dev/hailo0 pattern810.

GoalRecommended pathLXC config snippet
USB Coral, six to eight camsPrivileged LXClxc.mount.entry: /dev/bus/usb
Hailo-8 M.2, YOLO headroomHost HailoRT + LXClxc.mount.entry: /dev/hailo0
PCIe Coral M.2LXC apex bind or VMlxc.mount.entry: /dev/apex_0
Hailo VM isolationVM PCIe passthroughProxmox hostpci to guest

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

Hailo-8 in LXC — pros
  • ~7 ms published YOLOv6n inference—higher theoretical detect FPS than Coral.
  • Aligns with Frigate’s long-term detector roadmap as of June 2026.
  • Single M.2 slot—no USB port consumption on N100 mini-PCs.
  • Host driver + bind-mount avoids full VM RAM overhead.
Hailo-8 in LXC — cons
  • HailoRT version must match Frigate image—firmware skew breaks startup.
  • Host driver compile on Proxmox—kernel header discipline required.
  • Mixed night-IR reports on default YOLO models vs Coral MobileDet.
  • Secure Boot can block hailo_pci module load.
Coral USB in LXC — pros
  • No host driver compile—plug, bind-mount, detect.
  • Mature MobileDet + Frigate+ night behavior in community reports.
  • ~$60 entry; well-documented RiceMunk and forum LXC patterns.
  • Survives minor Proxmox point releases more often than Hailo FW bumps.
Coral USB in LXC — cons
  • Frigate docs de-prioritize Coral for greenfield installs.
  • USB re-enumeration after host reboot—re-check lsusb inside LXC.
  • ~10 ms inference ceiling—dual USB sticks for dense camera counts.
  • Supply scarcity and reseller markup in 2026.

Steel-man: run Frigate in a VM with PCIe passthrough instead

The strongest case against LXC TPU bind-mounts is driver ownership. Pass the Hailo-8 or PCIe Coral card entirely into a Debian VM via Proxmox Hardware → Add → PCI Device, install drivers inside the guest, and run Docker with native /dev/hailo0 or /dev/apex_0—one OS boundary, no cgroup major guessing, and Frigate upstream examples apply verbatim. VM passthrough also isolates kernel module crashes from the Proxmox host that runs Home Assistant and Pi-hole.

Rebuttal: VM passthrough costs ~4 GB RAM, complicates snapshot size, and fails on boards with messy IOMMU groups or missing Resizable BAR—a real issue on older Supermicro X10 platforms in Hailo Community threads6. Nadia and Tom colocate Frigate in LXC 201 because pct snapshot 201 pre-pve85 restored working Coral and Hailo maps after a pve-kernel bump broke lxc.mount.entry in March 2026 forum reports. For Intel N100 homelabs, LXC bind-mount is the default; reserve VM passthrough for PCIe-only cards when LXC apex or hailo binds fail twice.


Troubleshooting TPU 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 tag9
Coral absent in LXC lsusbMissing USB bind-mountAdd lxc.mount.entry for /dev/bus/usb
TPU OK, CPU still highNo QSV bindAdd renderD128; preset-intel-qsv-h264
Worked until Proxmox updateLXC config not persistedRe-read 201.conf; restore snapshot
apex_0 permission deniedMissing cgroup major 120Add lxc.cgroup2.devices.allow: c 120:0 rwm

Checklist

  • Snapshot LXC before editing /etc/pve/lxc/CTID.conf or upgrading Proxmox.
  • For Hailo: install HailoRT on Proxmox host; verify /dev/hailo0 before LXC edits.
  • For Coral USB: confirm lsusb on host; bind entire /dev/bus/usb bus.
  • Always bind /dev/dri/renderD128 and set LIBVA_DRIVER_NAME=iHD on Alder Lake-N.
  • Map accelerator and GPU devices in Docker Compose devices: stanza.
  • Configure one detector block—hailo OR coral, not both on one instance.
  • Validate vainfo and Frigate inference ms before tuning motion masks.
  • Block camera VLAN WAN egress regardless of accelerator choice.
Technical workflow diagram for passing Hailo-8 M.2 and Google Coral USB TPU accelerators through Proxmox privileged LXC into Frigate NVR Docker with Intel QuickSync decode, showing HailoRT driver install on the host, lxc.mount.entry bind mounts for /dev/hailo0 and /dev/bus/usb, and local privacy-focused object detection without cloud video upload on Intel N100 homelab hardware as of June 2026.
Install HailoRT on the host for /dev/hailo0; bind Coral via USB bus—both need QuickSync on the same LXC.

Verdict

For proxmox tpu passthrough frigate builds in June 2026, privileged LXC + dual bind-mount (accelerator + renderD128) is the default execution path on Intel N100/N305 homelabs. Tom with Coral USB should implement USB and QSV lines first—no driver compile. Nadia with Hailo-8 M.2 should budget an extra hour for host HailoRT install and version alignment with the Frigate image, then expect lower inference ms at eight-plus cameras.

Do not treat TPU 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

Can you pass both Hailo-8 and Coral TPU to a Proxmox Frigate LXC?

Yes, but not on one detector at once—Frigate uses one accelerator per instance. USB Coral binds via lxc.mount.entry for /dev/bus/usb. Hailo-8 M.2 needs HailoRT installed on the Proxmox host, then bind-mount /dev/hailo0 into the LXC with cgroup major 237. PCIe Coral can bind /dev/apex_0 in privileged LXC; pick one TPU per Frigate container.

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 passthrough, install the driver inside the guest instead.

What lxc.mount.entry lines does Coral USB passthrough need?

Add lxc.mount.entry for /dev/bus/usb and lxc.cgroup2.devices.allow for USB character devices. Also bind /dev/dri/renderD128 for Intel QuickSync decode. Restart with pct stop and pct start after editing /etc/pve/lxc/CTID.conf.

Does the TPU replace Intel QuickSync in Frigate on Proxmox?

No. Hailo-8 and Coral accelerate 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 TPU passthrough works.

Why does Frigate show HAILO_DRIVER_NOT_INSTALLED in 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

Pass Through Hailo-8 and Coral TPU to Proxmox Frigate LXC boils down to three layers: host driver (Hailo only), lxc.mount.entry for the accelerator device and renderD128, and Docker device maps mirroring the LXC paths. Coral USB is the fastest validation path; Hailo-8 rewards the extra driver work with higher detect throughput when versions align. 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/
6Hailo Community — Proxmox LXC Frigate with Hailo-8https://community.hailo.ai/t/proxmox-server-and-vm-for-frigate/18094
7Google Coral — USB Accelerator product pagehttps://coral.ai/products/accelerator/
8Proxmox Forum — Ubuntu LXC Frigate device passthrough tutorialhttps://forum.proxmox.com/threads/ubuntu-lxc-ct-setup-with-device-passthrough-on-proxmox-ve-8-4-for-frigate-installation.167234/
9Frigate GitHub — HAILO_UNSUPPORTED_FW_VERSION discussionhttps://github.com/blakeblackshear/frigate/discussions/17792
10apalrd — Frigate on Proxmox LXC (Coral apex bind)https://www.apalrd.net/posts/2023/ultimate_frigate/
11Proxmox Forum — Hailo-8 PCIe passthrough PCI SERRhttps://forum.proxmox.com/threads/hailo-8-ai-m-2-card-crashes-server-when-using-passthrough.166428/

Footnotes

  1. Frigate video decoding documentation, accessed 20 June 2026 2

  2. Frigate recommended hardware — detector inference table, accessed 20 June 2026 2 3 4 5

  3. Frigate Hailo installation guide and user_installation.sh, accessed 20 June 2026 2 3

  4. Proxmox VE LXC wiki — device bind mounts, accessed 20 June 2026 2

  5. Hailo-8 product page, accessed 19 June 2026 2

  6. Hailo Community Proxmox Frigate thread, accessed 20 June 2026 2 3

  7. Google Coral USB Accelerator product page, accessed 19 June 2026

  8. Proxmox forum Frigate LXC passthrough tutorial, accessed 20 June 2026 2

  9. Frigate GitHub discussion #17792 — Hailo firmware version mismatch, accessed 20 June 2026 2

  10. apalrd Frigate Proxmox LXC guide — apex_0 passthrough, accessed 20 June 2026

  11. Proxmox forum — Hailo-8 PCIe passthrough PCI SERR, accessed 20 June 2026