Skip to content

Repository files navigation

Poster

FPVRaceOne

Personal FPV Lap Timer

Build one yourself OR Purchase FPVRaceOne ready to use

License: MIT

A single node personal lap timing solution for 5.8 GHz FPV drones that can be networked to other units (8 total) for multi-pilot racing. Perfect for personal race or practice sessions with one unit (indoor and large scale) up to MultiGP race events with multiple units. No additional networking hardware required — just plug in a USB power, connect over wifi, calibrate, and fly.

Up to 8 devices can wirelessly network with each other to act as a single multi-node lap timer (no additional hardware or software needed) — one device is set to master mode and acts as race director with up to 7 additional clients. Manually connect clients or have the master automatically recruit clients in range. Master can see all pilot times and control the race, while single pilots can remain logged into their device and see all other racer times - or initiate individual practice races.

Documentation
Quick Start - To get started as a single pilot with the bare minimum information
Getting Started - For a more comprehensive step by step guide
User Guide - The full manual, but not necessarily a step by step
Build From Scratch - Wiring, assembly and flashing, if you'd rather build your own


Screenshots - Single Mode

Race Screen Configuration
Race Screen Config Menu
Calibration Wizard — Recording Calibration Wizard — Complete
Calibration Recording Calibration Complete

Screenshots - Multi Mode

Master Race Screen Master Pilot Edit
Master Race Screen Master Pilot Edit

14 Themes to choose from (4 samples below)

Theme example 1 Theme example 2 Theme example 3 Theme example 4


How It Works

FPVRaceOne uses an RX5808 video receiver module to monitor your drone's video transmitter RSSI (signal strength). As you fly through the timing gate:

  1. Approach — RSSI rises above the Enter threshold → crossing begins
  2. Peak — RSSI peaks when you're closest to the gate
  3. Exit — RSSI falls below the Exit threshold → lap time recorded

Note that FPVRaceOne has an automatic calibration wizard to take the guess work out of setting the RSSI values (see below)

RSSI  │     /\
      │    /  \
      │   /    \     ← Single clean peak
Enter ├──/──────\───
      │ /        \
Exit  ├/──────────\─
      └─────────────── Time

The time between consecutive peaks is your lap time. The signal processing pipeline is tuned with sensible defaults out of the box, with a single Pipeline Smoothing slider for fine-tuning the balance between responsiveness and noise rejection.


Key Features

Connectivity

  • WiFi Access Point — works with any browser on any device (laptop, pc, phone or tablet) with wifi, no app required
  • Built-in Multi-Node Networking — up to 8 lap timers can connect together to run a multi pilot race.

Signal Processing

Hardware-timed acquisition. The ESP32-C6's ADC samples the RX5808's RSSI line continuously into a DMA ring at 20 kHz, completely independent of CPU scheduling.

Single-stage filtering. A running median with a small odd window (N = 3–15, default 7, set by the Pipeline Smoothing slider). A median rejects isolated spike samples outright while preserving the true peak amplitude of a fast pass — the property a mean-based filter doesn't have. Backed by a two-sample enter debounce, so a brief noise burst cannot open a crossing, and a watchdog that releases the crossing state if RSSI drifts up to the enter threshold and stays there.

RSSI Automatic Calibration Wizard

Guided calibration wizard with real-time RSSI charts: Fly 3 passes over the start gate (timer) and let the wizard auto calibrate

  • Automatic 3-peak detection with manual override
  • Enter / Exit threshold calculation with conservative safety margins (Enter ≈ 95 % of weakest peak, Exit = Enter − 4, raised above the noise floor)
  • Peak-spread warning if the three peaks aren't reasonably equal — flagged for re-fly before applying
  • Live RSSI chart shows exactly what the lap detector sees (final pipeline output) Note: recording is capped at 100 seconds, and the wizard stops on its own when it gets there. If the timer is short on memory it will grant a shorter window and tell you so on screen before you start. Nothing is recorded until you press Start Recording, so take your position at the gate first. Fly through the timing gate, on to the next closest gate, back through the gate (out to the next gate on the other side), and back through a third time — then land and press Stop Recording.

