How-To

Proxmox LXC Coral TPU Passthrough for Frigate NVR

Pass Google Coral USB or PCIe TPU into a Proxmox privileged LXC for Frigate NVR: cgroup rules, lxc.mount.entry, QSV pairing, Scrypted notes, and fixes—June 2026.

Privacy Smart Home Research Desk Jun 15, 2026

Keywords: frigate nvr proxmox coral tpu, Proxmox LXC Coral passthrough, Frigate Coral TPU LXC, Google Coral USB Proxmox, Scrypted Proxmox hardware acceleration, lxc.mount.entry Coral Frigate

Frigate NVR Proxmox Coral TPU passthrough means binding the host’s Google Coral USB Accelerator (or routing PCIe Coral through a VM) into a privileged Proxmox LXC where Frigate runs under Docker—without sending detection to the cloud. As of 15 June 2026, the working pattern is: create LXC 201 (or your CTID), add lxc.mount.entry lines for /dev/bus/usb and /dev/dri/renderD128, install Docker inside the LXC, map the same devices into ghcr.io/blakeblackshear/frigate:stable, and set detectors.coral.type: edgetpu with device: usb. Coral handles object detection; Intel QuickSync on the same LXC still handles RTSP decode—skipping either layer leaves CPU pegged.

Quick answer: How do you pass a Coral TPU into Proxmox LXC for Frigate NVR?

Edit the LXC config to bind-mount /dev/bus/usb (and /dev/dri/renderD128 for QuickSync), restart the container, install Docker inside, map both device paths in Compose, and configure detectors.coral with device usb in Frigate config.yml. Snapshot the LXC before Proxmox kernel updates.

Source: Frigate recommended hardware


Executive summary

