Rally Tracker — Sysadmin

Users, teams, settings and diagnostics

READ ONLY ← Back to map

Add user

Existing users

Username Role Groups Team Active Last login Actions

Add team

Existing teams

Name Car # Colour Contact Members Actions
Groups
Select a group on the left to edit its module assignments.

System settings

Changes to most settings take effect immediately. Settings marked ↺ restart require a server restart to take effect.

SMS Emergency Fallback (Twilio)

This toggle enables the SMS emergency fallback and sets the default events. Twilio credentials — Account SID, Auth Token, phone number, and webhook URL — are entered in the Runtime Configuration section above, under ”SMS / Twilio.” (The server uses the Auth Token to validate inbound webhook signatures; the tracker sends emergency SMS directly via its own modem.) The tracker's own phone number (MSISDN) is reported in its status heartbeat and shown in the Cellular tab's SIM inventory — no manual entry needed, though you can override it there.

Default events (all trackers)

APRS Source Callsign (control operator)

Outbound APRS messages are sent from this control-operator callsign to each unit's callsign — so they appear as an inbound message in the recipient's APRS log. Setting it requires an amateur-radio licence acknowledgement, and sending an APRS message also still requires per-unit APRS-send to be enabled (Cars tab).

Current
Loading…

APRS-IS Connection

APRS positions are received via a persistent TCP connection to an APRS-IS tier-2 server (default: rotate.aprs2.net). The server maintains a real-time packet stream filtered to the configured callsigns — no API key required. Connection settings (APRS_IS_SERVER, APRS_IS_PORT, APRS_IS_PASSCODE) are managed in the Settings tab.

Status
Loading…

Callsigns

CallsignLabelAddedActions

Firmware Staging

Stage a firmware binary then push it to connected trackers via MQTT. The tracker must be connected to WiFi and the operator must confirm on-device (secret menu → OTA Update → C button).

Staged binary
Loading…

GitHub Releases

VersionPublishedSizeAction
Loading…

Upload binary

Device Firmware Status

Auto-refreshes every 30 s. Push is enabled for online devices that need an update.

Car # Device ID Platform Online Version Status Debug Mode Action
Loading…

OTA Event Log

Per-device update history. Updates in real time via SSE. Shows the last 50 events across all devices.

Time Device Event Target version Detail
Loading…

Flash via USB

Flash the staged binary directly to a USB-connected tracker from this browser. Requires Chrome or Edge on a PC — no PlatformIO needed.

Flashing for: M5Stack Core ESP32
Staged binary:

A normal flash overwrites only the app partition and preserves the bootloader, partition table, and NVS (WiFi credentials, calibration). To recover a device that no longer boots, use Full Device Recovery below.

Set WiFi credentials

Writes WiFi credentials into the connected tracker's two NVS slots (slot 1 = primary, tried first). The tracker must be running normally (not in bootloader mode). Leave a slot blank to skip it. Other NVS data (emergency state, calibration) is preserved.

⚠ Full Device Recovery

Erases the entire flash chip and re-writes the bootloader, partition table, and the staged app binary. Use this only when a device is bricked or unbootable.

This wipes NVS — WiFi credentials and all stored preferences/calibration. The device must be reconfigured (WiFi setup) afterwards.

Push WiFi Credentials

Push WiFi credentials to a tracker over MQTT. The tracker stores them in the chosen slot (NVS Slot 1, NVS Slot 2, or SD card) and the auto-connect state machine picks them up immediately.

Slot 1 is the auto-promoted "last successful network." Slot 2 is a manual fallback. The SD card holds up to 5 additional slots persisted across firmware OTAs. The auto-connect state machine tries them in RSSI-sorted order.

Self-service HTTPS setup

Stand up a domain with a free Let's Encrypt certificate and switch the site to HTTPS — no command line. First point your domain's DNS A record at this server, then run the pre-flight check below.

