Virtual ECU emulation for automotive diagnostics development
Emulate full vehicle buses with realistic UDS, KWP2000, and OBD-II responses. Build specs from real captures. Connect via CAN, DoIP, HSFZ, or ELM327. Cross-platform. No subscription.
Testing diagnostic tools against real cars is slow, expensive, and often impossible during early development. ECUmulator gives you a full virtual vehicle bus that responds like the real thing — UDS, KWP2000, OBD-II, security access, DTCs, memory transfers, and more. Define your ECUs in JSON, hit run, and connect your tooling.
Run an entire vehicle bus with multiple ECUs, each with its own arbitration IDs, services, DIDs, DTCs, and security levels.
Define vehicles and ECUs in human-readable JSON. Version-control your test fixtures. Share specs across teams.
Expose your virtual bus via CAN (SocketCAN / gs_usb), ECUconnect TCP, HSFZ, DoIP, ELM327/STN, or ENET Service Broker.
Generate vehicle specs from real CAN captures — candump, CL1000, ECUconnect, or PCAPNG files go in, ready-to-run specs come out.
Attach to a physical CAN interface and bridge virtual ECUs onto a real bus. Test your tools end-to-end with actual adapters.
Full CAN FD support with configurable transport profiles. Switch between classic ISO-TP and ISO-TP/FD per vehicle.
ECUmulator Studio wraps the full emulation engine in a desktop GUI built with Tauri. Configure vehicles visually, toggle services with a click, and watch the bus come alive.
Create and edit vehicle specs without touching JSON. The form-based editor covers every aspect of ECU configuration — from arbitration IDs to individual DID values.
Toggle between the form editor and a visual bus topology that shows how your ECUs, services, and transport layers interconnect — at a glance.
Enable and configure service adapters from a single panel. Each adapter runs independently and can be toggled without restarting the emulation.
Everything Studio can do, epy can do from the terminal. Perfect for automated test pipelines,
CI/CD environments, or anyone who prefers the command line.
epy CommandOne command to run a full vehicle emulation. Combine with service flags to expose exactly the interfaces your tooling needs.
epy server ecu:spec.json — run a vehicleepy server --doip --hsfz — enable Ethernet adaptersepy server -a can0@500000 — bridge to real CANepy import capture.log -o specs/ — generate specs from logsepy client --doip / --hsfz — REPL clientsInject realistic FC stalls, WAIT frames, and OVERFLOW conditions with configurable probability. Validate your tester’s error handling.
Slow down virtual bus responses with --bus-timing-factor to simulate real CAN latencies during development.
Simulate gateway ECUs that lock and unlock other ECUs on the bus. Test your security access workflows realistically.
Edit ECU spec files while the server is running. Changes are picked up automatically — no restart needed.
ECUmulator implements real diagnostic service logic, not just echo responses. Security access, memory transfers, DTC management, and routine control all behave as specified.
20+ services including DiagnosticSessionControl, SecurityAccess, ReadDID, WriteDID, RoutineControl, RequestDownload/Upload, TransferData, and custom service overrides.
Full legacy protocol support — StartDiagnosticSession, ReadECUIdentification, SecurityAccess, ReadMemoryByAddress, and communication control services.
All 11 standard modes with PID support bitmaps, configurable sensor values, freeze frame data, and DTC management.
Don’t write specs from scratch. Point ECUmulator at a CAN capture and let it extract the vehicle topology, ECU addresses, and observed diagnostic responses.
.vehicle + ECU JSON specsWhether your diagnostic tool speaks CAN, Ethernet, or serial AT commands — ECUmulator has an adapter for it.
Direct CAN interface via SocketCAN or gs_usb adapters.
TCP/UDP adapters for Ethernet-based diagnostics with automatic discovery.
ELM327/STN2xxx emulation for tools that speak AT commands.
A representative overview of how different ECU simulation approaches typically compare.
| Capability | ECUmulator | Enterprise HIL | OEM Bench Tools | DIY / Scripts |
|---|---|---|---|---|
| Multi-ECU emulation | Yes | Limited | Manual | |
| UDS / KWP / OBD-II | All three | Varies | Partial | |
| DoIP / HSFZ adapters | Built-in | Vendor-specific | Uncommon | |
| ELM327 emulation | Full AT/ST | Uncommon | Uncommon | Basic |
| Spec from real captures | 4 formats | Proprietary | Manual | Manual |
| CAN FD | Yes | Varies | Varies | |
| GUI editor | Studio | None | ||
| CI/CD integration | CLI + headless | Complex setup | Uncommon | |
| Cross-platform | macOS, Win, Linux | Windows typical | Windows typical | |
| Typical price | From €149 one-time | Tens of thousands | Thousands | Free (your time) |
The final amount is shown in Lemon Squeezy checkout before payment, including applicable tax. Review the Terms of Sale, the App Privacy Policy, and the Legal Notice before purchase.
Homebrew: brew tap mickeyl/formulae && brew install ecumulator-py
pipx: pipx install ecumulator-py
pip: pip install ecumulator-py
Download the DMG, drag ECUmulator Studio to Applications. On first launch, right-click and select “Open” to bypass Gatekeeper. Python runtime is set up automatically.
Run the installer. Python runtime is bundled. Both 32-bit and 64-bit systems supported.
Linux: AppImage, .deb (with offline Python runtime bundle), and .rpm packages available — see the Legal Notice for contact details.
Questions, feature requests, or bug reports? See the Legal Notice for contact details.