You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
A telemetry pipeline for racing games. Receives telemetry data from game sources, normalizes it, and routes it to output sinks - like vector.dev but for racing telemetry.
Features
Multiple named source and sink instances
Input routing: each sink subscribes to specific sources
Auto-detection of protocol versions
Unified internal telemetry model across all games
Each frame carries source_name (config key) and source_type (e.g. forza, gt7)
Pointer-based fields: nil means the source does not provide the data, omitempty in JSON output
Supported Sources
Type
Games
Protocol
forza
Forza Motorsport 7, Forza Horizon 4/5 (Xbox/PC/PS5), Forza Motorsport (2023)
UDP, auto-detects V1 (311B), V2 (324B), V3 (331B)
gt7
Gran Turismo 7, Gran Turismo Sport, Gran Turismo 6
UDP with Salsa20 encryption, heartbeat keep-alive, format C (368B)
wire
Another racetelemetry instance
UDP, JSON-encoded TelemetryFrame
Supported Sinks
Type
Description
Platform
pcars1_udp
Project CARS 1 UDP telemetry
Cross-platform
pcars1_shm
Project CARS 1 shared memory ($pcars$)
Windows
pcars2_udp
Project CARS 2/3 UDP telemetry
Cross-platform
pcars2_shm
Project CARS 2/3 shared memory ($pcars2$)
Windows
csv
CSV file output
Cross-platform
json_stdout
JSON lines to stdout
Cross-platform
grafana_live
Grafana Live push API (Influx line protocol)
Cross-platform
wire
Forward to another racetelemetry instance
Cross-platform
Configuration Reference
Log
Field
Required
Default
Description
level
no
info
Log level: debug, info, warn, error
format
no
text
Log format: text, json
Source Options
All sources require type field.
Type
Field
Required
Description
forza
listen_addr
yes
UDP address to listen on (e.g. :5300)
gt7
listen_addr
yes
UDP address to listen on (e.g. :33740)
gt7
console_addr
yes
IP address of the PlayStation console
wire
listen_addr
yes
UDP address to listen on (e.g. :15000)
Sink Options
All sinks require type and inputs fields. inputs is a list of source names to subscribe to.