LockDownRadioControl

A free, open-source radio control system you can build yourself

The Rotorflight dongle

The phone app on any Rotorflight helicopter, whatever receiver flies it. One small board, four wires.

This tiny dongle sets up a Rotorflight helicopter from your phone, without the official Configurator. It does almost everything the Configurator does. Only flashing Rotorflight itself needs a computer.

  • It puts set-up and tuning into a sensible order, ticked off as you go.
  • It speaks plain English. Press and hold an underlined word to see what it means. Every page has its own help.
  • It is also a simulator interface: it turns a receiver into a USB joystick for your computer.
  • The app is free for iPhone and iPad (App Store) and Android: see Phone Apps.

In a hurry? It all fits on one page: the one-page guide, or print it as a PDF to keep with the model.

The dongle: a bare XIAO ESP32-S3 with its aerial, wired by a four-wire lead to a RadioMaster Nexus-X, with a USB-C cable in the Nexus
The dongle wired to a Nexus-X: the four-wire lead into a port, and the USB-C cable from the flight controller.

What it does

  • Wizards for a new helicopter and for tuning: each job in order, each step ticked off. À la carte goes straight to any one setting.
  • Easy tuning: the sliders that matter, in one place, in plain words. All six banks (profiles), and a choice of how many you use.
  • Copy a bank in one tap, read back and checked. Park a tune you like in a spare bank before an experiment.
  • Back up and restore the tune and set-up, every bank, to the phone (not ESC, ports, LED or GPS). Share a backup with a friend: their tune, not your servos.
  • Read the black box and check the filters after a flight, with advice in English.
  • Search for any setting by the word you would use.
  • Updates arrive by themselves. The app offers new dongle software when there is some, and installs it over Bluetooth at the field or over WiFi at home. It also tells you when a new Rotorflight is out, and to back up first.

One app, one software. The same board with radio modules fitted is the LockDownRadioControl receiver, which does all of this and flies the model. The dongle knows it is a dongle because it finds no radio when it starts.

The app's home page on a dongle: flight controller connected, Rotorflight dongle, Rotorflight setup and Wizard, Event log and Setup
What the app shows on a dongle (demo).

What you need

How to use it

Safety: blades off

Take the blades off, or unplug the motor, before you touch anything in the app. Setting up is done on the bench, never with the rotor turning.

Power

While the dongle is wired to a flight controller, power it only from the flight controller, through its lead. Never plug a computer, phone charger or power bank into its USB socket then. The dongle drives the USB cable, so it puts 5 V down it. Most flight controllers feed USB power into their own 5 V rail, so a second supply would meet the flight controller's head-on. (Flashing and simulator mode: flight controller unplugged.)

  1. Plug the lead into a spare UART

    On a Nexus, port B or C, not A.

  2. Add the USB cable, if you have one

    From the flight controller's USB socket to the dongle's. Short, and one that carries data. By USB there is nothing to set, and the app does almost everything the Configurator does.

  3. No USB cable? Set the port once

    Most things still work by the lead alone. A few need USB: the black box, the command line and a factory reset. Rotorflight has to be told where the dongle is: set that port to MSP 115200, in the official Configurator, or in the app's own Ports page if you can borrow a USB cable for the first visit.

  4. Open the RXV2 app

    It searches for dongles and receivers nearby. Tap yours and follow what the screen says. If it finds none, it offers a demonstration, so you can see the whole thing before you buy a single part.

  5. At home, give it your WiFi

    Setup → WiFi. Everything is quicker over WiFi. At the field it uses Bluetooth alone, and needs nothing else.

Safety while flying

The dongle asks the flight controller, several times a second, whether the model is armed. The moment it is, the app refuses to change anything and the dongle switches its Bluetooth and WiFi off, so nothing can interfere with the radio link. (A LockDownRadioControl receiver watches its own arming channel and does the same.)

On a Nexus, the Ports page names the sockets as printed on the board: Port A, Port B, Port C, TELEM and S.BUS. Other boards show the socket numbers printed on them (UART 1, UART 2 and so on).

