Choose your receiver setup
FPVGate measures signal strength from your drone's existing video transmitter. The S3 runs the timer and web interface; the receiver measures the RF signal. You can use a traditional SPI receiver or an ESP32-C5 running dedicated radio firmware.
| Receiver | Pilots | Connection | Setup |
|---|---|---|---|
| RX5808 / existing SPI | One per timer | SPI + analog RSSI to S3 | Existing wiring and firmware |
| FPVGateC5MK | Up to 8 per C5 | UART to S3 | FPVGate multi-pilot |
| FPVGateC5MK 1.2.0+ | Up to 8 per C5 | Native USB to RH computer | RotorHazard USB |
| FPVGateC5RX | One per timer | SPI + filtered analog RSSI to S3 | C5 as an RX5808 replacement |
C5MK scans pilot channels in sequence and sends separate, timestamped readings. It supports 5180–5917 MHz, including Raceband R1–R8; Boscam E7 and E8 are outside that range. About 1,000 readings per pilot per second has been measured with eight Raceband channels. This is a receiver sampling rate, not a lap-accuracy guarantee.
FPVGateC5MK multi-pilot setup
One C5 supplies readings for up to eight pilots. Each pilot has their own channel, calibration and results in the FPVGate interface.
For organised racing, Event Mode on compatible S3 firmware adds pilot groups, race formats, heat scheduling and Elo or lap-time seeding. An event can rotate through several groups, with up to eight pilots in each heat.
- Flash the C5 receiver. Open the C5 Radio flasher, select your board, then Multi Pilot · UART / USB · FPVGateC5MK. Use Chrome or Edge and connect the C5's USB port. Power cycle after flashing.
- Flash compatible S3 firmware separately. In the timer flasher, enable Pre-Release Firmware and choose a Multi-Alpha build offered for your S3. Multi-Alpha-3 is packaged for the Seeed XIAO ESP32S3 and Waveshare ESP32-S3-ETH; other supported boards use Multi-Alpha-2. Prepare the S3's SD card as described in the SD card guide.
- Wire the radio with power disconnected. Connect host TX to C5 RX, host RX to C5 TX, plus 5V and ground. Use the board tables below. The C5 replaces the SPI receiver for this setup.
- Select the receiver. Open FPVGate, choose Settings → Configuration → Receiver Module → ESP32-C5 Multi-Pilot, save, and check that the C5 shows online in Calibration.
- Configure each pilot. Assign the correct VTX channels and calibrate each pilot's enter/exit thresholds. Check for cross-channel detections and fly deliberate test passes before racing.
- Keep the race page open. The current Multi-Alpha firmware uses the browser for race completion and some announcements. The S3's onboard speech, LCD and external outputs do not yet provide full eight-pilot support.
This differs from syncing several single-pilot timers. C5 multi-pilot uses one S3 and one C5. Master/Slave sync and daisy-chaining are unavailable in the current C5 mode. For separate SPI timers, use the existing multi-timer sync guide.
C5 boards and UART wiring
The flasher offers the following board selections. Board pinouts differ: choose the actual board you have before choosing firmware. C5MK uses the same image for UART and native USB timing.
| C5 board | C5 RX ← host TX | C5 TX → host RX | Status |
|---|---|---|---|
| Seeed XIAO ESP32-C5 | D4 / GPIO23 | D5 / GPIO24 | UART tested; direct USB validation pending |
| Waveshare ESP32-C5-Zero | GPIO4 | GPIO5 | UART tested; direct USB discovery and local RH timing tested |
| ESP32-C5-DevKitC-1 / Waveshare C5-WIFI6-KIT | GPIO4 | GPIO5 | C5-Zero image; hardware validation pending |
| Waveshare C5-MINI-KIT | GPIO4 | GPIO5 | C5-Zero image for multi-pilot; hardware validation pending |
| S3 timer board | Host TX → C5 RX | Host RX ← C5 TX |
|---|---|---|
| Seeed XIAO ESP32S3 | D3 / GPIO4 | D4 / GPIO5 |
| Waveshare ESP32-S3-ETH | GPIO43 | GPIO44 |
For example, XIAO S3 D3 connects to XIAO C5 D4, and XIAO S3 D4 connects to XIAO C5 D5. The shared D-labels do not mean that the two boards use the same GPIO numbers. For other S3 boards, check their receiver UART pin configuration.
Power: supply the C5's 5V/VUSB input and join grounds. Do not power the C5 from the S3's 3V3 pin: radio startup can exceed that regulator's capacity. Signal pins are 3.3V logic only. If using separate USB supplies, join grounds and leave the 5V link disconnected. Disconnect power before changing wires.
The UART link is 921600 baud, 8N1, without flow control. C5MK does not need the analog RSSI filter used by C5RX. Fit a suitable antenna and follow your board's antenna selection instructions.
Direct USB to RotorHazard
C5MK 1.2.0 and later exposes eight native RotorHazard serial nodes. This connection uses the C5 directly, without an S3, network gate or FPVGate plugin.
- Flash the board's multi-pilot C5MK firmware using the C5 Radio flasher. Power cycle and attach the antenna.
- Connect its native USB port to the RH computer using a data cable. Close browser serial connections and other applications using that port. An S3 must not also control this receiver.
- In RotorHazard, open Advanced Settings → Hardware → Serial Ports, add the C5's port and restart RH. On Linux, use a persistent
/dev/serial/by-id/path when available. - Assign pilot seats and frequencies, then calibrate EnterAt and ExitAt in Sensor Tuning. Verify intentional gate passes before starting a race.
Direct USB has been checked on a Waveshare C5-Zero, on Windows and on a Raspberry Pi 4 with RotorHazard 4.4.0; physical XIAO USB validation is still pending. See the USB setup guide for details.
Already connecting an S3 timer to RH? That uses the FPVGate network plugin instead. Multi-pilot S3 builds need plugin 2; Multi-Alpha-3's Marshal support uses plugin 2.1.4 or later. Choose one control path for each receiver.
Single-pilot SPI receivers
Your existing RX5808 setup is still supported. Keep the SPI-modded receiver, its existing wiring, and firmware offered for your S3 board. A C5 is optional. See traditional SPI hardware setup and RSSI calibration.
FPVGateC5RX is a separate single-pilot firmware that makes a C5 act like an RX5808. It receives tuning commands over SPI and returns analog RSSI through a resistor/capacitor filter. Select Single Pilot · SPI · FPVGateC5RX in the C5 flasher, rather than C5MK.
| C5 board | CLK | DATA | SEL | RSSI output |
|---|---|---|---|---|
| XIAO C5 | 23 / D4 | 24 / D5 | 1 / D0 | 10 / D10 |
| C5-Zero / DevKitC-1 layout | 4 | 5 | 6 | 10 |
| C5-MINI-KIT | 4 | 5 | 1 | 10 |
For a XIAO S3 timer, connect S3 D3/GPIO4 to CLK, D4/GPIO5 to DATA through 330 Ω, and D5/GPIO6 to SEL. The filtered RSSI junction goes to S3 D2/GPIO3. Join grounds and follow the power guidance.
C5 GPIO10 --[10 kOhm]--+-- S3 D2 / GPIO3 (RSSI)
+--[10 kOhm]-- GND
+--[100 nF]--- GND
Do not connect GPIO10 directly to RSSI. The filter smooths the switching output and divides the voltage. Add 100 nF decoupling between the C5's 3V3 and ground. Use the RX5808 receiver setting on your timer, then tune and calibrate.
C5RX is offered as an alpha snapshot. XIAO and Mini SPI pin adaptations still need hardware validation; DevKitC-1 layout support also needs a board test. Check the selected build's wiring in the flasher and the upstream hardware guide.
Firmware, updates and current status
There are two separate firmware targets in an S3 + C5 build. The timer firmware goes on the ESP32-S3; C5MK or C5RX goes on the ESP32-C5. The C5 flasher checks for a C5 chip before writing.
- SPI / RX5808: existing timer firmware and wiring remain available. No C5 upgrade is required.
- C5MK through FPVGate: use compatible Multi-Alpha timer firmware. Multi-Alpha-3 is offered for the XIAO S3 and Waveshare S3-ETH; check the board/version picker for other builds.
- C5MK direct USB: requires C5MK 1.2.0 or later; use 1.2.2 or later with RotorHazard on Linux or a Raspberry Pi.
- Updates through the S3: C5MK 1.1.0+ with FPVGate Multi-Alpha-3+ can update over the UART link at Settings → System → C5 Receiver Firmware. C5MK 1.0 or earlier needs a full USB flash first because the partition layout changed.
- Recalibrate after receiver updates. C5MK 1.2.1 changed measured RSSI levels. Re-run FPVGate calibration or RH Sensor Tuning instead of carrying over old thresholds.
Development status: up to eight channels are implemented and receiver sampling has been bench-tested. Full physical eight-pilot race validation and lap accuracy against video are still outstanding. Test your channels, thresholds and gate placement for your track.
Sources: C5MK releases, packaged Multi-Alpha-3 notes, and C5MK capabilities and validation. Last reviewed 18 October 2026.
C5 troubleshooting
C5 is not online in FPVGate
Check that the S3 has a compatible Multi-Alpha build and the ESP32-C5 Multi-Pilot receiver setting is saved. Confirm C5MK is on the radio, host TX goes to C5 RX, host RX goes to C5 TX, and ground is shared. Power the C5 from 5V/VUSB and check the selected board's pin map.
RotorHazard does not discover the USB receiver
Use C5MK 1.2.0 or later and the native USB port with a data cable. Close anything else using the port, add the correct serial port in RH and restart RH. Disconnect an S3 controller and power cycle before switching to USB. Consult the selected release's notes for known USB issues.
False laps or no detections
Match each pilot's VTX frequency, check the 5180–5917 MHz C5MK range, fit the correct antenna, and calibrate enter/exit thresholds individually. Recalibrate after firmware changes. For C5RX, also check the RSSI filter and the SPI pin assignments. For an RX5808, verify the SPI mod and follow the existing calibration guide.
Which firmware should I choose?
Choose FPVGateC5MK for up to eight pilots over UART or native USB. Choose FPVGateC5RX for single-pilot SPI with filtered analog RSSI. For a traditional RX5808, use the standard S3 timer flasher; the receiver does not need C5 firmware.