Multi-Node Racing — Built-In Race Directing

Network up to 8 devices together using on-board Wifi (no router or extra hardware required). One device runs in Master mode (race director); up to seven Client devices join the master's WiFi and forward laps automatically. Each pilot should remain connected to their own device over wifi. All devices in multi-mode will see the entire race board.

  • Master Recruit — the master can automatically scan for FPVRaceOne clients in range and configure them to join the network. Or each client can search for a master and connect manually.
  • One-tap Start All / Stop All — broadcast a synchronised race start to all pilot on the network
  • Live all-pilots dashboard on the master and clients — each client renders as a card with pilot name, running indicator (●/○), live lap count, and last lap time, updated via Server-Sent Events with sub-second latency. Slot cards labelled A through G match what the director sees in serial logs
  • Master can edit and configure all pilots from the Race tab — pencil icon on every slot card opens a per-pilot editor for name, color, band, channel, RSSI thresholds, and skip flag — works on the master's own host card too
  • Calibration Wizard from the modal — run the full guided wizard against any connected client; the wizard records on the target client and pushes thresholds back when you click Apply
  • Live RSSI feed in the modal — toggle on the right of the title polls the selected client at 5 Hz; the firmware-side peak-since-last sampler catches a brief gate pass even at that rate. Red Enter / orange Exit threshold lines track the sliders as you drag
  • Move (Swap) Pilot to Slot — letter dropdown (A–G) reassigns a node to a different slot; if it's occupied, the two pilots swap places and both persist their new slot to NVS
  • DNF tracking — a pilot who taps Stop locally during a master race shows up as DNF on the director's screen; the rest of the heat continues uninterrupted
  • Solo-practice override — each client has an Ignore Race Director Start/Stop if already racing toggle so a director's broadcast doesn't kill an in-progress practice run
  • Master discovery — clients can scan for available masters in range and pick one from a list (no manual SSID typing required)
  • Same UI on every device — every client also runs as a fully featured standalone timer when no master is broadcasting

Voice Announcements

  • Spoken laps using your browser's built-in voice (Web Speech API) — no audio files on the device, so the announcer follows whichever device has the web UI open
  • Configurable announcement format (pilot + lap + time, pilot + time, lap + time, time only)
  • Per-pass beep or full speech, 2-lap and 3-lap consecutive variants
  • Lap times of 60 seconds or longer are announced as "X minute(s) Y point ZZ" — long-track friendly
  • Single on/off Voice toggle in Settings

Race Analysis

  • Real-time lap tracking with gap-to-best analysis
  • Fastest lap highlighting
  • Fastest 3 consecutive laps (RaceGOW format)
  • Interactive race timeline + playback for every saved session
  • Marshalling mode — add, remove, or edit laps after the race ended
  • Download the session as JSON; re-import later. Race history lives in RAM only on the current hardware — download to keep.

Firmware Updates

  • One-tap OTA from GitHub Releases — built into the device. Enter your home WiFi once; the device joins, checks the latest release, downloads the firmware + filesystem images, flashes both, and reboots.
  • Updates are blocked while a race is running. Failed downloads keep the previous firmware, so the device can't be bricked from a flaky network.
  • Manual flashing via our custom tool FPVRaceOne-Flasher (Windows) — see Flash the Firmware.

Supported Bands & Frequencies