The app's Ports page on a Nexus-X, with Port A set to receiver and TELEM to ESC telemetry
The Ports page on a Nexus-X: Port A the receiver, TELEM the ESC's telemetry.

Simulator interface

The same dongle connects one of your receivers to a simulator on the computer, Windows or Mac.

  1. Choose the role

    In the app, on the dongle's Role card, choose Simulator interface.

  2. Move the lead to the receiver

    The receiver's signal output to D5, its 5 V to the dongle's 5V pin, ground to ground.

  3. Plug the dongle into the computer

    The USB cable powers the whole rig: no battery, no flight controller. The computer sees a joystick.

It recognises CRSF, SBUS, IBUS and PPM by itself. The app says which it found and how many channels arrived. Stick-to-axis mapping, reversing, the spool-up realism and the camera keys are on the app's Simulator pages.

The app's home page on a simulator interface: receiver on D5, CRSF, 16 channels to the joystick, simulator mode on
The app on a simulator interface (demo).

A LockDownRadioControl receiver needs none of this: it plugs into the computer on its own and flies the simulator from your own transmitter. This role is for someone else's receiver, or for when all yours are in helicopters.

Like it? The receiver needs no dongle

The dongle is the little brother of the LockDownRadioControl receiver: the same brain with the radio fitted. The receiver does everything on this page and flies the model, so there is no dongle to fit and no spare port used up. It updates itself over the air, and flies a simulator from your own transmitter.

The whole system is free and open source: about £35 of parts for a receiver, and from about £120 in parts for a transmitter (approximate). The Version 2 receiver works with the Version 1 and Version 2 transmitters.

The port and its pins

The dongle's lead carries the same four pins as the Nexus port, in the same order, so it plugs straight in. Building your own? This is the order, printed on the Nexus-X left to right with EXT-V on the left:

Nexus port pinSignalXIAO pinWire on the Nexus lead
RXFlight controller listeningD6White
TXFlight controller talkingD5Green
+5 V from the flight controller5VRed
−GroundGNDBlack
Wiring diagram: the Nexus-X port's RX, TX, plus and minus pins go to the XIAO's D6, D5, 5V and GND on the white, green, red and black wires
The four wires: RX to D6, TX to D5, + to 5V, − to GND.

Easiest of all: use the four-way lead that came in the box with the Nexus. One end already carries the plug that fits the port. Strip the four bare ends and solder them to the board: white to D6, green to D5, red to 5V, black to GND.

Check the colours on your own lead

Those four are right for the lead that came with my Nexus. Another may be wired differently, and leads from other suppliers certainly are. Read the pin labels beside the port, or the manual, and check with a meter before the first power-up. Getting + and − the wrong way round can destroy the flight controller.

Build it with four wires, not the circuit board

Do not order the dongle circuit board in the repository (RXV2/kicad/dongle). Its first batch had the plug wired wrongly: it put 5 V onto a signal pin and destroyed two chips. Four wires are all a dongle needs.

A Seeed XIAO ESP32-S3 beside the Nexus four-way lead, its plug on one end and four bare wires on the other: white, green, red and black
Everything a dongle is: the board, and the lead that came with the Nexus. Only the four bare ends need soldering.

FlyDragon Pro: use the GPS port

On a FlyDragon Pro, use the six-pin GPS port on the end of the case: everything on one plug, and its 5.0V pin is regulated.

Do not take power from RX2/TX2

Like the servo pins, their + carries whatever the ESC's BEC gives, often 6–8.4 V, which would destroy the dongle. (RX2/TX2 can still carry the two signal wires, or use a 5 V regulator such as a Pololu S9V11F5 in the + lead.) A LockDownRadioControl receiver built on its circuit board has its own regulator, so RX2/TX2 power suits it. Those board files are not published yet. A hand-wired receiver has no regulator: treat it like the dongle and use the 5.0V GPS port.

FlyDragon GPS portBoard pinOn my lead
5.0V5Vred → red
RX5 (the FlyDragon listens)D6white → green
TX5 (the FlyDragon talks)D5green → white
SCL, SDA—not used
GNDGNDblack → black

Set the BEC to 6 V or more

