Skip to content

ramiss/FPVRaceOne

Repository files navigation

Poster

FPVRaceOne

Personal FPV Lap Timer

- Click here to purchase your FPVRaceOne at our Etsy store -

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


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
Calibration Wizard — Recording Calibration Wizard — Complete
Calibration Recording Calibration Complete

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 to run a multi pilot race.

Signal Processing

An RSSI processing pipeline optimized for the ESP32: Kalman → Median-of-3 → 7-sample moving average → EMA → step limiter

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 ≈ 7 RSSI units below Enter, 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 that the timer can only record for 100 seconds. It is recommended to fly through the timing gate, to the next closest gate, back through the gate to the next gate and back through a third time. Land and 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 docs/FLASHING_OPTIONAL.md.

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 Etsy store -

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 Beta — actively maintained

Changelog

See CHANGELOG.md for the version history.


Credits

FPVRaceOne is derived from FPVGate v1.2.0 by LouisHitchcock, which is itself a heavily modified fork of PhobosLT by phobos-. The original project provided the foundation for RSSI-based lap timing on ESP32.

Note that prior or alternate versions of FPVGate will not flash to FPVRaceOne official hardware.


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

Watchers

Forks

Releases

Packages

Contributors

Languages