EM Client

EM Server Settings

Status: Disconnected

Test Mode

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 / KindClient IDRemote AddressConnected AtUser 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.
StatusStream IDRadio IDEM titleDescriptionYour nameOutput nameOutput
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...
StreamChoose 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)

IDNameValueStatusUpdated
Connect to EM to see car light status

Recent EMIF containers

TimeTypeSizeParsedPayload hex
No EMIF yet

Recent EMCR responses

TimeResponseSizeParsed
No EMCR yet

Recent EMTW headers

TimeStreamSourceMPXTDMLogSizeEM 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...
SessionStartedStoppedStreamsRowsSizeDownloadsDelete
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.
Push ON

Field template — same on every PC

SendFieldCompanion variable

Desk assignments — car → Companion PC

CarDesk nameCompanion IPPortPushActions