Documentation

Everything you need to know to get started with FPVGate

Getting Started

FPVGate is an RSSI-based lap timing solution for FPV drones. It measures lap times by detecting your drone's video transmitter signal strength as you fly through the gate.

What You'll Need

  • Seeed Studio XIAO ESP32S3 (Recommended) or ESP32-S3 DevKitC-1
  • RX5808 Module (SPI modded)
  • MicroSD Card (FAT32, 1GB+)
  • 5V Power Supply (USB power or any 5V source)
  • WS2812 RGB LEDs (optional)
  • Active Buzzer (optional)

Hardware Setup

FPVGate supports multiple ESP32 boards. Select your board below to see the wiring diagram:

Important

The RX5808 module must be SPI modded to work with FPVGate. See the SPI mod guide.

Note on ESP32-S3 Super Mini

Through testing, the ESP32-S3 Super Mini has proven unreliable due to inconsistent board quality from various suppliers. Some revisions experience frequent brownouts under load. This board is still available under Expert Mode in the flasher, but is not recommended for new builds.

Flashing Firmware

Use our web-based flasher for the easiest installation experience. No command line required!

1

Connect Your Device

Connect your ESP32-S3 to your computer via USB. Use Chrome, Edge, or Opera browser.

2

Select Board & Version

Choose your board type and the firmware version you want to install.

3

Flash

Click "Connect & Flash Device" and wait 2-3 minutes for the process to complete.

Go to Web Flasher

SD Card Setup

FPVGate uses an SD card to store voice announcement files and race data. Setting up the SD card correctly is essential for audio features.

SD Card Requirements

  • Format: FAT32
  • Size: 1GB - 32GB recommended
  • Speed: Class 10 or higher for best performance

Automatic Setup (Recommended)

Use the SD Card Setup tool on the Flasher page to automatically download and extract the correct folder structure to your SD card:

  1. Insert your FAT32-formatted SD card into your computer
  2. Go to the Web Flasher page
  3. Find the "SD Card Setup" section in the sidebar
  4. Select your firmware version
  5. Click "Select SD Card & Setup" and choose your SD card folder
  6. The tool will download and extract all required files automatically

Manual Setup

Alternatively, you can manually set up the SD card:

  1. Download the SD_Card.zip from the GitHub releases page
  2. Extract the contents to the root of your SD card
  3. Ensure the folder structure matches the expected layout (audio files in the correct directories)

Important

Make sure to use the SD_Card.zip that matches your firmware version. Each release may have different audio files or folder structures.

Configuration

After flashing, connect to the FPVGate WiFi network and access the web interface.

First-Time Setup

  1. Connect to WiFi network: FPVGate (v1.6.1+) or FPVGate_XXXX
  2. Password: fpvgate1
  3. Open browser to: http://fpvgate.local (all devices now use this simplified hostname)
  4. Go to Configuration → Set your VTx frequency
  5. Configure LED settings (if using RGB LEDs)
  6. Set up voice announcements (optional)
  7. Choose a theme in Settings (v1.5.7+)
  8. Configure battery monitoring if using a voltage divider (v1.5.6+)
  9. Adjust audio volume controls for beeps and announcements (v1.6.0+)
  10. iOS Safari is fully supported with improved hostname handling (v1.6.1+)

Calibration

Proper calibration is essential for accurate lap detection.

Calibration Wizard

FPVGate includes a guided calibration wizard that helps you set optimal RSSI thresholds:

  1. Place your drone at the gate
  2. Start the calibration wizard
  3. Move the drone through the gate several times
  4. The wizard will automatically calculate optimal thresholds

Manual Calibration

You can also manually set thresholds:

  • Enter Threshold: RSSI level when crossing starts
  • Exit Threshold: RSSI level when crossing ends
  • Peak Detection: RSSI must peak between enter and exit

Using the Lap Timer

Starting a Race

  1. Ensure calibration is complete
  2. Power on your drone
  3. Click "Start Race" on the web interface
  4. Fly through the gate - laps will be recorded automatically
  5. Click "Stop Race" when finished
