OpenRemap Docs

scan-maps

Inside an ECU file there are maps — the tuning tables the tuner changes: fuel, boost, ignition timing, and so on. Each map is a grid of numbers with a scale (the axes: usually RPM and engine load).

scan-maps hunts for those grids structurally: it looks for the pattern "a scale of rising numbers, followed by a block of smooth data" — the fingerprint of a calibration map. It does not need to know which ECU family the file is from.

Think of it as a metal detector: it beeps on things that look like maps, anywhere in the file, even in ECUs OpenRemap does not officially support.

When do I need it?

  • Health-checking a file. A real ECU file contains hundreds or thousands of axes; an encrypted, corrupt, or empty file has almost none. The first line of output tells you which situation you are in.
  • Exploring an unsupported ECU. The offsets it finds are great starting points for other tools.
  • Before building an extractor. Understand a binary's structure before writing support for it.

Honest caveat: the scanner is structural, not semantic. It finds grids that look like maps — it does not know if one is "fuel" or "timing". You interpret what you find. (With --classify it makes its best guess with a confidence label, like fuel 0.72.)

Try it (2 minutes)

openremap scan-maps my-file.bin
  my-file.bin

  ✓  Genuine calibration binary
  15,967 axes  •  1,985 tables  •  4,194,304 bytes

      Offset       Dim   Cells    Score
  ─────────────────────────────────────────
  0x000376F2     32×16  u16 LIT  0.977
  0x002214D4      32×6  u16 LIT  0.965
  ...

(Output shortened — by default only the top 20 tables are listed.)

Understanding the answer

The output says… In plain words
✓ / ⚠ / ✗ Genuine calibration binary The health signal — does this file look like a real ECU? (✓ = ≥ 1,000 axes)
axes / tables How many scales and grids were found
Offset, Dim, Cells Where each grid is, its size (rows × columns), and its cell width / byte order
Score How map-like the grid looks (0–1; higher is more convincing)
⟶code (with --xrefs) Real program instructions were seen reading this table — strong evidence it is a genuine map

By default the scan focuses on the calibration region (the part of the file the layout tool identifies as the tunable area) to avoid junk from code or empty areas. Use --whole-file to scan everything.

For developers

The same scan is available as methods of openremap.api — note the method name uses an underscore (scan_maps), the CLI command uses a dash (scan-maps):

Way of using it Where to look Example
Terminal (CLI) scan-maps — CLI openremap scan-maps my-file.bin
Python code scan-maps — API api.call("scan_maps", {"path": "my-file.bin"})
Any language (JSON-RPC) scan-maps — API a request with "method": "scan_maps"

Where to go next

You want to… Go to
See every flag (regions, classify, xrefs, CSV export, batch) scan-maps — CLI
Call scan_maps from your own code scan-maps — API
First see how the file is organised layout
Understand what a map and an axis are Glossary