Creating a long range/low latency/ low-cost digital radio link for UAVs & aerial photography

As my „not just another drone“ project grew very large over the last year I decided to split it up into different articles.

This article focuses on the communication link between a drone & ground station. As no affordable industry solution existed in 2016 I started to create my own. After spending months developing the software I decided to release it under the name of DroneBridge. DroneBridge is a set of modules plus an Android app that should help to make MultiWii (Betaflight/Cleanflight/iNav) and MAVLink based flight controllers more suitable for aerial photography. It aims to be a real alternative to solutions like DJI Lightbridge or OcuSync.

All DroneBridge modules are embedded in the EZ-WifiBroadcast image. WifiBroadcast runs on the Raspberry Pi and uses the Pi camera module to deliver an HD low latency video feed over more than 2 km. It uses wifi hardware and patched drivers to push the hardware to its maximum. An ideal starting point for DroneBridge.

You can find the most current source code of DroneBridge here:


Make sure you also take a look at the Wiki

Or the newly created Gitbook page. A place where all future documentation will be.

Why build DroneBridge?

The EZ-WifiBroadcast project has come a long way and is very good at delivering low latency video over long distances. Since release 1.5 there also is the possibility to send RC signals. Without this, the user is forced to switch to 5.8 GHz for video transmission to not interfere with the radio control that usually operates at 2.4 GHz. With video over 5.8 GHz, the range gets halved. The EZ-WBC developers spent a lot of time getting various WiFi adapters to work and build an easy to install image. For that, you have to respect their work.

However, the code and provided documentation of EZ-WifiBroadcast are not developer friendly. In fact, there is no documentation about used protocols and architecture at all. You have to dig through a lot of (unformatted) code to get an idea. The decision process is not transparent. You will have to read 400 pages of forum posts to get a glimpse of why they did certain things. It is not optimized to work with iNav flight controllers (only supports MSPv1). There are no clear interfaces for where to get or to push certain data. A lot is done using a huge shell script and pipes. There is no easy (or documented) way of creating an MSP or MAVLink upload.
The RC implementation only supports eight channels and works with Atheros and some new Realtek cards. There is no way of calibrating the joystick (the default calibration done by Linux sometimes needs adjustment) nor is there a way of seeing what the current channel values are. Some low-cost remotes like the Turnigy i6S have a “strange” button mapping. This needs to be taken care of, otherwise only the analog inputs will work correctly (No button support with EZ-WBC). Changing settings like frequency or FPS of the camera is not possible without removing the SD cards.
And finally, there is no app/user interface out there which is specifically designed to work with the system. Especially when using iNav there is no app or application that delivers the required features for mission planning/execution and video feed.

Instead of trying to fix all these issues I decided that it is better/faster to start an entirely new project and rewrite almost all of the code. By sticking to the base image provided by EZ-WBC I can take advantage of all the driver and OS modifications that were made.
The goal is to build a complete system that works with common UAV hardware. It must be easy to configure and use and capable of enabling low latency video, telemetry, RC and MSP/MAVLink two way communication.
An RC implementation that has more than eight channels, works perfectly with popular hardware and mimics a standard radio control including failsafe. Everything should be easy to configure using an app that acts as the UI for the whole system (drone & ground station)

One open system. A cheap and almost ready to fly solution for UAVs of all kind.

DroneBridge blackbox

DroneBridge for Android: What can it do?

dronebridge app

DroneBridge app with explanations

The DroneBridge android app user interface

Display important information using an android app including:

  • RSSI of drone & ground station
  • low latency live video delivered by the WifiBroadcast project (~112 ms glass to glass latency)
  • Monitor autonomos missions (LTM & MAVLink telemetry)
  • Positions on a map including: operator, drone, home point
  • All kinds of telemetry information
  • allows sending any MSP/MAVLink command to the flight controller
  • display battery status (voltage, cell voltage, percent using a battery model)
  • allows changing wifibroadcast settings (frequency, FEC etc.)
  • allows configuring DroneBridge settings

Modular design & custom protocols

DroneBridge modules and protocols

With DroneBridge one can send any MSP or MAVLink command directly to the flight controller. For example commands like:

  • Calibration of MAG and ACC
  • RC
  • Autonomous missions
  • PIDs

Hardware options

DroneBridge features support for the Raspberry Pi and the cheap ESP32.

DroneBridge long range hardware setup

DroneBridge long-range hardware setup

While the ESP32 only gives about 150m of range it is a cheap & easy way of getting started. Its meant for small & light builds and is supported by DroneBridge for Android out of the box. In the future users can create, edit and upload missions via the app.

DroneBridge for ESP32 hardware setup

DroneBridge for ESP32 hardware setup

8 thoughts on “DroneBridge”

  1. Anonymous says:

    Howdy! This is my first visit to your blog! We are a group of volunteers and starting a new project in a community in the same niche. Your blog provided us valuable information to work on. You have done a extraordinary job!

    1. cyber says:

      Love to hear that! Keep me posted! I hope I find so time during the next weeks to debug and release v0.3 lots of improvements there.

  2. Laurent says:

    It seems that the link to the android app on https://github.com/seeul8er/DroneBridge is not working or more.
    I am trying to test your system that seems great but without the android application I can not go or end tests.

    Thanks in advance

    Great job

    1. cyber says:

      Oh sorry! You are right. I put in an expiration date so people do not use old versions of the app. I will try to upload the most current one by tomorrow. Thanks for pointing that out!
      BTW. I will have some time next week so you can expect DroneBridge v0.3 in short. You can find the most current code under the nightly branch in the repository.

  3. Laurent says:

    I’m looking forward to discover this new release!
    I tell you again, it’s a great job.


  4. nbroenner says:


    is it possible to use the Software in combination with the navio 2 addon board?

    Thanks and regards

    1. cyber says:

      Not sure but I don’t think so. As far as I know the Raspberry Pi runs a custom real-time kernel when used with Navio2. I would guess you will have a hard time getting the DroneBridge modules + WifiBroadcast video link running on it. DroneBridge/Wifibroadcast also uses a patched kernel to improve range.

      But you could use the Android app to track your UAV by forwarding the MAVLink telemetry stream to UDP port 1604. In the future you will also be able to create & upload missions

  5. Very cool project! I hope to give it a try in my custom 450 quad sometime, but that probably won’t be for another year or so.

Leave a Reply

Your email address will not be published. Required fields are marked *