Series Prometrius Link // Extension for Prometrius Lab

High-Performance ELM327 / OBD-II Telematics Gateway in Rust

A low-level multiplexing server for Android. Isolates diagnostic software from physical CAN bus response latencies, builds deterministic polling schedules (WFQ), and streams cached telemetry to client apps with 1–2 ms response times — via loopback, vehicle Wi-Fi LAN, or globally over Tailscale/VPN.

Target ABI: arm64-v8a strictly
Core Engine: Rust (tokio / axum / std::net)
UI Layer: Isolated WebView + JS-Bridge
Background: Foreground Service + WakeLock
License: Free Base Version

Free Core Gateway and Advanced Tuning

PAID WEB SCHEDULER

Custom Polling Plan Builder

An optimized web-based tool for fine manual tuning of vehicle bus polling plans, tick budgets, and custom OEM PIDs.

  • Exceeding 60 PID/s up to the physical adapter passport limit (up to 95.5+ PID/sec);
  • Integration of ultra-slow parameters via cycle carousel expansion without slowing fast PIDs;
  • Manual injection of dealer Mode 22 PIDs with custom Target and Reply addresses;
  • Export of encrypted .plp plans locked to the device hardware RSA-2048 key;
  • Code descriptions and troubleshooting solutions.

Three Steps to Initialize Prometrius Link

Prometrius separates vehicle identity, adapter hardware, and polling profiles. Passports are tied to a unique compound key MAC|protocol|vehicle_UID, preventing parameter contamination across different cars.

STEP 1: VEHICLE & ADAPTER

Hardware Selection

  1. Select or add your Vehicle in the main screen (assigned a persistent UUID v7).
  2. Tap Adapter and pick the transport mode: BT, BLE, Wi-Fi, or USB.
  3. Supports automated PIN pairing for Classic BT (1234/0000), «BLE Fast» mode (CONNECTION_PRIORITY_HIGH), and direct USB OTG bulk access (CH340, CP210x, FTDI, PL2303).
STEP 2: CALIBRATION PASSPORT

Link Benchmarking

  1. Tap [START]. The gateway initializes the adapter (ATZ, ATI, AT@1, ATDPN).
  2. The engine runs a benchmark carousel across homogeneous group sizes (1..6) measuring peak bus bandwidth (up to 95.5 PID/s).
  3. A persistent Device Passport is generated recording verified responding PIDs. Subsequent launches skip the intro calibration.
STEP 3: POLLING PROFILE

Parameter Selection

  1. Navigate to «PARAMETERS». The profile tied to the current vehicle-adapter pair loads automatically.
  2. Toggle required sensors and set individual polling frequencies (Hz).
  3. The bus budget is enforced in real-time (e.g., «Selected: 40 of 54 pid/s»). Bandwidth overflow is physically prevented to avoid latency spikes.

Interface Setup and Client Connectivity

Prometrius Link isolates the adapter and serves as a high-speed multiplexer. Client software is not limited to localhost 127.0.0.1: you can connect head units across vehicle Wi-Fi or stream real-time telemetry globally using Tailscale, WireGuard, or any VPN mesh. External ports are secured by the built-in PIN-Gate.

STAGE 1: DEFINE GATEWAY INTERFACES

Configuring the «INTERFACES» Tab

Open the «INTERFACES» tab in the app → tap [ADD] and configure your output protocol:

  • RealDash — default port 5558 (binary 16-byte TCP frames tagged with 0x11223344). Tap [Save RealDash XML] to generate the matching sensor mapping profile.
  • RaceChrono — port 5559 (NMEA $RC3 10 Hz telemetry sentences). Tap [Save Legend] to map hardware channels.
  • OBD2 / ELM327 — port 35000 or 5557 (standard TCP ELM327 v1.5 emulation for Torque Pro and Car Scanner).
  • SimplOBD2 — port 5560 for raw human-readable ASCII feeds.
STAGE 2A: TORQUE PRO

Connecting Torque

  1. Open Settings → OBD2 Adapter Settings.
  2. Connection Type: select Wi-Fi.
  3. IP Address: enter 127.0.0.1 (same device), in-car LAN IP, or virtual IP in Tailscale / VPN.
  4. Port: enter 35000 (or 5557).
  5. Queries execute instantly from memory in 1–2 ms.
