Skip to content
TrailTimer

For the builders

Build your own
RFID timing rig

One reader on the machine, cheap passive tags on the trail, phone-based timing. Every tag you pass is clocked to the millisecond — at speed, in the dust, out of sight of the start line. It's transponder timing like the big races run, without the sanctioning fees.

00:04.512

Skill level: basic wiring and mounting — and the part that actually matters, patient field testing. No soldering required for the reference build. Budget: realistically $250–350+ plus a couple dollars per tag. Time: an afternoon on the bench; more for mounting and gate testing.

This is a build-it-yourself project, not a product. The guide reflects the current reference build — the exact hardware I bought and tested — so you can recreate a known-good rig instead of guessing at parts.

How it works

The reader rides on your vehicle, powered from the vehicle's electrical system or USB, with an external UHF antenna mounted on the side facing the course. The course is marked with waterproof passive UHF RFID tags wherever you want a checkpoint — no battery, no wiring, no maintenance. As the vehicle passes a tag, the reader records the crossing to the millisecond and streams it to the TrailTimer app over Bluetooth.

Build photo

Reader + antenna mounted on the machine — photo coming soon.

1. What you need

The vehicle unit — reference build

PartReference itemNotes
UHF RFID reader (the core unit)RainyFi / RainyUHF UHF RFID ESP32-S3, US 902–928 MHz version, with included 5.5 dBi antennaThe whole reader in one — ESP32-S3, UHF front end, display, buzzer, and LED integrated. Use the US version.
Baseline antennaThe included 5.5 dBi UHF antennaYour known-good reference and race-day fallback. In early testing it read the test cards better than the pricier upgrade.
Upgraded antenna (optional)MTI Wireless Edge MT-262031/TRH/A/K, 902–928 MHz, 7.5 dBic RHCPRight band, but circular polarization and tag compatibility matter — validate it against your final tags before trusting it.
Coax / extensionRokland 240-class SMA-male → N-male, ~6 ft / 2 mKeep the run short — at 900 MHz even good coax costs read margin.
PowerUSB, or a fused 12 V → USB vehicle supplyFor a vehicle install use a fused, vibration-safe supply. Switched-ignition power is convenient.
EnclosureWeatherproof project boxElectronics inside, antenna outside, cable entries sealed.

The checkpoints (as many as you want)

PartReference itemNotes
Bench / early test tagsUHF RFID anti-metal ABS hard-tag strip, 860–960 MHzHandy for early bench testing, especially around metal.
Rugged course tagConfidex Ironside Classic (US / EPC Gen2)The better outdoor direction for a real course. Use these where reliability matters.
Mounting suppliesStakes, T-posts, zip ties, brackets, adhesiveUse on-metal tags when mounting to metal — don't assume a generic tag works on a T-post.

Use US 902–928 MHz EPC Gen2 / ISO 18000-6C tags and configure the reader for the US region (the firmware region-locks to US). Antenna polarization and tag orientation matter. Don't rely on bench reads — the only meaningful test is a gate test at real vehicle speed. Buy a handful of spare tags.

This guide names the reference parts so you know exactly what was tested, but it deliberately doesn't link to sellers — sourcing shifts, and I'd rather you buy the current-best version. Search the part names, or email me and I'll point you at what I actually bought.

2. Get and flash the firmware

The TrailTimer firmware isn't on an app store or public download — you get the firmware from me. Email tyler@tylerfit.ch, tell me you have the RainyUHF ESP32-S3, and I'll send one of:

A healthy boot shows Advertising as TrailTimer-XXXX and, on first boot until paired, a 6-digit [PAIR CODE] on the reader's screen. The current hardened firmware is protocol v2.

3. Pair it with the app

  1. In TrailTimer, open Setup → DIY Timing Hardware and turn on "Show RFID Timing Screens" (it's off by default because most people don't have the hardware — you do now).
  2. Go to Setup → Bluetooth Scanners. Your reader appears as TrailTimer-XXXX, sorted by signal. Tap Connect.
  3. First time only, enter the 6-digit code from the reader's screen. After that it reconnects silently — the key lives in your iPhone's Keychain.
  4. Rename the reader to something useful, like the vehicle name (saved on the reader itself).

4. Register and assign tags

  1. Setup → RFID Tags. With the reader connected, pass each tag past the antenna — it appears under Session Scans.
  2. Name it (Start, Finish, Creek Crossing, Back Field) and register it. You can record its map location too.
  3. Open your track (or the track wizard) and assign each tag to its checkpoint.

5. Install on the course

Antenna — mount it on the side of the vehicle that faces the tags:

Tags — put them at roughly antenna height, facing the passing vehicle, on the same side of the trail as the antenna, close to the racing line, away from metal (unless on-metal tags), and protected from tire strike and mud blast. Don't scatter tags on both sides — pick an antenna side and keep the whole course consistent.

Build photo

Staked course tag and gate-test setup — photo coming soon.

6. Gate testing (the part that matters)

A bench read only proves the reader, antenna, and tag can talk at zero speed. It does not prove the checkpoint will work. For every checkpoint:

  1. Install the tag where it will actually live.
  2. Drive past it at realistic speed and confirm the reader beeps.
  3. Run a Gate Test in the app and aim for a Strong verdict. Marginal → move the tag closer to the racing line, face it toward the antenna, or raise power. Weak will miss reads at speed.
  4. Repeat from the racing line, then from slightly different lateral positions. Adjust until reads are consistent.

A good checkpoint reads repeatedly without the driver "aiming" at it.

7. Reader tuning

SettingUse
Transmit power (18–26 dBm, default 20)Increase only as needed. More power can improve reads but also widens the read zone.
RSSI thresholdFilters weak/noisy reads.
DebouncePrevents duplicate crossings from one pass.
Peak-RSSI modeReports the closest approach in a burst — better for slow / tight checkpoints where the tag stays in range.
First-read mode (default)Simpler, often better for fast gate-style passes.

Defaults are conservative and right for most courses. Tune only after field testing, and re-run the Gate Test after any change. The reader keeps timing even if the phone disconnects — buffered events replay when it reconnects, so nothing is lost.

8. Race-day tips

9. Troubleshooting

SymptomLikely causeFix
Reader never appears in BluetoothFirmware not running, power issue, or BLE connected elsewhereCheck serial for the advertising line; power-cycle; disconnect other phones.
Pairing code failsCode regenerates per pairing sessionUse the current code shown on the reader.
Reads on the bench but not on courseSpeed, distance, tag detuning, or poor aimGate-test at real speed; move the tag closer; raise/angle it; avoid metal.
Reads only on one sideDirectional antenna behaviorPut all tags on the antenna side of the course.
Multiple reads per passDebounce too low or read zone too wideIncrease debounce, or adjust power/threshold.
Upgraded antenna seems worse than the cheap oneRFID is system-dependent — not impossibleUse the 5.5 dBi antenna as baseline; test final tags before mounting the MTI permanently.

RF note: Use US 902–928 MHz hardware and tags, and let the firmware configure the reader for the US region. Avoid non-US UHF RFID modules unless you're intentionally building for another regulatory region.

← Back to TrailTimer Email Tyler about the build