From hardware sourcing to first HD video link with MAVLink telemetry passthrough. Wifibroadcast-based — no proprietary hardware required.
Two nodes — Air and Ground — each running OpenHD on a Linux SBC or x86 machine. Both nodes have a commodity RTL8812AU WiFi adapter operating in monitor/injection mode (wifibroadcast). The air node captures CSI camera video, encodes it, and injects raw 802.11 frames into the air. The ground node captures all frames promiscuously, decodes video, and streams telemetry to QOpenHD and any connected MAVLink GCS.
| Item | Notes | ~Cost |
|---|---|---|
| Raspberry Pi Zero 2 W | Air unit. Not Zero 1 — unsupported | $15 |
| 2× ALFA AWUS036ACH or ASUS USB-AC56 | RTL8812AU, 500mW, 5.8GHz — one air, one ground | $20–30 each |
| CSI camera (Arducam or RPi HQ) | Must be on OpenHD supported camera list | $25–50 |
| 22-pin type B CSI cable | Pi Zero uses this, not the standard 15-pin | $3 |
| Dedicated 5V/3A BEC × 2 | One for WiFi adapter, one for RPi — separate rails | $5 each |
| Laptop (x86) with SecureBoot off | Ground station — faster CPU = lower decode latency | — |
| Fast USB stick | Ground station boots from this | $10 |
| Item | Notes | ~Cost |
|---|---|---|
| RPi CM4 4GB eMMC | Air — better thermal, dual camera, lower latency | $60 |
| Ochin CM4 carrier board | Compact, designed for OpenHD | $35 |
| Radxa Rock 5B | Ground — H.265 HW decode, lowest latency GS option | $80 |
| 2× ALFA AWUS036ACH | RTL8812AU, 500mW | $30 each |
| Arducam Skymaster or IMX477 | Best image quality for OpenHD builds | $40–80 |
RTL8812AU (recommended for new users — STBC/LDPC, 500mW, proven reliable), RTL8814AU (4 antennas), RTL8812BU (lower power, ~40–80mW), BLM8812EU (newest, best performing, 800mW+ — no FCC/CE cert, use at own risk), RTL8811AU (single antenna — no STBC/LDPC). For first builds get 2× ASUS USB-AC56 (RTL8812AU). Experienced users wanting best performance: BLM8812EU.
Download the latest Evo image for your SBC from openhdfpv.org/downloads. Use the OpenHD ImageWriter tool (recommended) to flash to SD (Pi Zero 2) or eMMC (CM4 via Ochin — hold button while connecting power to enter flash mode). First boot takes several minutes with multiple reboots. Normal.
For x86: flash the x86 image to a fast USB stick. Disable SecureBoot in BIOS. Set USB as first boot device. QOpenHD starts automatically. For Rock5: flash per standard Radxa process, OpenHD starts on boot.
Power: Two separate BECs — one for the SBC, one for the WiFi adapter. The adapter draws more current than the SBC can supply via USB.
FC wiring: Connect FC MAVLink UART to SBC UART. Baud rate must match on both ends (default 115200).
Open QOpenHD on the ground station. The OpenHD logo opens the main menu; the red circle opens the sidebar. Go to OPENHD → LINK/QUICK.
| Setting | Value | Notes |
|---|---|---|
| Frequency | 5.8GHz | Cleaner than 2.4GHz. Cannot change while armed. |
| STBC | ON (both ends) | Must match air/ground. Off = no link, not degraded. |
| LDPC | ON (both ends) | Same — both ends or neither. |
| FC_UART_BAUD | Match FC config | AIR tab → FC_UART_BAUD |
| CAMERA_TYPE | Match physical cam | AIR CAM 1. Reboot required after change. |
| Air Recording | AUTO | Starts recording on arm. Air-side storage only. |
In QOpenHD → STATUS tab, both AIR and GROUND should show LIVE. If only one shows: check adapter power, confirm same frequency on both ends, verify STBC/LDPC match.
Video but no telemetry: UART baud rate mismatch or wiring error. Set FC_UART_BAUD to match your FC's telemetry port.
Black screen "rebooting camera": Wrong CAMERA_TYPE. Fix in AIR CAM 1 menu, wait for reboot.
OpenHD auto-forwards the MAVLink stream over UDP on the ground station's local network. Default port: 14550.
Mission Planner: Connection → UDP → 14550
QGroundControl: Comm Links → UDP → 14550
Buddy/Wingman: Same — connect as second UDP client. Kalman estimator smooths stream normally regardless of source.
OpenHD handles HD video and MAVLink telemetry. GHST or ELRS handles primary RC control with its own dedicated link. The FC connects to both simultaneously — telemetry UART to OpenHD, RC input from the RC receiver. Best of both: high-quality video at range + reliable low-latency RC control. If the OpenHD link degrades, you still have full control authority.
OpenHD as primary video + telemetry. Meshtastic LoRa node on each craft and at GCS as a fallback telemetry mesh for emergency commands when OpenHD degrades or fails. See the Mesh Networking guide for the dual-link pattern.
| System | Cost (air unit) | Range (stock antennas) | Range (high-gain + tracker) | Latency | Open source |
|---|---|---|---|---|---|
| OpenHD (RPi) | ~$30 | 1–3km | 10–20km+ | 100–150ms | Yes — fully |
| OpenHD (Rock5) | ~$80 | 1–3km | 10–20km+ | 60–100ms | Yes — fully |
| OpenHD (custom HW) | TBA | 2–5km | 10–20km+ | ~40–60ms | Yes — fully |
| OpenHD (x86 ground) | — | Same as air unit | Lowest decode latency | Yes — fully | |
| DJI O3 | ~$229 | ~10km (O3 Pro) | N/A (integrated) | ~31ms (FHD) | No |
| Walksnail Avatar | ~$99–149 | ~4km | N/A | ~22ms | No |
| HDZero | ~$99 | ~3–5km | N/A | ~8ms (race) | Partial |
Keep it omnidirectional — the drone changes orientation constantly. Recommended:
| Antenna | Gain | Pattern | Notes |
|---|---|---|---|
| Stock dipole | 2–3 dBi | Omni (donut) | Fine for <2km. Replace for anything serious. |
| Maple Leaf / Cloverleaf (RHCP) | 2–3 dBi | Omni, circular polarized | Better multipath rejection than linear dipole. Good general-purpose upgrade. |
| Pagoda / Moxon (RHCP) | 3–5 dBi | Omni / semi-directional | Slight gain improvement. Popular in FPV community. |
This is where you add gain. Directional antennas on the ground pointed at the drone give you the range. The tradeoff: higher gain = narrower beam = you need to track the drone.
| Antenna | Gain | Beamwidth | Range (paired with omni air) | Needs tracker? |
|---|---|---|---|---|
| Stock dipole | 2–3 dBi | 360° omni | 1–3km | No |
| Patch panel (flat) | 8–12 dBi | ~60–90° | 5–8km | No (if drone stays in front) |
| Yagi | 10–14 dBi | ~30–50° | 8–15km | Recommended |
| Panel array (2x2 / 4x4) | 14–18 dBi | ~20–30° | 10–20km | Yes |
| Helical | 12–16 dBi | ~30–40° | 10–20km | Yes |
| Grid / dish | 18–24 dBi | ~10–15° | 20km+ | Yes (must track) |
| Antenna | Gain | Type | Band | Use |
|---|---|---|---|---|
| OpenHD Maple Leaf PCB (DIY) | 3 dBi | Omni, vertical | 5.2–5.3 GHz | Air + ground (starter) |
| Maple FY-05A Flat Panel | 14 dBi | Directional, vertical | 5.8 GHz | Ground (with tracker) |
| Maple Planar Antenna | 17 dBi | Directional, vertical | 5.8 GHz | Ground (long range + tracker) |
| Interline IP-G23-F5258-HV | 23 dBi | Panel, directional | 5.2–5.8 GHz | Ground (extreme range + tracker) |
| 23dBi Flat Panel (AliExpress) | 23 dBi | Flat panel, vertical | 5.8 GHz | Ground (extreme range + tracker) |
| Aomway Biquad Dual Diamond | ~10 dBi | Directional, vertical | 5.8 GHz | Ground (compact directional) |
Once you're using a directional ground antenna with >10 dBi gain, the beam is narrow enough that you need to physically point it at the drone. An antenna tracker does this automatically using the drone's GPS telemetry.
| Tracker | Type | Protocol | Approx Cost | Notes |
|---|---|---|---|---|
| u360gts | Pan/tilt servo | MAVLink / LTM / GPS | $30–60 DIY | Open-source, Arduino-based. Most popular in long-range FPV community. Uses MAVLink GPS from telemetry stream to compute bearing. |
| YAAPU AAT | Pan/tilt servo | MAVLink via ELRS/Crossfire | $40–80 DIY | Runs on OpenTX/EdgeTX radio. Uses Yaapu telemetry script to drive servos from GPS position data received via RC link. |
| Commercial tracker | Pan/tilt motorized | Various | $200–500 | Pre-built units. Less common in OpenHD builds — most long-range flyers DIY their tracker. |
Best practice: use TWO ground antennas with diversity reception. One omni (for nearby/all-around coverage) + one directional on a tracker (for range). OpenHD supports antenna diversity — it picks the best signal per packet. This gives you reliable close-in performance AND long-range capability without switching.