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.
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:
- Explore an ECU — list jobs, describe arguments and results, search by keyword, read the ECU description, browse and query the internal tables.
- Run diagnostics — execute jobs with arguments, read and clear fault codes, check which EDIABAS implementation is loaded and what interface is configured.
- Inspect live state — list currently visible ECU windows, query the API state, read the current EDIABAS config.
- Review past logs — list recorded data-logger sessions and pull the rows of a specific run for analysis.
- Author and execute scripts — write a Test0 script and run it end-to-end without leaving the chat.
Bring your own API key (Claude, any OpenAI-compatible endpoint, or Ollama for fully local) — Test0 doesn't ship one.
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.
- JSON over WebSocket — easy to consume from any language: JavaScript in a browser, Python, Go, Swift, Kotlin, you name it.
- Live values — subscribe to the results of any running job and get pushed updates as they arrive.
- Bidirectional — your app can also send commands back (start jobs, change parameters) without embedding EDIABAS itself.
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
- Download and run the installer.
- (Optional) Download the
ECU files bundle if you don't
already have BMW
.prgfiles on disk. The bundle drops them into<Test0>\Ecuautomatically. - Connect your OBD interface (K+DCAN, ENET, USB-to-serial).
- Launch Test0 → File → Detect ECU.
- If the dropdown looks empty or wrong, open Settings → EDIABAS and verify the implementation combo matches your setup (default: EdiabasLib).
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. |