How-To
Local-Only Reolink Duo 3 PoE Setup for Frigate NVR
Step-by-step Frigate YAML for Reolink Duo 3 PoE: go2rtc http-flv ingest, sub-stream detect, VLAN hardening, and dual-lens stitched record—no cloud telemetry.
Reolink Duo 3 PoE Frigate integration means ingesting the camera’s factory-stitched dual-lens panoramic stream through go2rtc, splitting record (main) and detect (sub) roles in config.yml, and blocking cloud/P2P egress so video never leaves your LAN. As of June 2026, Frigate’s official Reolink guidance routes 6MP+ latest-generation models like the Duo 3 through http-flv inside go2rtc—not raw RTSP on the main H.265 path—because community reports show fewer dropped frames after Frigate 0.1712.
Quick answer: How do you configure Reolink Duo 3 PoE in Frigate without cloud?
Add go2rtc http-flv streams for channel0_main.bcs and channel0_ext.bcs, point Frigate record at the restreamed main and detect at the sub, enable hardware decode on your NVR host, and firewall the camera to LAN-only with P2P disabled in Reolink settings.
Executive summary
The Reolink Duo 3 PoE is a 16MP dual-lens camera that outputs one stitched 180° feed—you do not merge left/right lenses in Frigate. The privacy win is operational: PoE backhaul, open RTSP/http-flv, and no subscription for local record. The engineering win is role separation: let the sub stream carry object detection while the main stream preserves plate-level detail on the stitched panorama.
This guide is YAML-first for buyers who already picked the Duo 3 and want a local-only Frigate NVR without Reolink cloud clips. We cross-link the hardware context in Reolink Duo 3 privacy review, protocol background in ONVIF vs RTSP, and NVR host sizing in build a local Frigate NVR.
Verdict: Marcus (one Duo 3 over driveway, N100 mini-PC, no cloud account) should deploy http-flv go2rtc + sub-stream detect and VLAN-block WAN on day one. Aisha (three Duo 3 units, Coral USB, Proxmox) should template the same YAML per camera with unique go2rtc stream names and never point detect at 7680×2160 mains—she will melt CPU and gain nothing for person detection.
Methodology: how the Duo 3 × Frigate stream matrix was built
We compared four ingest methods reported in Frigate GitHub discussions and the official Reolink camera-specific page (accessed 28 June 2026)134:
- Stream type — http-flv via go2rtc vs direct RTSP (
h264Preview_01_*,h265Preview_01_*,Preview_01_*). - Stability score (1–5) — editorial weighting from discussion #22248 and #12323 consensus through May–June 202634.
- Local-only posture — whether the path avoids Reolink cloud relay when WAN is blocked.
- CPU/GPU load — detect on sub only vs main misuse.
Where I’m less sure — exact sub-stream resolution varies by firmware; always read dimensions from Frigate’s System → FFmpeg panel after first connect.
Anecdotally, direct RTSP main on H.265 fails faster on ffmpeg 7+ than the http-flv copy path, matching Frigate maintainer guidance for 6MP+ latest Reolink hardware1.
Original research: Reolink Duo 3 PoE ingest options for Frigate (June 2026)
| Ingest method | go2rtc / Frigate path | Codec (typical) | Stability (1–5) | Detect-safe? | WAN-blocked OK? | Notes |
|---|---|---|---|---|---|---|
| http-flv (recommended) | ffmpeg:http://IP/flv?…channel0_main.bcs → restream | H.265 main / H.264 sub | 5 | Sub only | Yes | Official Frigate pattern for Duo 3 class1 |
RTSP h264Preview_01_sub | Direct to Frigate | H.264 | 4 | Yes | Yes | Good fallback for detect-only tests |
RTSP h265Preview_01_main | Direct or via go2rtc | H.265 | 2 | No | Yes | Frequent ffmpeg disconnects on some hosts4 |
RTSP Preview_01_main | go2rtc passthrough | H.265 | 3 | No | Yes | Firmware-dependent path naming |
| Reolink cloud / P2P app | Vendor relay | n/a | n/a | n/a | No | Defeats local-only goal—disable |
Privacy note: Stability and privacy are linked—a camera that reconnects constantly tempts admins to punch WAN holes or enable P2P. Pick the stable LAN path first, then firewall.
Stat: Frigate lists 6MP or higher, latest generation Reolink cameras (Duo 3, CX-8xx) as http-flv with ffmpeg 8.0, or RTSP—with http-flv documented as the more reliable stream type.
Dataset (JSON-LD)
Before YAML: camera prep on the Duo 3 (local-only posture)
go2rtc is Frigate’s bundled stream proxy. For Reolink 6MP+ models, it should pull http-flv from the camera once, then Frigate consumes a localhost RTSP restream—reducing duplicate authentication and smoothing H.265 quirks1.
On-camera settings (Reolink app or web UI, firmware verified June 2026):
| Setting | Value | Why |
|---|---|---|
| Encoding mode | On, fluency first (CBR) | Frigate docs recommend CBR for Reolink stability1 |
| I-frame interval | 1× frame rate | Reduces long-GOP decode stalls |
| HTTP / HTTPS | HTTP enabled (advanced network) | Required for http-flv ingest |
| P2P / UID | Off | Stops cloud rendezvous when WAN blocked |
| UPnP | Off | Prevents router pinholes |
| NTP | Local NTP (optional) | Avoids hardcoded vendor time servers if you block WAN |
Network: Assign the camera a static DHCP lease on an IoT VLAN (e.g. 10.50.0.0/24). Apply deny WAN egress per block smart devices from the internet. The camera needs L3 access to your Frigate host on ports 80/554/1935—not the public internet.
Checklist
- Static IP or DHCP reservation for Duo 3
- Change default admin password
- CBR fluency first + 1× iframe
- HTTP enabled; P2P and UPnP disabled
- IoT VLAN with deny-WAN firewall rule
- Test http-flv URL in go2rtc before enabling detect
Reference YAML: local-only Duo 3 on Frigate (go2rtc http-flv)
Replace DUO3_IP, FRIGATE_RTSP_USER, and FRIGATE_RTSP_PASSWORD. Frigate substitutes {FRIGATE_RTSP_USER} / {FRIGATE_RTSP_PASSWORD} from env vars when configured1.
# frigate/config/config.yml — Duo 3 PoE local-only baseline (June 2026)
mqtt:
enabled: false # optional; enable only if your broker is LAN-only
go2rtc:
streams:
duo3_driveway:
- "ffmpeg:http://DUO3_IP/flv?port=1935&app=bcs&stream=channel0_main.bcs&user={FRIGATE_RTSP_USER}&password={FRIGATE_RTSP_PASSWORD}#video=copy#audio=copy#audio=opus"
duo3_driveway_sub:
- "ffmpeg:http://DUO3_IP/flv?port=1935&app=bcs&stream=channel0_ext.bcs&user={FRIGATE_RTSP_USER}&password={FRIGATE_RTSP_PASSWORD}"
cameras:
duo3_driveway:
enabled: true
ffmpeg:
# Intel QSV example — swap for vaapi / coral host per your hardware
hwaccel_args: preset-intel-qsv-h265
inputs:
- path: rtsp://127.0.0.1:8554/duo3_driveway
input_args: preset-rtsp-restream
roles:
- record
- path: rtsp://127.0.0.1:8554/duo3_driveway_sub
input_args: preset-rtsp-restream
roles:
- detect
detect:
enabled: true
width: 1280 # optional cap — remove to auto-detect sub dimensions
height: 352
fps: 5
record:
enabled: true
retain:
days: 14
mode: motion
snapshots:
enabled: true
retain:
default: 14
motion:
threshold: 30
contour_area: 50
Docker env (compose excerpt) for credential injection:
services:
frigate:
image: ghcr.io/blakeblackshear/frigate:stable
privileged: true
environment:
- FRIGATE_RTSP_USER=admin
- FRIGATE_RTSP_PASSWORD=your_long_lan_only_secret
volumes:
- ./config:/config
- /etc/localtime:/etc/localtime:ro
- type: tmpfs
target: /tmp/cache
tmpfs:
size: 1000000000
After docker compose up -d, open http://frigate-host:5000 → System → confirm camera fps on detect ≈ 5 and recording shows the stitched panorama.
Dual-lens “stitching”: what Frigate actually receives
The Duo 3’s dual lenses are fused in firmware into a single 180° channel—there is no left_lens / right_lens pair to combine in YAML. “Stitching” in search queries means preserving that panoramic main in your NVR without sending it to Reolink Cloud.
| Stream role | Typical resolution | Frigate role | Privacy / perf note |
|---|---|---|---|
| Main (stitched) | up to 7680×2160 | record | High disk use; keep on LAN disk only |
| Sub (stitched) | ~896×256–1280×352 | detect | Low CPU; sufficient for person/vehicle models |
| Audio | AAC / opus via go2rtc | optional | Disable if you do not need audio events |
Worked example — Marcus, suburban driveway (1× Duo 3, N100, June 2026): Marcus blocks 10.50.0.44 from WAN on OPNsense, uses the YAML above with 14-day motion retain on a 2 TB BTRFS volume, and browses clips in Frigate only. His sub stream runs 896×256 @ 5 fps; CPU detect stays under 35% without Coral. Total extra cost beyond the ~$219 camera (Reolink store MSRP checked 28 June 2026): $35 PoE injector + $18 patch cable.
Worked example — Aisha, corner lot (3× Duo 3, i5 NVR + Coral USB): Aisha clones the go2rtc block three times (duo3_front, duo3_side, duo3_rear), assigns distinct IoT /24 leases, and maps QSV h265 on record + Coral detect. She caps detect width at 1280 because wider subs rarely improve label scores but cost ~8 ms inference per frame on CPU fallback.
- http-flv + go2rtc — pros
- Matches Frigate maintainer guidance for Duo 3 class hardware.
- Single authenticated pull; Frigate hits localhost restream.
- Survives many ffmpeg 7/8 upgrades better than raw H.265 RTSP.
- http-flv + go2rtc — cons
- Requires HTTP enabled on camera (still LAN-only if firewalled).
- Slightly more moving parts than naive RTSP URL in one input.
- Two-way talk needs extra RTSP sidecar per Frigate docs1.
RTSP fallback (when http-flv is blocked by policy)
Some admins prohibit HTTP on cameras entirely. Frigate documents RTSP as secondary for 6MP+ latest Reolink units1. Test sub-first:
go2rtc:
streams:
duo3_sub_rtsp:
- rtsp://admin:PASSWORD@DUO3_IP:554/h264Preview_01_sub
cameras:
duo3_driveway:
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:8554/duo3_sub_rtsp
input_args: preset-rtsp-restream
roles:
- detect
- record # temporary — split when main is stable
Steel-man: RTSP-only purists argue http-flv is another parser surface and prefer one protocol end-to-end. On paper, that simplifies audits.
Rebuttal: On Duo 3 hardware, empirical stability on Frigate 0.17+ favors http-flv for the H.265 main; RTSP remains valid for sub detect or lab environments where you accept occasional ffmpeg restarts. For Marcus’s single-camera install, http-flv saves weekend troubleshooting; for Aisha’s triple install, it avoids 3 AM gap alerts.
Hardware decode and detector pairing
The stitched main is H.265 on most firmware builds. Pair record with Intel QSV, VAAPI, or NVIDIA NVDEC on the Frigate host—see Intel QuickSync on NASync for /dev/dri patterns.
| Host class | Record decode | Detect backend | Duo 3 count (editorial est.) |
|---|---|---|---|
| N100 mini-PC, QSV | preset-intel-qsv-h265 | CPU | 1–2 |
| N100 + Coral USB | QSV | Coral | 3–4 |
| i5 NVR + Coral | QSV | Coral | 4–6 Duo 3 subs @ 5 fps |
I haven’t tested every Alder Lake-N box with 7680×2160 continuous record; your mileage will vary depending on bitrate caps and motion-only retain.
Troubleshooting checklist
| Symptom | Likely cause | Fix |
|---|---|---|
| No frames after Frigate 0.17 | ffmpeg + H.265 RTSP main | Switch main to http-flv go2rtc path3 |
| Detect CPU > 60% | Detect on main stream | Move detect to channel0_ext.bcs sub only |
| Green/garbled live view | Browser H.265 limitation | Use Frigate UI; enable apple_compatibility: true if needed |
| Intermittent disconnects | VBR + long GOP | Force CBR fluency first, iframe 1×1 |
| Works until WAN blocked | P2P/DNS dependency | Static IP, local DNS, deny WAN except NTP if required |
Validate go2rtc directly: http://frigate-host:1984 → open stream duo3_driveway before editing Frigate roles.
Verdict
For reolink duo 3 poe frigate installs in June 2026, treat http-flv go2rtc ingest + sub-stream detect + WAN-blocked IoT VLAN as the default production stack—not Reolink Cloud and not 16MP detect. Marcus should be done in an afternoon on one N100. Aisha should template YAML per camera and budget Coral once aggregate subs exceed three.
The Duo 3 is not the most privacy-perfect camera on the market—Reolink still ships optional cloud hooks—but with P2P off and Frigate owning retention, you keep stitched 180° evidence on disks you control. For brand-level tradeoffs, read Reolink vs Ubiquiti local-only privacy.
FAQ
Frequently Asked Questions
Does Frigate need to stitch the Duo 3 dual lenses manually?
No—the camera outputs one fused panoramic stream. Configure one Frigate camera with main for record and sub for detect.
Should I use RTSP or http-flv for Reolink Duo 3 in Frigate?
Prefer http-flv via go2rtc for the main path on 6MP+ latest Reolink models; use RTSP sub for fallback testing.
What detect resolution should I set for the Duo 3 sub stream?
Start with auto-detect; cap width around 1280 if CPU is high. Never detect on the 16MP main.
Can the Reolink Duo 3 work with Frigate fully offline?
Yes after setup—block WAN, disable P2P, and use Frigate for viewing and clips.
Why does my Duo 3 main stream fail after a Frigate update?
Check ffmpeg version notes and migrate main ingest to http-flv; verify CBR and 1× iframe on the camera.
Do I need a Coral TPU for one Duo 3 camera?
Not for a single sub stream on modern x86; add Coral when you run three or more detect streams.
Primary sources
| # | Source | URL |
|---|---|---|
| 1 | Frigate — Camera specific (Reolink) | https://docs.frigate.video/configuration/camera_specific/ |
| 2 | Frigate — Installation | https://docs.frigate.video/frigate/installation |
| 3 | GitHub — Duo 3 frames after 0.17 (#22248) | https://github.com/blakeblackshear/frigate/discussions/22248 |
| 4 | GitHub — Reolink Duo 3 POE support (#12323) | https://github.com/blakeblackshear/frigate/discussions/12323 |
| 5 | Reolink — Duo 3 PoE product page | https://reolink.com/product/duo-3-poe/ |
| 6 | Privacy Smart Home — Duo 3 review | /guides/reolink-duo-3-poe-local-nvr-frigate-privacy-review-2026/ |
| 7 | Privacy Smart Home — Block IoT WAN | /guides/how-to-block-smart-home-devices-from-accessing-the-internet/ |
| 8 | Privacy Smart Home — Frigate NVR build | /guides/build-local-nvr-ugreen-nasync-frigate-2026/ |
Footnotes
-
Frigate documentation — Camera specific configurations (Reolink), accessed 28 June 2026. https://docs.frigate.video/configuration/camera_specific/ ↩ ↩2 ↩3 ↩4 ↩5 ↩6 ↩7 ↩8 ↩9 ↩10
-
Frigate GitHub Discussion #22248 — Reolink DUO3 does not receive frames after 0.17 update, June 2026. https://github.com/blakeblackshear/frigate/discussions/22248 ↩
-
Frigate GitHub Discussion #22248 — recommended http-flv go2rtc structure for Duo 3 class cameras. ↩ ↩2 ↩3
-
Frigate GitHub Discussion #12323 — Reolink Duo 3 POE RTSP path notes and ffmpeg version behavior. https://github.com/blakeblackshear/frigate/discussions/12323 ↩ ↩2 ↩3