One role per device
Hardware Center groups every device by the one job it does:
- Controllers fly the simulator, or act as pilot input in Real Flight.
- Real aircraft connect in Real Flight.
- Cameras only show video.
Open it from Real Flight → Hardware Center.
Ordinary gamepads and RC transmitters are set up in the controller screens: see guided radio setup and the controller guides. This page covers the extra hardware.
Pair a Wi-Fi controller
You can build a Wi-Fi controller with an ESP32 board and the firmware examples below. Pairing makes every packet it sends authenticated:
- Hardware Center → Pair new Wi-Fi controller. The game shows a 64-character pairing key.
- Copy the key into the sketch's
DH_PAIRING_KEYand set your Wi-Fi name, password and the phone's IP address. Then flash the board. - Open the controller settings → Connections tab. Enter the board's IP address in the custom Wi-Fi field and choose Listen for custom Wi-Fi. Then activate it like any controller.
The game sends a fresh challenge every session. The board answers only after it receives that challenge. Every packet carries an HMAC-SHA256 tag, so a replayed or forged packet is ignored.
Only paired boards can be pilot input for a real aircraft. Unpaired (v1) Wi-Fi boards still work, but only in the simulator. Replace pairing key issues a new key and locks out the old board; Forget pairing removes pairing altogether.
USB serial boards (Arduino UNO / Mega)
Boards without native USB gamepad support can send stick data over USB serial using the documented DHS1 frame format. It is read-only: the game never writes to the board.
- Flash the UNO example sketch and connect the board to the phone with a USB-OTG adapter.
- Hardware Center → USB serial boards → pick the board and grant USB permission.
- Opening the port resets an UNO. It announces itself after it boots.
- Then map, calibrate and activate it like any controller.
Only boards with a CDC-ACM USB chip work today: genuine UNO R3 (16U2), Leonardo and ESP32-S3. Clones that use CH340, CP210x or FTDI chips are listed but cannot be opened yet.
Firmware kits
The game's source ships four example controllers. Each one is compile-tested with pinned board packages. The UNO sketch also passed a host protocol test against the game's decoder. None has yet been flashed to a board and flown.
| Example | Board | Connection |
|---|---|---|
| UNO DHS1 controller | Arduino UNO R3 / Mega 2560 | USB serial (DHS1), 50 Hz |
| Leonardo gamepad | Arduino Leonardo / Micro | USB HID gamepad |
| ESP32-S3 gamepad | ESP32-S3-DevKitC-1 | USB HID gamepad |
| ESP32 Wi-Fi controller | ESP32 / ESP32-C3 | Wi-Fi, paired and authenticated |
Wiring basics:
- ESP32 boards are 3.3 V. Power the sticks from 3V3, never 5 V.
- On a classic ESP32 with Wi-Fi on, use the ADC1 pins (GPIO32–39).
- Use 10 kΩ potentiometer sticks, with buttons wired to GND.
Video sources
| Source | What it is | Notes |
|---|---|---|
| DJI camera | DJI aircraft through the Mobile SDK | Supported DJI aircraft only |
| RTSP H.264 | Raspberry Pi camera served by MediaMTX | Played with Android's Media3 player; TCP option for lossy Wi-Fi |
| MJPEG | ESP32-CAM or IP camera, e.g. http://192.168.4.1:81/stream |
Fine on the bench; latency not measured |
| Goggles only | Analog and HD digital FPV (DJI O3/O4, Walksnail, HDZero) | Stays in your goggles; the console shows telemetry only |
The console warns when video has stalled for more than half a second.
Raspberry Pi companion
For a PX4 or ArduPilot aircraft, a Raspberry Pi 4 or Zero 2 W with a Camera Module 3 can carry both telemetry and video:
- mavlink-router reads the flight controller's TELEM UART and serves MAVLink on UDP 14550.
- MediaMTX serves the camera as hardware-encoded H.264 RTSP at 1280×720, 30 fps.
In My Real Drone:
- set Connection to MAVLink;
- enter the Pi as the vehicle address, because the router waits for the phone to speak first;
- set Video to RTSP with
rtsp://<pi-address>:8554/cam.
The Pi only relays telemetry and video. It is not a control gateway. The install script is written and syntax-checked but has not yet been run on a Raspberry Pi. A Pi 5 has no hardware H.264 encoder, so measure latency before you rely on it.

