Skip to content

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

License

Notifications You must be signed in to change notification settings

LouisHitchcock/FPVGate

 
 

Repository files navigation

FPVGate

Personal FPV Lap Timer for ESP32-S3 / ESP32-S3 Super Mini

Website Ko-fi

License: CC BY-NC-SA 4.0 PlatformIO GitHub release

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 Wizard Race History
Calibration Wizard Race History

Key Features

Dual Connectivity

  • WiFi Access Point (works with any device)
  • USB Serial CDC (zero-latency local connection)
  • Electron desktop app for Windows/Mac/Linux

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 (4 voice packs)

Webhooks & Integration

  • HTTP webhook support for external LED controllers
  • Configurable triggers (race start/stop, laps)
  • Gate LED control with granular event settings
  • Network-based device integration

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

Component Required Notes
ESP32-S3-DevKitC-1 or ESP32-S3 Super Mini Yes Main controller (both supported)
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:

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:

  • ESP32-S3 DevKitC-1 (8MB Flash) - Recommended
  • ESP32-S3 Super Mini (4MB Flash)
  • ESP32-C3
  • 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.5.2 Platform: ESP32-S3 DevKitC-1, ESP32-S3 Super Mini License: CC BY-NC-SA 4.0
Status: Stable - actively maintained

Recent Updates

v1.5.1-dev (In Development)

  • ESP32-S3 Super Mini support (4MB flash variant)
  • Compact form factor with optimized pin mappings
  • Dual board support (DevKitC-1 and Super Mini)

v1.5.0

  • Digital FPV Band Support - DJI, HDZero, WalkSnail (16 new bands)
  • Improved Lap Detection Algorithm - Minimizes false positives with enhanced signal processing
  • 5-stage RSSI filtering pipeline (Kalman, median, moving average, EMA, step limiter)
  • Enhanced Kalman filter with proper initialization
  • Fixed VTx frequency persistence bug
  • Fixed RGB LED RMT channel conflict on ESP32-S3
  • Contributor integration from Richard Amiss (@ramiss)

v1.4.0

  • Track Management System - Create, edit, and manage track profiles with images
  • Distance Tracking - Real-time distance display and statistics
  • Webhook System - HTTP webhooks for external LED controller integration
  • Gate LED Control - Granular control over webhook triggers (race start/stop, laps)
  • Enhanced Self-Tests - Comprehensive diagnostics for all device features (19 tests)
  • WiFi Reboot Fix - Apply WiFi settings button now properly reboots device
  • Enhanced Race Editing - Edit race metadata, lap times, and track associations
  • Track Selection - Choose active track before racing (persists to EEPROM)

v1.3.3

  • Modern Configuration UI with full-screen overlay modal
  • WebSocket Stability with SSE keepalive mechanism
  • Fixed duplicate element IDs and WiFi configuration issues

v1.3.2

  • WiFi Status Display with real-time connection monitoring
  • Marshalling Mode for post-race lap editing
  • LED settings persistence to EEPROM

v1.3.0

  • iOS/Safari full audio support with vibration feedback
  • Mobile-responsive interface for phones and tablets
  • USB Serial CDC connectivity with Electron desktop app
  • OSD overlay system for streaming (transparent, real-time)
  • Cross-device race storage on SD card
  • Race tagging, naming, and detailed analysis

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

Topics

Resources

License

Stars

Watchers

Forks

Languages

  • C++ 40.4%
  • JavaScript 40.3%
  • HTML 9.3%
  • CSS 5.6%
  • Python 4.3%
  • C 0.1%