BMW ECU logger and diagnostic tool

Test0 talks to BMW ECUs through EDIABAS. Read live values, log to disk, plot, script jobs, and analyse logs — all in one desktop app. Works with the bundled EdiabasLib runtime out of the box, or with your existing BMW INPA/Tool32/ISTA install.

This is Test0 v2 — a complete rewrite. The original Test0 was released back in 2017 and has been quietly used by BMW enthusiasts ever since. Version 2 picks up where it left off: same idea, same name, modernised from the ground up (Qt 6, EdiabasLib, scripting, plotting, MCP). If you were running the 2017 build, this is its successor — almost ten years in the making.

What it does

ECU detection

Scan a connected ECU and discover its identity, supported jobs and result variables.

Live logging

Record any ECU result over time. Stream to CSV, plot live, or pipe through custom transforms.

Logging presets

Save a set of jobs as a preset — fault-finding, dyno run, track session — and fire all of them at once with one click. No more configuring each ECU window from scratch every drive.

External loggers

Combine ECU data with aftermarket sensors. Built-in support for Innovate (MTS), AEM, PLX, 14Point7, and Techedge wideband controllers — all streamed and logged alongside BMW data on the same timeline.

Custom jobs

Write your own jobs against any ECU without dropping to Tool32 or editing .prg files. Pick arguments, name results, save — your custom jobs sit alongside the factory ones in every ECU window.

Custom expressions

Derive new values from raw ECU results — convert units, combine signals, smooth, threshold, compute. Define an expression once and it streams live and logs to CSV just like a native ECU value.

Innovate stream inspector

Advanced: connect an Innovate MTS stream and Test0 shows every device it sees on the bus. Identify your specific channels in the raw stream and add them to Test0 with one click — no manual packet decoding, no guessing channel order.

GPU-accelerated plotting

Custom-built line plot renderer that draws on the GPU instead of the CPU — handles dense live streams smoothly where traditional Qt/Qwt plots would stutter. Multi-curve, zoom, pan, export.

Scripting

Run JavaScript-based jobs against ECUs. Build custom diagnostics, tests, or automated sequences.

Two EDIABAS backends

Bundled EdiabasLib (self-contained) or your existing BMW EDIABAS install — switchable from one dropdown.

CSV analysis

Open old log files and re-plot, compare runs, or run computed expressions over recorded data.

AI chat panel

Built-in chat. Bring your own API key for Claude, ChatGPT, or any OpenAI-compatible endpoint, or run fully local against Ollama. No vendor lock-in.

MCP server

Test0 exposes its ECU and scripting capabilities over the Model Context Protocol. Point Claude Desktop or any MCP client at it and let an AI assistant run jobs, read live values, and analyse logs on your behalf.

AI-assisted scripting

Ask the assistant to write a custom job or transform on the fly, hand-edit, and run — all without leaving Test0.

WebSocket server

Stream live ECU data over a WebSocket to any app or dashboard you build yourself — web, mobile, or desktop. A reference client app ships alongside Test0 to get you started.

What the AI can do

Connect any MCP client (Claude Desktop, the built-in chat, your own tooling) to Test0 and the assistant gains a small, focused toolset for talking to BMW ECUs. It can:

Bring your own API key (Claude, any OpenAI-compatible endpoint, or Ollama for fully local) — Test0 doesn't ship one.

Some tools mutate state — running a job, clearing fault codes, or executing a script can write to the ECU. Treat the assistant the same way you'd treat a colleague driving a diagnostic session: review what it's about to do before approving, especially with active diagnostics.

Build your own app

Test0 exposes its live data and event stream over a WebSocket server, so you can build your own front-end — a phone dashboard, a track-day HUD, a custom logger, a web page — and let Test0 do the heavy lifting of talking to EDIABAS in the background.

A reference client app ships alongside Test0 as a starting point — fork it, strip what you don't need, build what you want on top.

Quick start

  1. Download and run the installer.
  2. (Optional) Download the ECU files bundle if you don't already have BMW .prg files on disk. The bundle drops them into <Test0>\Ecu automatically.
  3. Connect your OBD interface (K+DCAN, ENET, USB-to-serial).
  4. Launch Test0 → File → Detect ECU.
  5. If the dropdown looks empty or wrong, open Settings → EDIABAS and verify the implementation combo matches your setup (default: EdiabasLib).
Test0 ships with EdiabasLib and works without any BMW software installed. If you already have INPA / Tool32 / ISTA on this machine, switching to BMW EDIABAS is a one-click change in Settings.

Screenshots

Drop PNGs into www/img/ and replace the placeholders below. Suggested width: 1200px. Keep names lowercase-hyphenated.

ECU Jobs window

Browse all jobs and results exposed by a connected ECU.

Live plot

Multi-curve plotting with zoom, pan, and CSV export.

Settings — EDIABAS

One dropdown switches between EdiabasLib and BMW EDIABAS.

Requirements

OS Windows 10 or 11, 64-bit
Hardware An OBD-II adapter that BMW EDIABAS recognises (K+DCAN, ENET, USB-to-serial).
Disk ~150 MB for Test0, ~1.4 GB if you install the full ECU bundle.
Optional BMW INPA / Tool32 / ISTA — only if you want to use their EDIABAS install instead of the bundled EdiabasLib.