Python library and CLI for ECU binary identification, diffing, and patching. Embed it in your application, automate it in a pipeline, or run it from the terminal.
🌐 openremap.com — full documentation, guides, and changelog.
Runs on your machine. No internet. No account. No data leaves your hands — ever.
Ready to try it? Jump to Install — one command on any platform.
OpenRemap is a Python library first, CLI second. The same pipeline that powers the command-line tool is fully available as importable services — no subprocess, no parsing stdout.
from openremap.core.services.identifier import identify_ecu
from openremap.core.services.confidence import score_identity
from openremap.core.services.patcher import ECUPatcher
data = open("ecu.bin", "rb").read()
identity = identify_ecu(data, filename="ecu.bin")
result = score_identity(identity)
print(f"{identity['ecu_family']} {result.tier}") # EDC17 HighAll services accept bytes and dict — no file paths, no hidden state, trivial to test and wrap in an API endpoint or a desktop app.
ECU work revolves around three tasks that today require expensive commercial software (€2,500–€8,000+) or manual hex-editor work with no audit trail:
- Identify a binary — manufacturer, ECU family, software revision, confidence score
- Diff two binaries — what changed between a stock file and a tuned file, captured as a portable recipe
- Apply a recipe to another binary — validate, patch, and verify — all-or-nothing
Whether you are building a tuning application, automating a workflow, or just need a reliable offline tool — OpenRemap gives you a clean Python API and a full CLI for all three.
OpenRemap is a free, offline, open-source toolkit that handles the binary analysis and patching pipeline:
| Step | Command | What happens |
|---|---|---|
| Identify | openremap identify ecu.bin |
Reads the binary and tells you: manufacturer, ECU family, software version, hardware number, calibration ID — plus a confidence score rating how likely the file is unmodified |
| Scan | openremap scan ./bins/ |
Batch-identifies every binary in a folder. Sorts them into Bosch/EDC17/, Siemens/PPD/, etc. Flags suspicious files before you touch them |
| Cook | openremap cook stock.bin tuned.bin |
Diffs two binaries byte-by-byte and produces a .remap recipe — a portable JSON file listing every changed byte with context anchors. Readable in any text editor, diffable in Git |
| Tune | openremap tune target.bin recipe.remap |
Validates the recipe against the target binary, applies the patch, then verifies every byte landed correctly. All-or-nothing — partial patches never happen |
- Map editing — OpenRemap works at the byte level, not the map level. Use WinOLS or ECM Titanium to find and edit maps. Use OpenRemap to capture, share, and reapply those edits.
- Checksum correction — you must run the output through WinOLS, ECM Titanium, or equivalent before flashing. Always.
- ECU reading/writing — it operates on
.binfiles you already have.
30 extractors across 4 manufacturers, covering ECUs from 1982 to present:
| Manufacturer | Families | Examples |
|---|---|---|
| Bosch (18) | EDC17, EDC16, EDC15, ME7, ME9, M5.x, M4.x, M3.x, M2.x, M1.x, MP9, ME1.5.5, LH-Jetronic, Mono-Motronic, and more | VAG TDI, BMW, Volvo, PSA, Porsche, Alfa Romeo |
| Siemens (6) | SIMOS, PPD, SID 801/803, Simtec 56, EMS2000 | VAG petrol, PSA/Ford diesel, Volvo turbo |
| Delphi (2) | Multec, Multec S | Opel/Vauxhall diesel and petrol |
| Marelli (4) | IAW 1AV, IAW 1AP, IAW 4LV, MJD 6JF | Fiat, PSA, GM/Opel |
→ Full reference: Bosch · Siemens · Delphi · Marelli
Every identification includes a confidence verdict — HIGH, MEDIUM, LOW, SUSPICIOUS, or UNKNOWN — built from multiple signals:
- Detection strength — how rigorous the extractor's matching cascade is
- Software version format — manufacturer-aware canonical format checking (Bosch
1037-prefixed, Delphi 8-digit GM-style, etc.) - Identity fields present — hardware number, calibration ID, ECU variant
- Filename analysis — tuning keywords (
stage2,dpf_off,egr_off) and generic names (1.bin) flag suspicious files - Family-aware scoring — ECU families that architecturally lack certain fields are never penalised for their absence
The .remap recipe is a self-contained JSON file. Every changed byte is listed with its offset, original value, modified value, and a context anchor — 32 bytes of surrounding data that let the patcher find the right location even if the binary has shifted slightly between software revisions.
Recipes are human-readable, Git-diffable, and shareable. No proprietary format, no binary blobs.
Works on Windows, macOS, and Linux. One command to get started:
pip install openremapOr with uv (recommended):
uv tool install openremapDetailed guides:
- 🪟 Windows — Step-by-step guide · written for people who rarely use a terminal
- 🍎 macOS / 🐧 Linux — One-command install
- 🛠️ Contributing / development — Clone and run from source
openremapThat's it. The full terminal UI launches — identify files, scan folders, cook recipes, and apply tunes, all from one interface. No flags to memorise.
The complete CLI is still there when you need it:
openremap workflow # Prints a plain-English guide with every step and command
openremap commands # Quick reference for all available commands- 🌐 openremap.com — website with full guides and changelog
- Integration guide — using OpenRemap as a Python library
- How it all works
- CLI commands overview
- Confidence scoring — tiers, signals, and breakdown
- Recipe format (.remap)
- Supported families: Bosch · Siemens · Delphi · Marelli
- Contributing — adding extractors, code style, PRs
Contributions are welcome — especially new ECU family extractors. See CONTRIBUTING.md.
MIT — see LICENSE.
⚠️ Checksum verification is mandatory. Before flashing any tuned binary to a vehicle, you must run it through a dedicated checksum correction tool (ECM Titanium, WinOLS, or equivalent).openremap tuneconfirms the recipe was applied correctly — it does not correct or validate ECU checksums. Flashing a binary with an incorrect checksum will brick your ECU.
⚠️ Research and educational use only. Any output produced by this software must be reviewed by a qualified professional before being flashed to a vehicle. The authors accept no liability for damage, loss, or legal consequences arising from its use. Read the full DISCLAIMER.
