Skip to main content

ECU binary analysis and patching toolkit — diff, validate, and apply tuning recipes to automotive ECU binaries.

Project description

OpenRemap

CI Coverage PyPI Changelog License: MIT Python 3.14+ uv

CLI tool. Runs on your machine. No internet. No account. No data leaves your hands — ever.

Drop a .bin, know exactly what it is. Triage a folder of hundreds. Apply a tune you can read in any text editor.

Identify — manufacturer, ECU family, software version, hardware number, and a confidence verdict in under a second. Works on anything from an 8 KB LH-Jetronic ROM to an 8 MB EDC17 dump.

Confidence scoring — signals read straight from the binary: SW version integrity, hardware part number, ident block presence. Wiped idents, tuned-but-relabelled dumps, and modified files are flagged before you've touched anything. HIGH means it looks factory-fresh. SUSPICIOUS means stop and check.

Scan and organise — point scan at a folder of hundreds of mixed binaries and get them sorted into Bosch/EDC17/, Bosch/ME7/, etc. in one command. Every file classified, confidence-tagged, and optionally exported to JSON or CSV.

Tune with a recipe you can read — diff a stock and a modified binary into a portable JSON file. Inspect every changed byte offset before applying anything. tune validates, patches, and verifies in one shot. The full audit trail is a file you can open in Notepad.

How it works in detail


Install


Supported ECU Families

15 Bosch families supported — spanning 1982 to the present, from 8 KB LH-Jetronic ROMs to 8 MB EDC17 flash dumps. The registry is designed to be extended to any manufacturer without touching existing code.

Full family reference — era, file sizes, vehicle applications, and notes for every supported family.

Adding a new manufacturer? → CONTRIBUTING.md


CLI Quickstart

New here? Run openremap workflow first — it prints a complete plain-English guide with every step, the exact commands to type, and what to do when something goes wrong. No reading required.

Full CLI reference → docs/cli.md

# New here? Print the full step-by-step guide
openremap workflow

# Quick reminder of every command and its syntax
openremap commands

# List every supported ECU family (add --family EDC16 for full detail)
openremap families

# Identify a binary — manufacturer, family, SW version, hardware number, confidence
openremap identify ecu.bin

# Batch-scan a folder — dry-run preview, nothing moves
openremap scan ./my_bins/

# Sort into a manufacturer/family tree when you're happy with the preview
openremap scan ./my_bins/ --move --organize

# Diff a stock and a tuned binary into a portable recipe
openremap cook stock.bin stage1.bin --output recipe.json

# One-shot: validate before → apply → validate after  (writes target_tuned.bin)
openremap tune target.bin recipe.json

# Phase 1 failed? Diagnose why — searches the whole binary for shifted or missing maps
openremap validate check target.bin recipe.json

🔴 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 tune Phase 3 confirms the recipe was applied correctly — it does not correct or validate ECU checksums. Flashing a binary with an incorrect checksum will brick your ECU. No exceptions.


Confidence Scoring

Every identify result and every scan line includes a confidence tier — HIGH, MEDIUM, LOW, SUSPICIOUS, or UNKNOWN — based on signals read directly from the binary: SW version integrity, hardware part number, ident block presence, and filename. SUSPICIOUS is not a verdict; it is a prompt to look closer.

Full reference: tiers, signals, warnings, and score breakdown


Documentation

Document Contents
docs/install/windows.md Windows install — step-by-step for first-time terminal users
docs/install/macos-linux.md macOS / Linux install — uv, pip, shell completion, troubleshooting
docs/install/developers.md Developer setup — clone, test suite, project structure, publishing
docs/cli.md Commands overview — what each command does, with links to full per-command pages
docs/confidence.md Confidence scoring — tiers, signals, warnings, and score breakdown
docs/manufacturers/bosch.md Supported Bosch ECU families — era, file sizes, vehicle applications, confidence notes
docs/recipe-format.md The recipe JSON spec — fields, structure, versioning
CONTRIBUTING.md How to add a new ECU extractor, code style, submitting a PR, contributor safety notice
DISCLAIMER.md Liability, intended use, professional review requirements, legal notice

Contributing

Contributions are welcome — especially new ECU family extractors. See CONTRIBUTING.md.

License

MIT — see LICENSE.


⚠️ 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 before proceeding.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openremap-0.3.1.tar.gz (246.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openremap-0.3.1-py3-none-any.whl (192.0 kB view details)

Uploaded Python 3

File details

Details for the file openremap-0.3.1.tar.gz.

File metadata

  • Download URL: openremap-0.3.1.tar.gz
  • Upload date:
  • Size: 246.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for openremap-0.3.1.tar.gz
Algorithm Hash digest
SHA256 eed4f6564524b918e5d462a329c254a41460bcf4b8b2a9b62d6eff95bbece585
MD5 6537b38e6321095c2b0165209769fe19
BLAKE2b-256 46a86a0126fc9ddecd662f47647492eae06cbb1b9025967b40162f0f9f7b6c65

See more details on using hashes here.

File details

Details for the file openremap-0.3.1-py3-none-any.whl.

File metadata

  • Download URL: openremap-0.3.1-py3-none-any.whl
  • Upload date:
  • Size: 192.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Arch Linux","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for openremap-0.3.1-py3-none-any.whl
Algorithm Hash digest
SHA256 7c0794491dd44d054eb560e6502244f6694e3129d2193433076c899f41e0c75b
MD5 ac6092b8ca3b8ff676072abb4d6c4f95
BLAKE2b-256 9c153e2dd723d2a1b31a57351d403e96ebb1ed95c61dc417239b83965f72277b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page