Band Channels (MHz)
A (Boscam A) 5865, 5845, 5825, 5805, 5785, 5765, 5745, 5725
B (Boscam B) 5733, 5752, 5771, 5790, 5809, 5828, 5847, 5866
E (Boscam E) 5705, 5685, 5665, 5645, 5885, 5905, 5925, 5945
F (Fatshark) 5740, 5760, 5780, 5800, 5820, 5840, 5860, 5880
R (RaceBand) 5658, 5695, 5732, 5769, 5806, 5843, 5880, 5917
L (LowBand) 5362, 5399, 5436, 5473, 5510, 5547, 5584, 5621
DJI v1 25 MHz 5660, 5695, 5735, 5770, 5805, 5878, 5914, 5839
DJI v1 25 CE 5735, 5770, 5805, 5839
DJI v1 50 5695, 5770, 5878, 5839
DJI O3/O4 10/20 5669, 5705, 5768, 5804, 5839, 5876, 5912
DJI O3/O4 20 CE 5768, 5804, 5839
DJI O3/O4 40 5677, 5794, 5902
DJI O3/O4 40 CE 5794
DJI O4 RaceBand 5658, 5695, 5732, 5769, 5806, 5843, 5880, 5917
HDZero RaceBand 5658, 5695, 5732, 5769, 5806, 5843, 5880, 5917
HDZero E 5707
HDZero F 5740, 5760, 5800
HDZero CE 5732, 5769, 5806, 5843
Walksnail RaceBand 5658, 5659, 5732, 5769, 5806, 5843, 5880, 5917
Walksnail 25 5660, 5695, 5735, 5770, 5805, 5878, 5914, 5839
Walksnail 25 CE 5735, 5770, 5805, 5839
Walksnail 50 5695, 5770, 5878, 5839

Quick Start

Hardware

Pre-made and flashed hardware — - Click here to purchase your FPVRaceOne at our store -

Prefer to build your own? The wiring diagram, bill of materials, SPI conversion and a step-by-step flashing guide are in Build From Scratch →.

  • case/ — 3D-printable enclosure, ready-to-slice .3mf projects (single, four-up, and an ironed-lid variant). PETG, no supports — see The 3D-Printed Case

Detailed hardware setup →

Connect via WiFi

  1. Power on the device
  2. Connect your phone or laptop to the FPVRaceOne_XXXX network (password: fpvraceone)
  3. Open http://192.168.4.1 in your browser (http://192.168.5.1 in Master mode)
  4. Go to Settings → Set your VTx band and channel
  5. Go to Calibration → Run the wizard to set RSSI thresholds
  6. Press Start and fly!

Complete user guide →


Firmware Updates

FPVRaceOne can check for and automatically updates itself from GitHub Releases — no PlatformIO, no cables, no flashing tools required for normal updates.

  1. Open the web UI → Settings → Firmware Update
  2. Enter your home WiFi credentials (one-time)
  3. Tap Check for Updates — the device briefly joins your home network, queries GitHub, then returns to AP mode
  4. If a newer release is available you'll see the version and release notes — tap Update Now
  5. The device flashes the filesystem, then the firmware, then reboots once. Total time ~1–3 minutes.
  6. Hard reload your browser to guarantee new changes are loaded (Ctrl+Shift+R on Windows/Linux, Cmd+Shift+R on Mac. Tap-and-hold the refresh button on mobile Chrome to get "Hard reload")

Updates are automatically blocked while a race is running.


Project Status

Product: FPVRaceOne
Platform: Seeed XIAO ESP32-C6
License: MIT
Status: Stable Release — actively maintained

Changelog

See CHANGELOG.md for the version history.


Credits

FPVRaceOne originated from FPVGate v1.2.0 by Louis Hitchcock, which itself originated as a fork and substantial rewrite of PhobosLT by Phobos. FPVRaceOne has since diverged into an independently developed project. FPVGate is a fork of PhobosLT by phobos-.

Thanks goes out to Louis Hitchcock for his understanding, patience and partnership. Feel free to check out his work over at the FPVGate project.


License

This project is licensed under the MIT License — see the LICENSE file for details.


Built for pilots, by pilots.

About

A personal FPV race timing solution that can be networked with others. Fly solo. Race together!

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages