Self-host EZ-WifiBroadcast
Low-latency HD FPV video and telemetry link over raw WiFi
- Stars
- 901
- Storage
- minimum 2GB SD cards (two of them)
- Port
- 5600 (UDP port the ground station forwards the H.264 video stream to for second-display apps)
What is EZ-WifiBroadcast?
EZ-WifiBroadcast is a digital HD video and data link for drones, boats and other radio-controlled vehicles, built from two single-board computers and normal USB WiFi adapters. The camera-equipped Pi (the "AirPi") encodes H.264 video with raspivid, and the receiving Pi on the ground decodes it and draws a telemetry OSD on top. Instead of an associated WiFi connection it injects raw packets, in the style of Befinitiv's wifibroadcast, so signal loss produces progressive artifacts that recover almost instantly rather than a dropout or blue screen, and no pairing procedure exists. Typical glass-to-glass delay is around 125 ms, with a minimum near 110 ms, and resolutions up to 1080p30 at bitrates around 12 Mbit. The same link carries bidirectional MAVLink telemetry plus RC control over MAVLink, MSP, SUMD, IBUS or SRXL, and it records .AVI video, PNG screenshots and telemetry logs to a USB stick. Streams can be forwarded to a second display via USB tethering, a WiFi hotspot, Ethernet or a wifibroadcast relay, so apps such as QGroundControl, Mission Planner, Tower and FPV_VR can show the feed. Self-hosting means writing the Raspbian-based image to two SD cards of at least 2 GB, one per Pi, and editing plain text files such as wifibroadcast-1.txt, osdconfig.txt and apconfig.txt - which the wiki notes can be done from Windows with no Linux knowledge. Notable limits: only certain Atheros and Ralink adapters work, the Pi's onboard WiFi cannot be used, the 3B+/3A+ were unsupported, and because transmission is broadcast anyone tuned to your frequency can watch the stream; the recommended release dates from 2018.
Should you self-host EZ-WifiBroadcast?
EZ-WifiBroadcast scores 52/100 on selfhost.directory (how scoring works) and ranks #14 of 36 in Video Streaming. It has 901 GitHub stars.
There was no stable release in the past 12 months, so check the repository's recent activity before you rely on it.
Setup is advanced: plan for several services and some ongoing maintenance. It is GPL-2.0-licensed and written mostly in C.
Its closest alternative on selfhost.directory is piped (70/100, 10 295 stars). It scores higher overall, so compare the two before you pick. See EZ-WifiBroadcast vs piped side by side.
Features
- 1080p30 video up to 12 Mbit bitrate
- Analog-like graceful signal degradation
- Bidirectional MAVLink telemetryWiki says the uplink is not 100% compatible with all flight controllers yet.
- Customizable on-screen display
- Field-selectable configuration profiles
- Ground recording and screenshots
- HDMI camera input
- Link quality logging and graphing
- Long range links
- Low-latency HD video downlink
- Multi-band radio support
- RC control over the link
- Second-display forwarding
- Text-file configuration without Linux skills
- Transmit and receive antenna diversity
EZ-WifiBroadcast README
FAQ
Is this legal?
Probably, but it drives standard WiFi hardware in monitor mode with packet injection, which is not its official use; some frequencies and high power settings may be illegal where you live, so check before transmitting.
How many WiFi dongles can I use?
Up to two on the AirPi; on the GroundPi up to three Atheros or five Ralink cards, or a combination of two Atheros and two Ralink.
Why do I get a low power warning?
Usually the power supply is short on voltage or amperage, or the wiring is too thin.
Why am I getting artifacts in my video?
Many causes are possible - other WiFi users, the two Pis being too close, RC transmitter interference, bad wiring or power, a wrong or fake dongle, a mistaken setting, overheating or blocked signal - and using several receive dongles on the GroundPi is the best remedy.
Why can't I just use the Pi onboard WiFi for WBC?
The built-in WiFi lacks driver support for monitor mode and packet injection; Nexmon gets partial results but injection rates were too low in testing.
Can I use this other WiFi dongle that's not on the list?
Probably not: the system needs cards whose chip supports monitor mode and packet injection and has compatible drivers.
Can I run WBC on this other board (Orange Pi, Banana Pi, BeagleBoard)?
No. The image is Raspberry Pi OS based, the AirPi needs a raspivid-compatible camera and Broadcom's H.264 hardware encoder, and the code is Pi-specific; there is a little flexibility on the ground side.
Do I need a WiFi dongle for video, another for telemetry, and another for RC control?
No, one dongle per Pi is the minimum; extra dongles are only used to add diversity.
What is a Raspberry Pi?
A complete computer on one circuit board, here running a Linux derivative - though users do not have to touch the software side.
What are my WBC frequency options so I don't conflict with my RC transmitter?
The recommended approach is to run RC over the link too (all-in-one); otherwise the software runs on 2.4 GHz or 5.8 GHz depending on your dongles, and 2.3 GHz is often illegal and interferes with 2.4 GHz transmitters.
When I lose connection will I see a "blue screen"?
No - a weakening signal shows progressive artifacts and pixelation and then the image usually freezes, while telemetry and RC keep working beyond video loss.
How long does WBC take to regain a lost "connection"?
Essentially instantaneous: because the link behaves like analog radio, it comes back as soon as the interference stops.
What kind of range can I expect?
Typical builds manage 1-3 km, and long-range builds have exceeded 30 km.
What is the lowest latency I can achieve?
About 110 ms glass-to-glass, though most setups sit around 125 ms.
More in Real-time
FlowcatFlowcat is an open-source, self-hosted Rust runtime for real-time voice agents — single binary, no hosted control plane, native SIP/RTP/WebRTC, 80+ provider connectors.
Global Threat MapSelf-hosted, open-source OSINT command center: a Next.js Mapbox app plotting real-time global events, wars, conflicts and military bases, with AI intel dossiers.
GraphitiGraphiti is a self-hosted, open-source scene graph engine for interactive 3D data visualization with real-time peer-to-peer sync via WebRTC and CRDTs — no cloud required.
gunOpen-source P2P graph database with realtime sync and offline-first storage; run a self-hosted relay peer via Docker or npm in browsers, Node.js and mobile apps.
instantSelf-hosted, open-source backend-as-a-service: relational queries, realtime sync, offline caching, auth, storage and permission rules on PostgreSQL.
JuggleIMSelf-hosted instant messaging backend for adding chat to your app. Multi-tenant design, WebSocket protocol, REST APIs, SDKs for Android, iOS, Web, Flutter.
kuzzleKuzzle is a self-hosted, open-source backend platform with real-time APIs, data storage, advanced search, user authentication, and pub/sub for web, mobile, and IoT apps.
nsqOpen-source self-hosted distributed messaging platform: push-based pub-sub over topics and channels, in-memory queues that spill to disk, plus the nsqadmin web UI.
PowerSync ServiceSelf-hosted sync server that copies data from several backend databases into client-side SQLite with live streaming and offline-first support.
SoketiOpen-source WebSocket server that speaks Pusher Protocol v7, self-hosted via Docker, npm or Helm, with app credentials in arrays, MySQL, Postgres or DynamoDB.
SpacetimeDBSpacetimeDB is a source-available relational database that is also the server: your Rust or TypeScript module runs inside it. Self-hosted via Docker.
TogetherJSAn open-source, self-hosted JavaScript toolkit adding real-time co-browsing, shared cursors, text and audio chat to any site, with a relay hub you run yourself.
0 comments