STAGE 2B: CAR SCANNER

Connecting Car Scanner

  1. Open Settings → Connection.
  2. Connection Type: select Wi-Fi.
  3. IP Address: 127.0.0.1, LAN IP, or Tailscale IP.
  4. Port: 35000 (or OBD2 gateway port).
  5. Adapter identifies as ELM327 v1.5 (Prometrius Cache) with full ATH1 header emulation.
STAGE 2C: TELEMETRY

RealDash & RaceChrono

  1. RealDash: Garage → Connections → RealDash CAN → TCP Client → enter IP:5558. Import generated XML.
  2. RaceChrono: Settings → Vehicle profile → DIY Device → TCP client → IP:5559 ($RC3 10 Hz). Monitor live track telemetry globally.
[Vehicle CAN 500k] ──(BT SPP / BLE GATT / Wi-Fi / USB OTG)──┐ ▼ ┌─────────────────────────────────────────────────────────────┐ │ Prometrius Link Kernel (Rust / libdlc_obd2.so) │ │ ├─ Isolated bus scheduler, grouping, ISO-TP reassembly │ │ └─ Memory Cache Snapshot (1–2 ms client response time) │ └──────┬──────────────────────┬──────────────────────┬────────┘ │ TCP :5558 │ TCP :5559 │ TCP :35000 / :5557 ▼ (RealDash CAN v2) ▼ ($RC3 NMEA 10Hz) ▼ (ELM327 Emulation) ┌─────────────────────────────────────────────────────────────┐ │ Network Transport: Localhost (127.0.0.1) / Wi-Fi / Tailscale│ │ [Perimeter Protection: Built-in PIN-Gate for external IPs] │ └─────────────────────────────────────────────────────────────┘ │ │ │ [RealDash Dashboard] [RaceChrono LapTimer] [Torque Pro / CarScanner]

Core Engineering Features

01 / CAN PIPELINE

2x–4x Polling Acceleration

Direct ATSP6 protocol initialization with disabled echo (ATE0), suppressed linefeeds (ATL0, ATS0), and aggressive adaptive timing (ATAT2). Multi-PID grouping up to 6 PIDs per request boosts throughput up to 60–95.5 PID/sec.

02 / MULTIPLEXING

Telemetry Stream Multiplexing

The Rust kernel multiplexes incoming vehicle telemetry, allowing multiple clients (Torque, CarScanner, RealDash) to query the single adapter simultaneously. Clients receive zero-latency cache snapshots without CAN bus congestion.

03 / STABILITY

Foreground Execution & WakeLock

Architected as an Android connectedDevice Foreground Service with PARTIAL_WAKE_LOCK. Polling and telemetry feeds remain uninterrupted when the screen is turned off or when navigating away.

Online Polling Plan Builder and .PLP Generator

A specialized tool for manual PID polling schedule optimization. Balance bandwidth budgets across tick cycles, group requests up to 6 PIDs, configure one-off Init ticks, and inject custom Mode 22 parameters. Exports encrypted binary plans (.plp) cryptographically locked to your hardware device RSA-2048 key from the Device Passport.

ADAPTER RATE: 14.0 REQ/SEC
GROUP SIZE: 6 PIDS
BUS LOAD: 60.0 / 84.0 PID/SEC (71%)
OUTPUT FORMAT: ENCRYPTED .PLP (RSA-2048)
Bandwidth Budget 60.0 / 84.0 PID/sec
Block 7DF@01 (ECU Broadcast) 77%
77%
Block 7E1@22 (TCM Dedicated) 15%
15%
10.0Hz: 4 groups (4 PIDs) — 7DF
2.0Hz: 5 groups (5 PIDs) — 7DF
1.0Hz: 1 tick (Custom Mode 22) — 7E1
Dispatch Schedule (Groups) Ticks 0..9
Cycle Target Mode PIDs (Group)
Init 7DF 01 0105, 010F (One-off ECT, IAT)
0 7DF 01 0104, 010C, 010D, 0111, 0143, 0105 (6/6)
1 7E1 22 220109 (Custom Transmission PID)
2 7DF 01 0104, 010C, 010D, 0111, 0143, 0123 (6/6)
Exported .plp plans load seamlessly into the app. Decryption is performed in hardware via the Android KeyStore.
COMING SOON! IN DEVELOPMENT...