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.
Free Core Gateway and Advanced Tuning
PL.OBD2 Mobile Gateway
Fully functional telemetry multiplexer for daily driving, track days, and real-time vehicle diagnostics without time limits.
- Stable sustained throughput up to 60 PID/sec;
- Full support for 4 physical transports: Classic BT (SPP), BLE GATT, Wi-Fi, USB OTG;
- Simultaneous client multiplexing (Torque, CarScanner, RealDash, RaceChrono);
- Automatic Device Passport generation with 1..6 group benchmark;
- Local socket broadcasting and secure network sharing via built-in PIN-Gate;
- 20,000+ decoded trouble codes with names for 40+ car brands.
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.
Hardware Selection
- Select or add your Vehicle in the main screen (assigned a persistent UUID v7).
- Tap Adapter and pick the transport mode:
BT,BLE,Wi-Fi, orUSB. - 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).
Link Benchmarking
- Tap [START]. The gateway initializes the adapter (
ATZ,ATI,AT@1,ATDPN). - The engine runs a benchmark carousel across homogeneous group sizes (1..6) measuring peak bus bandwidth (up to 95.5 PID/s).
- A persistent Device Passport is generated recording verified responding PIDs. Subsequent launches skip the intro calibration.
Parameter Selection
- Navigate to «PARAMETERS». The profile tied to the current vehicle-adapter pair loads automatically.
- Toggle required sensors and set individual polling frequencies (Hz).
- 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.
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 with0x11223344). Tap [Save RealDash XML] to generate the matching sensor mapping profile. - RaceChrono — port
5559(NMEA$RC310 Hz telemetry sentences). Tap [Save Legend] to map hardware channels. - OBD2 / ELM327 — port
35000or5557(standard TCP ELM327 v1.5 emulation for Torque Pro and Car Scanner). - SimplOBD2 — port
5560for raw human-readable ASCII feeds.
Connecting Torque
- Open Settings → OBD2 Adapter Settings.
- Connection Type: select Wi-Fi.
- IP Address: enter 127.0.0.1 (same device), in-car LAN IP, or virtual IP in Tailscale / VPN.
- Port: enter 35000 (or
5557). - Queries execute instantly from memory in 1–2 ms.
Connecting Car Scanner
- Open Settings → Connection.
- Connection Type: select Wi-Fi.
- IP Address: 127.0.0.1, LAN IP, or Tailscale IP.
- Port: 35000 (or OBD2 gateway port).
- Adapter identifies as
ELM327 v1.5 (Prometrius Cache)with fullATH1header emulation.
RealDash & RaceChrono
- RealDash: Garage → Connections → RealDash CAN → TCP Client → enter IP:5558. Import generated XML.
- RaceChrono: Settings → Vehicle profile → DIY Device → TCP client → IP:5559 ($RC3 10 Hz). Monitor live track telemetry globally.
Core Engineering Features
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.
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.
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.
2.0Hz: 5 groups (5 PIDs) — 7DF
1.0Hz: 1 tick (Custom Mode 22) — 7E1
| 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) |
.plp plans load seamlessly into the app. Decryption is performed in hardware via the Android KeyStore.