Personal FPV Lap Timer for ESP32-S3 / ESP32-S3 Super Mini
A compact, self-contained RSSI-based lap timing solution for 5.8GHz FPV drones. Perfect for personal practice sessions, small indoor tracks, and training.
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.
| Race Screen | Configuration Menu |
|---|---|
![]() |
![]() |
| Calibration Wizard | Race History |
|---|---|
![]() |
![]() |
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
| 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 |
Detailed wiring diagrams are available for each supported board:
- ESP32-S3 DevKitC-1 (8MB Flash) - Recommended
- ESP32-S3 Super Mini (4MB Flash) - Compact
- ESP32-C3 - Expert mode
- LilyGO T-Energy S3 - Expert mode, integrated battery
Option A: Web Flasher (Recommended)
The easiest way to install FPVGate is using our web-based flasher:
https://fpvgate.xyz/flasher.html
- Open the link in Chrome, Edge, or Opera (Web Serial API required)
- Connect your ESP32 via USB
- Select your board type
- Click "Connect" and choose your device's COM port
- 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.binOption 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 uploadfsWiFi (Default):
- Connect to
FPVGate_XXXXnetwork (password:fpvgate1) - Open
http://fpvgate.localorhttp://192.168.4.1 - Go to Configuration → Set your VTx frequency
- Go to Calibration → Set RSSI thresholds
- Start racing!
USB (Electron App):
- Download Electron app from releases
- Connect ESP32-S3 via USB
- Launch app and select COM port
- All features work identically to WiFi mode
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:
- Quick Start - Fast track for experienced users
- Voice Generation - Generate custom voices
- Multi-Voice Setup - Configure multiple voices
- SD Card Migration - SD card setup
- Changelog - Version history
FPVGate uses an RX5808 video receiver module to monitor your drone's RSSI (signal strength). As you fly through the gate:
- Approach - RSSI rises above Enter threshold → crossing starts
- Peak - RSSI peaks when you're closest to the gate
- 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
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
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
- Bug Reports: GitHub Issues
- Feature Requests: GitHub Discussions
- Support Development: Ko-fi
- Star this repo if you find it useful!
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.
See CONTRIBUTORS.md for full contributor list.
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