Privacy-conscious builders searching frigate nvr proxmox coral tpu usually already run Proxmox VE 8.4+ on a Beelink EQ13 or Ugreen NASync and hit the same wall: Frigate logs show CPU detection while a Coral USB blinks on the host. Frigate’s hardware docs (accessed 15 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 the stick and the container.

We compiled the Coral form-factor × passthrough matrix below by cross-walking Proxmox LXC wiki device rules, Frigate Edge TPU configuration, the RiceMunk/frigate-proxmox-script community pattern, and fourteen r/Frigate and Home Assistant threads dated January–June 2026 that mention Coral disappearing after Proxmox point releases345.

Verdict: Elena (N100, six Reolink PoE cams, USB Coral, Home Assistant in VM 100) should use privileged LXC 201 + Docker with USB and renderD128 bind-mounts—one evening if she snapshots first. James (PCIe Coral Dual Edge TPU M.2, ten cameras) should not force LXC; deploy Frigate in a VM with PCIe passthrough or on the Proxmox host Docker layer instead.


Methodology: how the Coral passthrough matrix was built

  1. Form factor — USB stick vs M.2 PCIe vs Dual Edge TPU module, per Google Coral product pages (June 2026)5.
  2. LXC viability — mapped to Proxmox lxc.mount.entry and lxc.cgroup2.devices.allow examples from the official LXC wiki4.
  3. Frigate configdetectors.coral.device values (usb, pci, auto) from Frigate 0.15 hardware docs2.
  4. Friction score — editorial 1–5 scale from forum breakage reports after Proxmox 8.3→8.4 kernel bumps through June 2026.
  5. Inference baseline — Frigate published ~10 ms MobileDet on Coral USB vs ~7 ms Hailo-8 YOLOv6n2.

Where I’m less sure — exact USB major:minor numbers after host reboot on every N100 board; always re-run ls -l /dev/bus/usb/*/ inside the LXC after pct start. Anecdotally, binding the whole USB bus survives reboot better than mapping a single /dev/bus/usb/00X/00Y node that re-enumerates.


Original research: Coral form factor × Proxmox passthrough path (June 2026)

Coral hardwareStreet price (USD, Jun 2026)LXC bind-mountVM PCIe passthroughHost DockerFrigate deviceFriction /5Best fit
USB Accelerator~$59–65Yes/dev/bus/usbUSB filter to VMDirect mapusb2Default homelab
USB Accelerator Mini~$25–35 (limited stock)Yes — same USB busUSB filterDirect mapusb2Low-power N100
M.2 Dual Edge TPU~$70–90No — use VM/hostYes — IOMMU groupNative slotpci / auto4Dense camera count
Dev Board Mini~$79Partial — single USBPossibleUnusualusb3Lab only
Hailo-8 M.2 (alt)~$70–110No — same as PCIe CoralYesM.2 on hostHailo driver4YOLO headroom

Stat: Frigate documents ~10 ms inference on Coral MobileDet—detection stays local on your LAN; passthrough only affects whether the TPU is visible to the container, not where footage is stored.

— Frigate recommended hardware, accessed 15 June 2026

Dataset (JSON-LD)


USB Coral passthrough — privileged LXC step by step

Google Coral USB Accelerator is the form factor most frigate nvr proxmox coral tpu searches assume. The passthrough chain is Proxmox host → LXC → Docker → Frigate process—four layers, but only the first two need Proxmox-specific config.

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. Six Reolink RLC-810A cameras sit on VLAN 40 with WAN blocked6. One Coral USB Accelerator (~$62, Amazon listing snapshot 14 June 2026) and local 30-day retention on a ZFS tank.

Host prep (Proxmox shell):

lsusb | grep -i coral
# Global Unitech USB ID 1a6e:089a or Google 18d1:9302 depending on firmware
ls -l /dev/dri/
# note renderD128 — often c 226:128

Edit /etc/pve/lxc/201.conf — append after the existing lines:

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

Restart: pct stop 201 && pct start 201.

Inside LXC 201:

apt update && apt install -y docker.io intel-media-va-driver-non-free
lsusb | grep -i coral
docker exec frigate ls -l /dev/bus/usb/ 2>/dev/null || true

Docker Compose (same pattern as bare metal, devices explicit):

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

Frigate config.yml detector block:

detectors:
  coral:
    type: edgetpu
    device: usb

ffmpeg:
  hwaccel_args: preset-intel-qsv-h264

Validate: Frigate System → Inference shows 9–12 ms on Coral; docker exec frigate vainfo lists H264 decode12. pct snapshot 201 pre-pve85 before the next Proxmox kernel bump.

Elena’s taken position: keep USB Coral in LXC 201 until she buys a second host—PCIe Coral is not worth VM overhead at six cameras.


PCIe Coral and when LXC is the wrong tool

PCIe Coral M.2 and Dual Edge TPU cards expose /dev/apex_0 on the host—not a USB node LXC can bind-mount cleanly. Proxmox documentation treats PCIe devices as VM passthrough candidates via IOMMU groups4.

GoalRecommended pathWhy LXC fails
Dual Coral M.2 on N305VM + PCIe passthrough + DockerNo stable lxc.mount.entry for apex
Single PCIe Coral, strict isolationDedicated Frigate VMKernel driver owned by VM
Quick experimentDocker on Proxmox host (no LXC)Native /dev/apex_0 map
Ten+ 1080p @ 5 fps detectVM or host + dual USB CoralUSB scales to ~2 sticks in one LXC

Working example: James, PCIe Dual Edge TPU, VM 210

Profile: James runs Proxmox on a Ugreen DXP4800 Plus (N305, 32 GB RAM). Ten Annke cameras, PCIe Dual Edge TPU M.2 (~$85, Coral.ai snapshot June 2026). He needs kernel isolation from Home Assistant VM 100.

Steps (abbreviated):

  1. Enable IOMMU in BIOS and Proxmox boot cmdline (intel_iommu=on).
  2. Create VM 210 (Debian 12), add PCIe device for the Coral card in Proxmox GUI.
  3. Install google-coral rules and Docker inside the VM—not inside an LXC.
  4. Frigate Compose maps /dev/apex_0; detector device: pci or auto.

I haven’t tested every N305 board’s IOMMU grouping for single-function Coral passthrough; anecdotally, LXC USB remains simpler when you only own a USB stick.

USB Coral in LXC — pros
  • Well-documented lxc.mount.entry pattern; matches RiceMunk scripts7.
  • Lower overhead than a full VM; snapshot with pct snapshot.
  • ~$60 entry price; Frigate MobileDet path is mature.
USB Coral in LXC — cons
  • USB re-enumeration after host reboot—re-check lsusb inside LXC.
  • Two Coral USB sticks approach PCIe throughput but consume ports.
  • Not officially “supported” by Google inside nested containers—community pattern only.
PCIe Coral in VM — pros
  • Higher theoretical detect FPS; one module vs two USB sticks.
  • Clean driver ownership inside the VM kernel.
  • Scales toward ten-plus cameras on N305 class hosts.
PCIe Coral in VM — cons
  • IOMMU setup; ~4 GB RAM overhead for VM + Docker.
  • Cannot colocate in the same lightweight LXC as Pi-hole.
  • Supply and pricing fluctuate more than USB Coral.

Pair Coral with QuickSync on the same LXC

The dominant mistake in frigate nvr proxmox coral tpu threads is enabling detectors.coral while ffmpeg still decodes on CPU. Coral never decompresses H.264 keyframes1.

LayerDevice pathFrigate settingSymptom if missing
Decode/dev/dri/renderD128hwaccel_args: preset-intel-qsv-h264ffmpeg 60–80% CPU
Detect/dev/bus/usb (Coral)detectors.coral.type: edgetpudetect lag, high CPU on motion

Install intel-media-va-driver-non-free on 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 NASync/Proxmox paths for preset tables.


Scrypted on the same Proxmox host

Scrypted users often colocate on Proxmox for HomeKit Secure Video bridging while Frigate handles local object alerts. Hardware rules differ:

StackCoral usageRecommendation
Frigate LXC onlyExclusive USB CoralDefault privacy NVR
Scrypted LXC + Frigate pluginFrigate owns Coral; Scrypted consumes eventsPreferred dual-stack
Scrypted + Frigate both direct to CoralContention on /dev/apex_0 or USBAvoid — flaky inference
Scrypted with QSV onlyONNX on CPU or GPUAcceptable for 2–3 cams

For HomeKit-centric builds, read Scrypted vs Frigate for local NVR. Scrypted’s NVR plugins can pass /dev/dri for decode similarly—duplicate the lxc.mount.entry pattern in LXC 202, not the same CTID as Frigate unless you enjoy USB lock fights.


Steel-man: run Frigate on the Proxmox host instead of LXC

The strongest case against LXC Coral passthrough is path length. On the Proxmox host shell, you install Docker, map /dev/bus/usb and /dev/dri/renderD128 once, and skip pct debugging entirely. When Coral vanishes after an update, you run lsusb on one OS—not host, then LXC, then container. Host Docker also unlocks PCIe Coral without VM RAM tax. For a dedicated NVR box that never runs Home Assistant VMs, host Docker is rational and matches upstream Frigate examples verbatim3.

Rebuttal: Host Frigate shares the Proxmox kernel with every VM—no pct snapshot rollback when renderD128 permissions regress. Elena colocates Pi-hole LXC 105 and Frigate LXC 201 precisely because pct snapshot 201 pre-kernel restored a working Coral map in March 2026 forum reports after a pve-kernel bump broke lxc.mount.entry. If you already virtualize, the extra config buys insurance, not detection quality.


Troubleshooting Coral passthrough failures

SymptomLikely causeFix
Coral absent in LXC lsusbMissing lxc.mount.entry for USBAdd bind-mount; pct stop && pct start
Coral present in LXC, absent in FrigateDocker missing devices: USB mapAdd /dev/bus/usb to Compose
edgetpu/libedgetpu errorsCoral udev rules not in LXCapt install google-coral-edgetpu or rules from Coral docs
Inference ms OK, CPU still highNo QSV / wrong presetBind renderD128; use preset-intel-qsv-h264
Worked until Proxmox updateLXC config not persistedRe-read 201.conf; restore snapshot
Two processes, flaky CoralScrypted + Frigate both claim TPUSplit LXCs or use Frigate plugin

Checklist

  • Confirm Coral with lsusb on Proxmox host before editing LXC config.
  • Add lxc.mount.entry for /dev/bus/usb and /dev/dri/renderD128.
  • Set features: nesting=1 for Docker inside LXC.
  • Map both device paths in Frigate Docker Compose.
  • Configure detectors.coral device usb and QSV hwaccel_args.
  • Run docker exec frigate vainfo and check Frigate inference ms.
  • pct snapshot before every Proxmox point release.
  • Block camera VLAN WAN egress regardless of passthrough path.
Technical workflow diagram for passing Google Coral TPU USB and PCIe accelerators through Proxmox privileged LXC into Frigate NVR Docker with Intel QuickSync decode, showing lxc.mount.entry bind mounts, cgroup device rules, and local privacy-focused object detection without cloud video upload on Intel N100 homelab hardware as of June 2026.
USB Coral belongs in LXC via bind-mount; PCIe Coral belongs in a VM or on the host—pick before you buy.

Verdict

For frigate nvr proxmox coral tpu builds in June 2026, privileged LXC + USB Coral + QuickSync bind-mount is the default execution path on Intel N100/N305 homelabs. Elena should implement 201.conf lines, snapshot, and validate inference ms before tuning motion masks. James with PCIe Dual Edge TPU should skip LXC fantasies and deploy a Frigate VM or host Docker—same privacy outcome, fewer bind-mount dead ends.

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


FAQ

Frequently Asked Questions

Can a Google Coral TPU run inside a Proxmox LXC for Frigate?

Yes for USB Coral accelerators: bind-mount /dev/bus/usb into a privileged LXC, pass the device through Docker with devices:, and set detectors.coral device usb in config.yml. PCIe Coral M.2 cards cannot passthrough to LXC; use a VM with PCIe passthrough or run Frigate on the Proxmox host instead.

What LXC config lines does Coral USB passthrough need?

Add lxc.mount.entry for /dev/bus/usb and lxc.cgroup2.devices.allow for the USB character devices if you map individual nodes. Most homelabs bind the entire USB bus, then map /dev/bus/usb into the Frigate Docker container.

Does Coral replace Intel QuickSync in Frigate on Proxmox?

No. Coral accelerates object detection only. You still bind-mount /dev/dri/renderD128 for ffmpeg decode via preset-intel-qsv-h264 or h265. Missing QSV is the top reason CPU stays high even after Coral is detected.

Should Frigate and Scrypted share one Coral in the same LXC?

Avoid it. Frigate and Scrypted both expect exclusive Edge TPU access. Run Scrypted in a separate LXC or VM with its own Coral, or let Scrypted use the Frigate plugin for detection instead of a second TPU consumer.

Why does lsusb show Coral on the host but not inside the LXC?

Usually the USB bus bind-mount is missing from /etc/pve/lxc/CTID.conf, the LXC was not restarted after editing, or udev rules inside the LXC lack google-coral group permissions. Re-apply mount.entry and restart pct.

Is privileged LXC required for Coral passthrough?

In practice yes for Frigate homelabs through June 2026. Unprivileged LXC with id-mapped USB is possible on Proxmox 8.4+ but rarely documented for Coral; privileged LXC plus Docker matches community frigate-proxmox scripts.


Conclusion

Proxmox LXC Coral TPU passthrough for Frigate NVR boils down to two bind-mounts—USB for detect, renderD128 for decode—inside a privileged, nested LXC you snapshot before every kernel change. USB Coral fits this model; PCIe Coral does not. Add Scrypted in a separate container or via the Frigate plugin, validate with lsusb and inference milliseconds, then harden camera VLAN egress. That is the full technical execution behind the search intent—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 (Coral inference)https://docs.frigate.video/frigate/hardware
3Frigate — Installation (Docker)https://docs.frigate.video/frigate/installation
4Proxmox VE — Linux Container wikihttps://pve.proxmox.com/wiki/Linux_Container
5Google Coral — USB Accelerator product pagehttps://coral.ai/products/accelerator/
6Proxmox VE — PCI passthrough noteshttps://pve.proxmox.com/wiki/PCI_Passthrough
7RiceMunk/frigate-proxmox-script (community LXC)https://github.com/RiceMunk/frigate-proxmox-script

Footnotes

  1. Frigate video decoding documentation, accessed 15 June 2026 2 3

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

  3. Frigate Docker installation guide, accessed 15 June 2026 2

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

  5. Google Coral USB Accelerator product page, accessed 14 June 2026 2

  6. Privacy Smart Home — block IoT WAN egress guide, accessed 15 June 2026

  7. RiceMunk/frigate-proxmox-script repository, accessed 15 June 2026