Mobile/iOS Important: Your phone must NOT be on silent mode for the starting beep to play. The race countdown tone requires your device's ringer to be enabled. On iOS devices, make sure the silent switch is off.

Features During Race

  • Real-time lap display
  • Fastest lap highlighting
  • Gap analysis
  • Voice announcements for each lap
  • LED feedback (if configured)
  • On-screen displays (OSD) for live stats

Multi-Timer Race Sync

FPVGate v1.6.1 brings powerful multi-pilot racing capabilities. See the Multi-Pilot Setup section for detailed instructions.

After Race

  • View race statistics
  • Export race data
  • Compare with previous sessions
  • Edit laps if needed (Marshalling Mode)

Multi-Pilot Setup

FPVGate supports synchronizing multiple timers for multi-pilot racing. Each pilot has their own FPVGate device, and one device acts as the Master to control the race.

Sync Modes

  • Personal Mode (default) - Single pilot timing, no sync required
  • Master Mode - Controls race start/stop, receives all pilots' lap data, shows multi-pilot comparison view
  • Slave Mode - Follows Master's commands, sends lap times to Master automatically

Step 1: Connect All Devices to Same Network

All FPVGate devices must be on the same WiFi network:

  • Option A: Connect all devices to your home/external WiFi network via Configuration → WiFi & Connection
  • Option B: Keep one device in AP mode (FPVGate network), connect all other devices and your phone to that network

Step 2: Add Sync Devices (on Master)

  1. Go to Configuration → WiFi & Connection → Race Synchronization
  2. Find the "Add Device" input field
  3. Enter each slave device's IP address (e.g., 192.168.4.100)
  4. Click "Add Device" - it will appear in the sync devices list

Step 3: Set Device Roles

For each device in the list:

  • This Device: Set to "Master" on the controlling timer
  • Other Devices: Set to "Slave"

Role options: Disabled (not syncing), Master (controls race), Slave (follows master)

Step 4: Test Connections

Click "Test All Connections" to verify all devices can communicate:

  • Green checkmark = Ready to race
  • Red X = Check network connectivity

Racing in Multi-Pilot Mode

Once configured:

  • Start/Stop race from the Master device only - all slaves sync automatically
  • Each pilot's laps appear side-by-side in the Master's race view
  • Lap Times Chart and Consistency Chart compare all pilots
  • Voice announcements include all pilots' lap times
  • Race history saves complete multi-pilot data

Troubleshooting Multi-Pilot

  • Devices not connecting: Ensure all on same network subnet, check firewall allows port 80
  • Lap times not showing: Confirm slave is set to "Slave" role and master's IP is correct
  • Race not syncing: Master must be set to "Master" role, test connections first

Screenshots

Troubleshooting

Can't connect to WiFi

  • Wait 30 seconds after boot for AP to start
  • Check serial monitor for errors
  • Verify firmware flashed correctly

No lap detection

  • Verify RX5808 is SPI modded
  • Check VTx frequency matches configuration
  • Re-run calibration wizard
  • Ensure drone is powered on

False lap detections

  • Increase enter/exit thresholds
  • Move gate farther from flight area
  • Reduce transmitter power if too strong

Starting beep not playing (Mobile/iOS)

  • Check silent mode: Your phone must NOT be on silent mode
  • iOS: Make sure the silent switch is off
  • Android: Ensure media volume is not muted
  • The race countdown tone requires your device's ringer/media volume to be enabled

No audio announcements

  • Verify SD card is FAT32 formatted
  • Check SD card contents match required structure
  • Try different SD card
  • Check audio files in Configuration menu

Voice announcements not working on iOS Safari

  • Enable audio first: Go to Configuration → TTS Settings and click "Enable Voice"
  • Test the voice: Click "Test Voice" to trigger audio permission - this is required on iOS Safari
  • iOS Safari requires user interaction before audio can play - the Enable/Test buttons provide this
  • Make sure your device is not on silent mode (check the physical mute switch)
  • If still not working, try refreshing the page and repeating the Enable → Test sequence