Apply
Applying a recipe writes its changes into a copy of another file. Four commands
do this, from strictest to loosest. There are no --force flags: the command you
choose is the policy.
| Command | Needs the same software? | Needs exact byte positions? | Ambiguous change |
|---|---|---|---|
tune-strict |
yes | yes | reported |
tune-shift |
yes | no (±2048 bytes) | refuses |
tune-unique |
no | yes | reported |
tune-any |
no | no | reported |
tune-strict
What it is: applies only if everything lines up — same software, original bytes exactly where the recipe says, and the result verified.
openremap tune-strict original.bin stage1.remap -o patched.bin
tune-strict · original.bin
POLICY identity=firmware · positions=exact · shift=must be zero · ambiguity=reported
SCHEMA 5.0
RECIPE KEY EDC17C66::1037541778126241V0
TARGET KEY EDC17C66::1037541778126241V0
A1–A5 PASS schema 5.0 · the contract agrees with the contents
Γ2-floor PASS recipe floor=any · command=firmware
Γ4 PASS 79/79
Γ6 PASS 79/79 found
Δ1 PASS 79/79
✅ APPLIED
sha256 out b737d34463cc9d259fdd6d4df5d3ac2d795ffba9b112a7243656ab247c20c444
bytes written 7,828
saved to patched.bin
(Trimmed — the real report shows all fourteen checks.) Then the two blocks that always follow:
checksums NOT CORRECTED
no known scheme for this family — nothing was checked
verify with openremap checksum patched.bin
disclaimer OpenRemap does not correct checksums automatically.
A tune that will run in a real vehicle must be reviewed by a
dedicated tuner shop.
Your input file is never modified. The result goes to the output path you gave.
tune-shift
What it is: for the same software, when a change sits at a slightly different place (±2048 bytes). In exchange, an ambiguous change becomes a refusal.
openremap tune-shift target.bin stage1.remap -o out.bin
On a file of a different software version it refuses:
POLICY identity=firmware · positions=anchor ±2048 · shift=allowed, reported
✗ REFUSED at Γ2
Different firmware: recipe=EDC17C66::1037541778126241V0 · target=EDC17C60::08001508446612B.
→ Different firmware. Applying across firmwares is possible but deliberate —
no apply command on this ladder will do it.
[exit 1]
tune-unique
What it is: for a file that cannot be identified at all — an obscure dump, or one that was already modified. It requires two independent proofs of position instead: exact bytes and every anchor unique.
openremap tune-unique target.bin stage1.remap -o out.bin
POLICY identity=any · positions=exact · shift=must be zero · ambiguity=reported
✗ REFUSED at Γ4
The recipe's original bytes are not in place: 79 of 79 instruction(s) do not match
(e.g. #1 at 0x225A13).
→ The recipe's original bytes are not in place — this target is not the file the
recipe describes.
[exit 1]
tune-any
What it is: the loosest rung — no identity check, displaced positions accepted, ambiguity reported instead of refused. It will happily try a different firmware, so read the identity line before you flash anything.
openremap tune-any target.bin stage1.remap -o out.bin
POLICY identity=any · positions=anchor ±2048 · shift=allowed, reported
✗ REFUSED at Γ6
The anchor search failed — 79/79 instruction(s) failed to apply.
# 1 0x00225A13 ctx+ob+ctx_after pattern not found near 0x225A13 …
# 79 0x002C04CE … (ob bytes found elsewhere in binary — map likely shifted)
→ The anchor was not found in the target — probably a different revision.
[exit 1]
Even the loosest command still checks the recipe's own validity, the file size, that
every anchor was found, and that the result verifies. It refuses rather than
guessing — which is why you see REFUSED and not a half-written file.
Reading a refusal
| Prefix | Group | Example |
|---|---|---|
A |
the recipe itself | A2 old schema, A5 contract disagrees with contents |
Γ |
recipe vs target | Γ1 size, Γ2 identity, Γ4 bytes not in place, Γ6 anchor missing, Γ8 ambiguity |
Δ |
after writing | Δ1 changes verified, Δ4 byte accounting |
Every refusal ends with a → line telling you what it means or what to try. When no
looser option can help, it says that instead of suggesting a key that would not work.
Where to go next
| You want to… | Go to |
|---|---|
| check the result afterwards | validate after |
| prove all three artifacts belong together | audit |
| do the same thing with a screen and keys | APPLY screen |