How it works
End-to-end telemetry flow: from the simulator to the R-Box, through the Python engine and the desktop UI.
SimLogix reads your simulator, computes telemetry, and pushes it to all your peripherals. Here is how, step by step.
The full flow
Simulator → Python engine → Local WebSocket → Tauri UI
↓
Drives peripherals → R-Box / dashboards / LEDs / button boxes
Three layers:
- The simulator exposes raw data (position, speed, RPM, lap time…) via an API or a shared memory zone.
- The Python engine reads this data, computes what is not exposed directly (delta to best lap, sectors), and exposes the result as structured frames.
- The Tauri + React UI consumes those frames for on-screen display; in parallel, the engine pushes frames to connected peripherals (R-Box over USB-C, other dashboards over USB or network).
Engine kept separate from UI
A key architectural decision: the engine is headless. It runs as a standalone Python sidecar and exposes a local WebSocket (ws://127.0.0.1:PORT). The desktop UI consumes it like any other client.
Consequences:
- The engine is testable on its own, without spinning up the UI.
- The UI can be swapped (a different stack, a mobile version, a CLI mode) without touching the business logic.
- Updates ship in blocks: improve the engine without rebuilding the UI, and vice versa.
Reading the simulator
| Sim | Method |
|---|---|
| iRacing | pyirsdk library, direct access to the game’s shared memory. |
| Assetto Corsa | Windows shared memory via mmap + ctypes. |
The engine samples at 10 Hz (one cycle every 100 ms). That frequency is more than enough for a Pit Lane Timer display — the human eye does not read a delta faster than that — and keeps CPU usage negligible.
Talking to the R-Box
The R-Box plugs in over USB-C and shows up as a virtual serial port (native CDC, no driver). The engine sends JSON frames at 10 Hz:
{
"lap_time": 83.41,
"delta": -0.13,
"speed": 187.3,
"gear": 4,
"lap": 5
}
The C++ firmware running on the R-Box’s ESP32-S3 parses the frame and refreshes the OLED screen. Measured end-to-end latency (game → R-Box screen): under 100 ms.
Default mode and navigation
Three display modes are available on the R-Box:
- Delta (default) — signed gap to best lap.
- Lap Time — current lap time.
- Speed — instant speed and engaged gear.
Navigation: up / down button to switch modes, middle button to confirm. The firmware remembers the last mode used.
What about other peripherals?
The SimLogix app enumerates connected HID peripherals at startup and provides a driver for each (native R-Box, compatible LCD dashboards, RPM LED bars, button boxes). Mappings and profiles are stored in SQLite, per game and per car when relevant.