Skip to main content

OpenRemap

🌐 openremap.com — the project site: what OpenRemap is, how to install it, and the latest news.

📚 docs.openremap.com — the wiki: concepts, every command, and per-family references.

🐙 openremap-docs — the open-source repo behind the docs/wiki — suggestions and contributions welcome.

CI PyPI Changelog License: MIT Python 3.10+ uv

The open-source ECU binary intelligence layer — identify firmware, health-check it, verify its checksums, diff a tune into a portable recipe, and apply it to another binary of the same family.

Offline-first. No accounts, no telemetry, no data leaves your machine.

OpenRemap began as a final-semester thesis project, presented at SAEK Orestiadas (v0.4.5), and has been actively developed since (current release line: 0.7.x).


Where the project is going (short-term roadmap)

0.7.x (current): stabilise the 0.7.0 release — fix bugs that surface in real use, and integrate third-party open-source libraries (ported with credit — never copy-paste, see THIRD_PARTY.md). This is a stability cycle, not a feature cycle.

Upcoming milestones:

  • 0.8.0 — cross-firmware experiment: learn a tune from one software revision and relocate it to another by structural map matching, plus community plugin tooling.
  • 0.9.0 — a refined, modern TUI.
  • 1.0.0 — OpenRemap Harness: a desktop app for Windows / macOS / Linux.

Quick start

pip install openremap        # or: uv tool install openremap

openremap identify stock.bin     # what is this ECU?  (family, SW, confidence)
openremap health  stock.bin      # is the file sane?  (checksums, maps, VINs)
openremap cook    stock.bin tuned.bin --output stage1.remap   # diff → recipe
openremap cook-volatile stockA.bin stage1.bin --output portable.remap  # car-portable recipe
openremap tune    target.bin stage1.remap --output tuned.bin  # apply → verify

Runs entirely offline. .bin, .ori, and .hex files are all accepted.

What it is

  • Identify — 36 extractors across 6 OEMs (Bosch, Siemens, Delphi, Magneti Marelli, Denso, Hitachi), each result with a confidence tier and the evidence behind it
  • Health-check — one command: checksums, axis sanity, map-count envelope, erased blocks, VIN duplication (CI-gateable)
  • Checksums — verifies ME7, IronFelix, NefMoto, MS43, GS20/SMG2 and Denso Subaru schemes (detection only, no correction)
  • Cook / tune — diff stock vs tuned into a portable .remap recipe (schema 4.5, map-annotated; cook-volatile excludes VIN/checksum-store bytes with evidence for cross-car portability), apply with validate-before → apply → verify-after; merge recipes; audit the receipt
  • Map tooling — structural map discovery, map-level diffing, CSV export, probabilistic labels
  • Library-first — every service is importable Python (identity, patching, map scanning) with a mandatory Rust core for the hot loops

Supported ECUs

6 manufacturers, 36 extractors — from LH-Jetronic (1982) to EDC17 and Denso/Hitachi Subaru (2020s). → Per-family reference

Decoders & CPU coverage

To extract code references and read routines, OpenRemap decodes the ECU's CPU directly — no manufacturer lookup needed. Decoders power the code-reference signal, CPU auto-detection, and the routine command's pseudo-decompiler. Two backends cover the supported families:

  • Rust-native decoders — written from scratch for CPUs that the capstone disassembly library does not support (C166/ST10, 8051, MCS-96), each verified against an independent oracle: Ghidra's SLEIGH spec (C166), the at51 disassembler (8051 — 100% agreement on ~312k real instruction boundaries), and MAME's opcode tables + Ghidra (MCS-96).
  • Capstone-backed decoders — the mature disassembly library, used for TriCore, SuperH, x86, M680X, 68K and PowerPC.