The site keeps serving over HTTP throughout. The forced HTTP→HTTPS redirect is only enabled after an HTTPS request is verified working, so you can never be locked out. Let's Encrypt limits issuance per week — this tool refuses doomed attempts (bad DNS / closed ports) and rate-limits retries.

TLS Certificate

Certificates are managed automatically by the certbot sidecar via Let's Encrypt. Requires LETSENCRYPT_DOMAIN and LETSENCRYPT_EMAIL in the server environment and port 80 reachable from the internet.

Loading…

Fleet storage

SD card usage per tracker. Low storage = less than 10% free.

Device Online SD Used / Total Cache Queued Actions

Hardware Details

The authoritative Trackers list (#481) — every detected device, with the registry car it's assigned to (or Unassigned with a quick-assign affordance) plus device-level diagnostics (board type, firmware, heap, SD, battery). Cars are sourced from the Cars registry; this is the trackers.

Car Assigned car Device Online Hardware Firmware Mode SD Free heap Min free Largest block Battery Uptime Last reset Reboot forensics

Server status

Database

Tables

Table Size Rows

Recent errors

When Source Message

Audit log

When Actor Action Target Details

Event log archive

"Clear" on the operator Event Log panel archives rows (sets archived=TRUE); it does not delete. This Purge button is the only path that actually DELETEs archived tracker_messages rows. Two-step typed-yes confirmation required.

System Resets

Clean up event-specific data to start a new event. Each reset is irreversible and double-confirmed. These do NOT delete the Cars registry, users/teams, track config (sections / quiet zones / service parks) or settings — only event data.

Clear all scoring
Deletes every stage result + resets the in-memory scoring cache.
Clear all violations
Jumpstart / max-avg, quiet-zone, transit and recce violations.
Clear event log / messages
All tracker_messages (incl. archived) + hazard warnings.
Clear ALL (new event)
Master reset — scoring + violations + event log in one transaction. Type RESET to confirm.

User wishes 🪔

Feature requests submitted by users from the operator UI.

WhenUserWish

Car registry 🏎

The single source of truth for every car in the event — competitors, course cars, sweep, medical, officials and service crew. Cars live here whether or not a tracker is assigned, and the operator Cars panel renders from this registry (an active car shows even when no tracker is detected). Trackers no longer create cars; detected-but-unassigned trackers appear on the Devices tab.

Number Crew Vehicle Class Role Device APRS Status Seed Active Actions

Cellular data accounting 📶

Real-time per-device cellular byte counting. Simulated cellular lets you flip a WiFi-connected M5Stack tracker into the accounting subtotal so you can see what the existing fleet WOULD cost on cellular before the LilyGO platform ships. Rates are configurable below.

Today
Week
Month-to-date
Month-end projection
Real cellular only: · Including simulated: · Rates:

Per-device usage

Device Car Sim Bytes today Bytes MTD Cost MTD Cap Reconnects Last seen Status
Loading…

Tracker cellular state 📶 Refreshing every 5s

Live cellular state for every LilyGO tracker. Tap a row to expand the full diagnostic — SIM identity, carrier, modem, network registration, data bearer, transport, and the last manual AT command response. Read-only mirror of the firmware's status payload (refreshed every 5 s by the tracker).

Loading…

SIM inventory 📱  

One row per SIM card. Provider-truth (SIMbase API) usage is the canonical bill; drift compares that against our in-house byte estimate. Auto-linked to a tracker when the firmware reports its ICCID.

ICCID Phone Label Plan Assigned MTD used Renewal Drift Status Synced
Loading…

Rate settings

Cost = (bytes / 1 MiB) × rate per MB + active days × daily active charge. All values in cents. Sysadmin only — changes are recorded in the audit log.

SIMbase settings (sysadmin)

SIMbase provides provider-truth for SIM inventory + plan + usage. The API key is write-only — once set, the field shows ••••••••; blank means "no change", clear with the Clear button. Changes are recorded in the audit log.

 

Last sync: —