Skip to content

About

Affordable, Feature Rich, High-performance & Scalable FPV Race Timer Solution

Resources

Stars

0 stars

Watchers

0 watching

Forks

 
 

Repository files navigation

FPVGate

Personal FPV Lap Timer for Seeed Studio XIAO ESP32S3 / ESP32-S3-DevKitC-1

Website License: CC BY-NC-SA 4.0 Discord Ko-fi Shop

A compact, self-contained RSSI-based lap timing solution for 5.8GHz FPV drones. Perfect for personal practice sessions, small indoor tracks, and training.


What is FPVGate?

FPVGate measures lap times by detecting your drone's video transmitter signal strength (RSSI). When you fly through the gate, it detects the peak signal and records your lap time. No transponders, no complex setup—just plug in, calibrate, and fly.

Screenshots

Race Screen Configuration Menu
Race Screen Config Menu
Calibration Race History
Calibration Race History
Multi Pilot FPVGate AIO
Multi Pilot FPVGate AIO

Key Features

Dual Connectivity

  • WiFi Access Point (works with any device)
  • USB Serial CDC (zero-latency local connection)

Visual Feedback

  • RGB LED indicators with 10 customizable presets (settings persist to EEPROM)
  • Real-time WiFi status display with connection monitoring
  • Real-time RSSI visualization
  • OSD overlay for live streaming (transparent, multi-monitor support)
  • Mobile-responsive web interface

Natural Voice Announcements

  • Pre-recorded ElevenLabs voices (4 voices included)
  • PiperTTS for low-latency synthesis
  • Phonetic name support
  • Configurable announcement formats

Race Analysis

  • Real-time lap tracking with gap analysis
  • Fastest lap highlighting
  • Fastest 3 consecutive laps (RaceGOW format)
  • Race history with export/import (cross-device SD card storage)
  • Race tagging and naming
  • Marshalling mode for post-race lap editing (add/remove/edit laps)
  • Detailed race analysis view

Track Management

  • Create and manage track profiles with metadata
  • Track distance tracking (real-time distance display)
  • Track images and custom notes
  • Total distance and distance remaining calculations
  • Track association with races
  • Up to 50 tracks stored on SD card

Smart Storage

  • SD card support for audio files and race data
  • Individual race files with index for better performance
  • Auto-migration from flash to SD
  • Cross-device race history (accessible from all connected devices)
  • Config backup/restore
  • Multi-voice audio library (5 voice packs)

Webhooks & Integration

  • Configurable triggers (race start/stop, laps)
  • Gate LED control with granular event settings
  • Network-based device integration

RotorHazard Integration

  • Bidirectional race start/stop with RotorHazard
  • NTP-style clock synchronization for accurate timing
  • Automatic lap submission to RH via HTTP POST
  • Companion RH plugin included (rh-plugin/)

I2S Speaker Audio (MAX98357A)

  • Hardware speaker output for race announcements
  • Non-blocking MP3 playback from SD card
  • Countdown, lap times, race start/stop audio

Developer Friendly

  • Comprehensive self-test diagnostics (19 tests)
  • OTA firmware updates
  • Transport abstraction layer
  • Open source (CC BY-NC-SA 4.0)

Supported Bands:

Analog FPV:

  • 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

Digital FPV:

  • DJI - v1-25, v1-25CE, v1_50, 03/04-20, 03/04-20CE, 03/04-40, 03/04-40CE, 04-R
  • HDZero - R, E, F, CE
  • WalkSnail - R, 25, 25CE, 50

Quick Start

1. Hardware You'll Need

Want a plug-and-play solution? The FPVGate AIO is a pre-built, ready-to-use device -- no soldering, wiring, or flashing required. Perfect if you just want to buy a device and start timing laps immediately.

Building your own? Here's what you'll need:

Component Required Notes
Seeed Studio XIAO ESP32S3 (Recommended) or ESP32-S3-DevKitC-1 Yes Main controller
RX5808 Module Yes 5.8GHz receiver (SPI mod required)
MicroSD Card Yes FAT32, 1GB+ for audio storage
5V Power Supply Yes USB power or any 5V power source
WS2812 RGB LEDs Optional 1-2 LEDs for visual feedback
Active Buzzer Optional 3.3V-5V for beeps

2. Wiring Diagrams

Detailed wiring diagrams are available for each supported board:

Note on ESP32-S3 Super Mini: Through testing, this board has proven unreliable due to inconsistent quality from various suppliers. Some revisions experience frequent brownouts under load. This board is still supported but is not recommended for new builds.

Complete hardware guide →

3. Flash Firmware

Option A: Web Flasher (Recommended)

The easiest way to install FPVGate is using our web-based flasher:

https://fpvgate.xyz/flasher.html

  1. Open the link in Chrome, Edge, or Opera (Web Serial API required)
  2. Connect your ESP32 via USB
  3. Select your board type
  4. Click "Connect" and choose your device's COM port
  5. Click "Flash" and wait for completion (~2-3 minutes)

Supported boards:

  • Seeed Studio XIAO ESP32S3 (8MB) - Recommended
  • ESP32-S3 DevKitC-1 (8MB Flash)
  • ESP32-S3 Super Mini (4MB Flash) - Not recommended
  • LilyGO T-Energy S3

Option B: Command Line (Advanced)

# Download board-specific binaries from releases page, then flash:
esptool.py --chip esp32s3 --port COM3 write_flash -z \
  0x0 [BOARD]-bootloader.bin \
  0x8000 [BOARD]-partitions.bin \
  0x10000 [BOARD]-firmware.bin \
  0x410000 [BOARD]-littlefs.bin

Option C: Build from Source

git clone https://github.com/LouisHitchcock/FPVGate.git
cd FPVGate

# For ESP32-S3 DevKitC-1 (8MB flash):
pio run -e ESP32S3 -t upload
pio run -e ESP32S3 -t uploadfs

# For ESP32-S3 Super Mini (4MB flash):
pio run -e ESP32S3SuperMini -t upload
pio run -e ESP32S3SuperMini -t uploadfs

Detailed setup guide →

4. Connect and Configure

WiFi (Default):

  1. Connect to FPVGate_XXXX network (password: fpvgate1)
  2. Open http://fpvgate.local or http://192.168.4.1
  3. Go to Configuration → Set your VTx frequency
  4. Go to Calibration → Set RSSI thresholds
  5. Start racing!

USB (Electron App):

  1. Download Electron app from releases
  2. Connect ESP32-S3 via USB
  3. Launch app and select COM port
  4. All features work identically to WiFi mode

Complete user guide →


Documentation

Getting Started - Hardware setup, wiring, flashing, initial config
User Guide - How to connect, calibrate, race, and use features
Hardware Guide - Components, wiring diagrams, troubleshooting
Features Guide - In-depth feature documentation
Development Guide - Building from source, contributing

Additional Docs:


How It Works

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

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

The time between peaks = your lap time. Simple, reliable, and accurate.

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

Project Status

Current Version: v1.7.3 Platform: ESP32-S3 DevKitC-1, Seeed Studio XIAO ESP32S3, FPVGate AIO License: CC BY-NC-SA 4.0
Status: Stable - actively maintained

Recent Updates

v1.7.3 (Latest Release - June 13, 2026)

  • Race Notes — Add/edit notes per race with auto-open-on-stop option
  • Configurable Race Analytics — Independent toggle for Fastest Lap, Fastest 3 Consecutive, Lap Times, and Consistency panels
  • Multilingual Voice Packs — German, Spanish, French ElevenLabs voices with canonical voice_* structure
  • Editable Calibration Results — Fine-tune RSSI thresholds and Min Lap Time after running the wizard
  • FPVGate Solo — New lightweight board target

v1.7.0 (March 20, 2026)

  • RotorHazard Integration - Bidirectional race control, NTP clock sync, lap submission, companion RH plugin
  • I2S Speaker Audio (MAX98357A) - Hardware speaker output for race announcements
  • New Boards - FPVGate AIO V4, XIAO ESP32S3 Plus
  • Config v16 - New fields for RH integration and speaker settings

v1.6.2 (February 26, 2026)

  • Waveshare ESP32-S3-LCD-2 - New board support (Expert Mode)
  • Calibration Ignore Regions - Mark noisy RSSI sections to exclude from threshold
  • Novacore Filter Tuning - Per-filter toggles and parameter sliders
  • Debug RSSI Overlay - Real-time debug chart in diagnostics

v1.6.1 (February 14, 2026)

  • Multi-Pilot Race Analysis - Current lap timer, lap times chart, consistency chart
  • Race Synchronization - Redesigned sync UI, TTS format override, speech keepalive
  • Mobile Experience - Settings modal navigation, iOS Safari hostname fix

v1.6.0 (February 9, 2026)

  • Race Synchronization System - Multi-timer sync for distributed race timing
  • Audio Controls - Beep volume slider, independent browser audio volume

Full changelog →


Community & Support


Credits

FPVGate is a heavily modified fork of PhobosLT by phobos-. The original project provided the foundation for RSSI-based lap timing.

Portions of the timing logic are inspired by RotorHazard.

Contributors

See CONTRIBUTORS.md for full contributor list.


License

This project is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

You are free to share and adapt this work for non-commercial purposes, as long as you provide attribution and distribute any modifications under the same license.

See the LICENSE file for full details or visit https://creativecommons.org/licenses/by-nc-sa/4.0/


Made with care for the FPV community

About

Affordable, Feature Rich, High-performance & Scalable FPV Race Timer Solution

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages