Third-party credits & community ground truth
OpenRemap's checksum and detection knowledge is built on open community work. We port algorithms (never copy code wholesale) into an MIT codebase; these projects deserve the credit.
Community projects (algorithm sources)
| Project | What we took | License | Where it lands |
|---|---|---|---|
| ME7Sum | Bosch ME7 main + multipoint checksum scheme | GPL | openremap/core/services/checksums/checksum.py, Rust sweep |
| IronFelix | ME7.XX / M3.x / M7.9.7 / M7.9.8 / ME7.4.5 / Samand checksum profiles | GPL | openremap/core/services/checksums/ironfelix.py |
| NefMoto Open Source | ME7 rolling / multirange checksum detection (firmware-code-driven) + the 6-form C166 parser that seeds the Rust xref decoder's size table | GPL / community | openremap/core/services/checksums/nefmoto.py, openremap/_rs/src/arch/c166.rs (size-table seed) |
| RomRaider | RomChecksum.java descriptor-table algorithm (basis of the Denso Subaru scheme) |
GPL v2 | openremap/core/services/checksums/denso.py |
| MS4X Wiki | GS20 / SMG2 TCU checksum corrector algorithm (decompiled community tool) | community | openremap/core/services/checksums/ironfelix.py (GS20/SMG2) |
| td-d/SubaruDefs | EcuFlash Subaru defs — checksum table addresses and layout knowledge | community | openremap/core/services/checksums/denso.py |
| bludgod/RomRaider | The 501-file Subaru factory-ROM corpus | community | tests/data/ECUs/Subaru/ (gitignored) |
| mumbel/Ghidra_C166 | C166/ST10 instruction encodings consulted to verify the Rust xref decoder's size table (dev-time oracle only — Ghidra is never a runtime dependency; no SLEIGH code is copied) | Apache-2.0 | openremap/_rs/src/arch/c166.rs (+ the public Infineon/Siemens ST10/C166 instruction-set manuals) |
Used as libraries (runtime dependencies)
| Project | What we use | License | Where it lands |
|---|---|---|---|
| orjson | Fast, spec-strict JSON parsing of recipe files | Apache-2.0 / MIT | recipe-load paths (tune/validate/merge/audit/diff-maps/TUI) |
| bincopy | Intel HEX / Motorola S-Record parsing + record checksum validation | MIT | openremap/core/services/convert.py, openremap convert |
| vininfo | VIN decoding — WMI → manufacturer/region/country, model years, ISO 3779 check digit | BSD-3-Clause | openremap/core/services/vin_decode.py (scan-vins/health/identify) |
| rapidfuzz | Fuzzy string matching for family-name suggestions | MIT | families --family fuzzy lookup |
| capstone | Code-region disassembly for the code-reference (xref) map signal — statically-resolvable absolute references (TriCore movh.a+lea, SuperH absolute mov.l/mov.w, x86 [abs]) |
BSD-3-Clause | openremap/core/services/maps/xrefs.py (analyze / scan-maps --xrefs / recipe maps[] xref evidence) |
What "port" means here
- We implement the algorithm from the documented behaviour and validate against real binaries — we do not copy implementation code.
- Where semantics were ambiguous (e.g. the Denso end-inclusive
endaddress), the factory corpus resolved it; deviations are documented in the module docstrings. - The Rust ports are 1:1 re-implementations of our own validated Python, not copies of the upstream C/Java.
Sources of structural knowledge (non-code)
- EcuFlash / OpenECU definitions (via td-d/SubaruDefs and the SubaruDefs mirror) — ROM layouts, flash methods.
- The ECU tuning community's public forum knowledge (calibration ID conventions, flash layout facts) — credited inline where relied upon.