CPU Decoder ECU families
C166 / ST10 Rust ME7, ME9, EDC15, MS43, PPD, SID801/803, EMS2000, M5.x, ME1.5.5
8051 (MCS-51) Rust M1.8, M2.x, MP9, M4.x, Mono-Motronic, SIMOS, Simtec56
MCS-96 (8096) Rust EDC1, EDC3
TriCore capstone EDC16, EDC17, MED9, MED17
SuperH capstone SH7055, SH7058, SH72531, SH72546
M680X (68HC11 / 6800) capstone M1.3, M1.7, M3.x, MP3.x, MP7.2, LH-Jetronic
68K (68000 / CPU32) capstone M1.5.5, M1.55, IAW 4LV
PowerPC capstone MJD 6JF
x86 capstone (generic code — bootloaders etc.)

Every mapping above is evidence-backed: an internal audit established each family's CPU from reset-vector header bytes and independent decoder evidence, and corrected several extractor docstrings along the way (M2.x / MP9 / M4.x are 8051, not 68xxx; EDC16 / MED9 are TriCore, not C166). Denso EE20 is believed to be SuperH per community docs, but there is no corpus binary to verify against yet.

Documentation

The wiki is live at docs.openremap.com — its content lives in the open-source v-arapidis/openremap-docs repo. This repository keeps only repo-internal docs (docs/internal/ — audits, roadmaps).

Contributing

See CONTRIBUTING.md — extractor guides, code style, PR process. Changes are tracked per version in changelog/.

License

MIT · Third-party credits

Metadata

Release files for openremap 0.7.5

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for openremap 0.7.5
File
openremap-0.7.5-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
openremap-0.7.5-cp310-abi3-musllinux_1_2_x86_64.whl CPython 3.10 abi3 Linux musl 1.2+ x86-64 Details
openremap-0.7.5-cp310-abi3-manylinux_2_34_x86_64.whl CPython 3.10 abi3 Linux glibc 2.34+ x86-64 Details
openremap-0.7.5-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 3.6 MB

Release files / openremap-0.7.5-cp310-abi3-win_amd64.whl

Download URL openremap-0.7.5-cp310-abi3-win_amd64.whl
Size 810.1 kB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
573f9e6f0014dd65aec228733c894f672cc69442650e0937cb1fedf2e9abeb5a
BLAKE2b-256 checksum
How to use checksums
e8faeb7b17ad8a4a3deeeac79d56c99cc700fc520a685ffe762ca7d2095af69e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release files / openremap-0.7.5-cp310-abi3-musllinux_1_2_x86_64.whl

Download URL openremap-0.7.5-cp310-abi3-musllinux_1_2_x86_64.whl
Size 1.0 MB
Tags CPython 3.10 Linux musl 1.2+ x86-64 abi3
SHA-256 checksum
How to use checksums
e75a6f9f26d0bf953695435a5bf770bfce4fb23e5f1a401fbd0e3b3d7c309adb
BLAKE2b-256 checksum
How to use checksums
a6a8e81124e43ea2f34a463995ce0584b4e23ba41eb1d78377e840b4d1565f56
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release files / openremap-0.7.5-cp310-abi3-manylinux_2_34_x86_64.whl

Download URL openremap-0.7.5-cp310-abi3-manylinux_2_34_x86_64.whl
Size 917.7 kB
Tags CPython 3.10 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
ee005ab01e584ebace4b1201f51d8f40cb4a0fbe80c4430f9b98a5307824ffbb
BLAKE2b-256 checksum
How to use checksums
fff87f31ee5a6496564f583eaed478690a5947a18e8d2fa225b70dd5c3d0d7d2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release files / openremap-0.7.5-cp310-abi3-macosx_11_0_arm64.whl

Download URL openremap-0.7.5-cp310-abi3-macosx_11_0_arm64.whl
Size 887.8 kB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8ee563ab520478cb2c355d1c40a8be99b6226ad9a10860523a8d76756eb62c8f
BLAKE2b-256 checksum
How to use checksums
528cba82a60092c93f3b44fab9ebaf6f9f928ae4b74757003cb70e46dc3833e8
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 30, 2026.

Transparency log

Release history Release notifications | RSS feed

0.7.6

4 release files

This release

0.7.5 This release

4 release files

0.7.0

4 release files

0.6.4

4 release files

0.6.3

4 release files

0.6.2

3 release files

0.6.1

3 release files

0.6.0

3 release files

0.5.0

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.0

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page