Starts a built-in fake EM server on this machine (Yas Marina, 10 Hz).
The websocket service then connects to 127.0.0.1:15001.
Live EM host settings are kept and restored when test mode is turned off.
Test mode off
Stream Memory
Cars that stopped sending data can linger in stream lists, rate tables, and cached telemetry.
Flush Stale removes any stream not actively receiving (no packet in the last 2 seconds).
Saved custom names are kept.
Telemetry Configuration
TLM File: Loading... Channels Loaded: -
Logs
WebSocket Server: Loading...
Live Telemetry
Waiting for data...
WebSocket disconnected
No telemetry yet
Connect to the EM server on the Configuration tab, then switch back here to see live data.
Connected WebSocket Clients
Loading...
Each browser tab is a separate connection. External apps must connect via Socket.IO to appear here.
Name / Kind
Client ID
Remote Address
Connected At
User Agent
No clients connected
Stream ID → Custom Name
When EM sends telemetry, each car has a stream ID (number).
Set your own display name here — it is sent to WebSocket clients as streamName and in stream_list.
Leave blank to use the EM title or default car_N.
Use Output to choose which cars are sent to clients and Companion (you can receive many cars but only output the ones you need).
Saved names from a previous session are hidden until that stream appears on the current EM server — use Probe EM Server to see stream ID, radio/module ID, title and description from EM.
Note: telemetry keys like CH04:CAN1:Speed are data channels inside a stream, not separate cars.
EM server report
Stream ID
Radio ID
Champ
Title
Description
Status
Stream ID
Radio ID
EM title
Description
Your name
Output name
Output
Probe EM Server or Connect to see available stream IDs
Stream Data Rates
Loading...
Status
ID
Name
EM title
Tel 5s
Tel 10s
Burst
Total
Last pkt
GPS 5s
GPS 10s
GPS burst
GPS tot
GPS last
Sub
Out
Connect to EM or probe streams to see rates
Field Rates
Choose telemetry fields to monitor. For each field: Value (latest),
Hz (5s avg — every car_data update),
Real Hz (5s avg — only when the value actually changed from the previous sample).
When Real Hz is much lower than Hz, the field is being repeated/stale (typical GPS issue).
Select fields and connect to EM to see live rates.
Loading channel list...
Stream
Choose fields above
No fields selected
Output Timing
Controls the delay buffer before car_data is emitted to WebSocket clients.
Changes apply immediately — no restart. Server tick stats show emit-loop pacing;
Client recv Hz shows what this browser actually receives (should match ~10 Hz when a stream is active).
Loading output timing...
Stream
Emit Hz
Skips/s
Pending
Client Hz
Cl p50
Cl max
Connect to EM and open this tab to see timing
EM Extra Data
Additional data from the EM TCP protocol (EMIF, EMCR, EMTW headers) — not sent on the WebSocket
car_data feed. Track flag comes from EMIF type 2 session info only
(not the high-rate type 1 session ticks). Per-car marshalling lights come from
MS_lightStatus in telemetry.
Loading EM extra data...
Car light status (MS_lightStatus)
ID
Name
Value
Status
Updated
Connect to EM to see car light status
Recent EMIF containers
Time
Type
Size
Parsed
Payload hex
No EMIF yet
Recent EMCR responses
Time
Response
Size
Parsed
No EMCR yet
Recent EMTW headers
Time
Stream
Source
MPX
TDM
Log
Size
EM server ts
No EMTW headers yet
Telemetry Recorder
Records emitted car_data JSON to a persistent SQLite database on this server.
Recording continues when this page is closed and resumes after a service restart.
CSV uses one message per row; NDJSON preserves each exact JSON object.
Ready
Duration
00:00:00
Rows
0
Stored JSON size
0 B
Session
—
Saved recordings
Loading database status...
Session
Started
Stopped
Streams
Rows
Size
Downloads
Delete
No recordings
Companion Desk Push
One shared variable template for every Stream Deck PC. Each desk row sends one car's telemetry to that PC's Companion IP.
Use the same variable names on every PC (e.g. speed, rpm) — only the desk IP and car number differ.