The FlyDragon's own 5 V needs a higher voltage going in. Fed only 5 V by the BEC, everything stopped working once the USB cable was connected; at 8 V it was fine. Most helicopter BECs already run at 6–8.4 V.

Making your own: the software

The dongle is a bare Seeed XIAO ESP32-S3 and four wires: the pin table above is the whole of the wiring. This is how to put the software in.

Fit the aerial

The little aerial in the box presses onto the tiny gold socket on top of the board. Without it, Bluetooth and WiFi reach about an arm's length. Easy to forget; I did.

Use a data cable

You need a USB-C cable that carries data, not just power. A charge-only lead is the commonest reason a new board never appears.

The easy way: one click, in your browser

Plug the chip into a computer, open the flasher and press one button. The browser writes the software straight in: nothing to install, nothing to download. It erases as it goes, so the same button also puts a used board back exactly as new.

Flash a chip from your browser

Chrome, Edge or Opera, on a desktop or laptop. Safari, Firefox and phones cannot do it.

By hand: five ready-made files

Only if you would rather do it yourself, or your browser cannot. Nothing to compile. Works on Mac, Windows and Linux.

  1. Install esptool

    Espressif's flashing program. With Python already on the computer:

    pip install esptool
  2. Download the five files

    Into one folder. They are always the current release:

  3. Put the board into flashing mode

    Plug it in. Hold B, tap R, let go of B. The yellow light goes out when it has worked. (A red light may stay on: that is the charger; ignore it.)

    Do it every time. A board that already has our software takes the USB socket for its own use, so no port appears without the buttons. The port then shows as /dev/cu.usbmodem… on a Mac, or COM3 or similar on Windows.

  4. Write all five in one go

    From that folder. Put your own port in place of the one here:

    esptool --chip esp32s3 --port /dev/cu.usbmodem101 --baud 921600 write_flash -z --flash_mode dio --flash_freq 80m --flash_size 8MB 0x0 bootloader.bin 0x8000 partitions.bin 0xe000 boot_app0.bin 0x10000 firmware.bin 0x670000 littlefs.bin

    Check: every one of the five reports "Hash of data verified". If one does not, run it again.

The addresses matter

littlefs.bin at 0x670000 holds every page you see in the app. Leave it out and the dongle runs, but its screens are blank.

If the board never appears as a port

Try a different USB-C cable first: the orange charging light comes on even with a charge-only lead, so power is no proof of data. Then do B and R again.

Or build it from the source

Everything is free on GitHub: github.com/Mmessiter/LDRC_V2. The receiver and dongle software (GPL-3.0-or-later) is the RXV2 folder: one program does both jobs. Install PlatformIO and Node.js. Do B and R before each of the two upload commands, and put your own port in place of the one here:

git clone https://github.com/Mmessiter/LDRC_V2.git
cd LDRC_V2/RXV2
pio run -e xiao_s3_usb -t upload --upload-port /dev/cu.usbmodem101
pio run -e xiao_s3_usb -t uploadfs --upload-port /dev/cu.usbmodem101

The first command writes the program, the second the app's pages. On Windows the port is COM3 or similar.

Then: first switch-on

  1. Unplug it and plug it back in

    The USB port then goes quiet. That is normal, not a sign of failure.

  2. Name it

    Open the phone app and tap Connect: the new board is in the list as Untitled. Rename it at once, because two boards with the same name cannot be told apart. Or join its own WiFi network, Untitled, from a computer and open 192.168.4.1.

  3. Nothing else to configure

    A board with no radio chips works out what it is. Wired to a flight controller it is a dongle. Fed a receiver's signal on D5 it is a simulator interface. After this it updates itself over the air: you should not need a cable again.

What a dongle cannot do

It has no radio, so it does not fly or bind, and it keeps no flight records. View channels still shows the sticks, as the flight controller sees them. Almost everything for setting up and tuning Rotorflight is there.

Want the rest as well?

The LockDownRadioControl receiver does everything the dongle does and flies the model: radio link, telemetry on the transmitter, flight records, and the simulator from your own transmitter with no dongle at all.

A dongle and a receiver can both be wired to one flight controller. Connect the phone to only one of them at a time.

↑