diff --git a/tunie/research/reference-maps/DEVICES.md b/tunie/research/reference-maps/DEVICES.md index eb2af1d..c325703 100644 --- a/tunie/research/reference-maps/DEVICES.md +++ b/tunie/research/reference-maps/DEVICES.md @@ -45,8 +45,24 @@ checksum is computed at flash time and is out of scope for the read/edit tool.) ## Confidence -- Flag **locations** (0x53801 / 0x53818 / 0x53819) and semantics (1/0): **validated** - against a real NO-SAI-NO-O2 map. -- SAI-vs-O2 **labeling** of the three bytes: strong (order + delete semantics); - final SAI-only-vs-O2-only separation would need a single-delete reference map or - a DTC/bench check. +- **SAI = 0x53801: ~90% (high).** Two independent confirmations: the device-name + logic in `l.java` `lc()` resolves `Devices[0]=SAI` via `fe[33]` to exactly + 0x53801, AND the real NO-SAI map cleared precisely that byte. +- **O2 sensors = 0x53818 / 0x53819: ~80% (probable).** The map declares "NO O² + SENSORS" (the twin has two) and exactly two adjacent boolean bytes cleared + beyond SAI; the 865 has no air-flap, so airbox removal is fuel-only (no flag). + Not independently isolated — no single-mod reference map exists, and the exact + `x.a()` device-layout branch for this ECU (i27=72) is too deeply nested to + trace reliably. + +## The real-world caveat (more important than the labels) + +Correct flags are **not** a good tune by themselves. Disabling O2 forces the ECU +**open-loop**: it stops live fuel trim and runs entirely on the base fuel map. +Stock maps assume closed-loop trim at idle/cruise, so an O2-delete on an otherwise +stock map can run lean/rough. A proper delete pairs flags-off with fuel enrichment +(which is exactly why the AIRBOXBONNY reference map also changed the fuel tables). + +**Recommendation:** flash a complete, known-good delete map matching the hardware +(exhaust/filters), not hand-toggled flags on a stock map. The checkbox editor is +for understanding/building a map, not a one-click safe delete. diff --git a/tunie/viewer/build_viewer.py b/tunie/viewer/build_viewer.py index 380a9c7..7e6c886 100644 --- a/tunie/viewer/build_viewer.py +++ b/tunie/viewer/build_viewer.py @@ -103,9 +103,9 @@ def _extract_romdefs(args) -> dict: # Validated against a NO-SAI-NO-O2 reference map (see research DEVICES.md). "deviceFe": 33, "devices": [ - {"name": "SAI (Secondary Air Injection)", "rel": 0x00}, - {"name": "O2 sensor", "rel": 0x17}, - {"name": "O2 sensor (2)", "rel": 0x18}, + {"name": "SAI (Secondary Air Injection)", "rel": 0x00, "confidence": "confirmed"}, + {"name": "O2 sensor 1", "rel": 0x17, "confidence": "probable"}, + {"name": "O2 sensor 2", "rel": 0x18, "confidence": "probable"}, ], } diff --git a/tunie/viewer/template.html b/tunie/viewer/template.html index 37a3fce..1c5ff59 100644 --- a/tunie/viewer/template.html +++ b/tunie/viewer/template.html @@ -128,13 +128,19 @@

Device flags Map A

-
Toggle emissions/hardware devices. Validated against a real - NO-SAI-NO-O2 map. Uncheck to delete; then Export the edited map.
+
Emissions/hardware device flags (1=on, 0=off). + SAI = confirmed; + O2 = probable (validated as a group vs a + real NO-SAI-NO-O2 map, but not individually isolated).
+
⚠ Flags alone are not a tune. + Disabling O2 forces open-loop — the bike runs only on the base fuel map. On a stock map that + can run lean/rough. A proper delete pairs flags-off with fuel enrichment. Prefer flashing a + complete, matching delete map over hand-toggling a stock one.
-
Export re-encodes the map's distribution format. - The separate ECU-flash checksum is applied by the flashing tool at write time.
+
Export re-encodes the distribution format only; the ECU-flash + checksum is applied by the flashing tool at write time.
@@ -381,7 +387,10 @@ else { const on=TA.rom[d.off]!==0; const row=document.createElement('label'); row.className='item'; row.style.cursor='pointer'; - row.innerHTML=` ${d.name} + const badge=d.confidence==='confirmed' + ? 'confirmed' + : 'probable'; + row.innerHTML=` ${d.name} ${badge} · 0x${d.off.toString(16)} = ${TA.rom[d.off]}`; row.querySelector('input').onchange=e=>{ setDeviceByte(TA, d.off, e.target.checked?1:0); diff --git a/tunie/viewer/tunie-viewer.html b/tunie/viewer/tunie-viewer.html index e6207a7..a48db81 100644 --- a/tunie/viewer/tunie-viewer.html +++ b/tunie/viewer/tunie-viewer.html @@ -128,13 +128,19 @@

Device flags Map A

-
Toggle emissions/hardware devices. Validated against a real - NO-SAI-NO-O2 map. Uncheck to delete; then Export the edited map.
+
Emissions/hardware device flags (1=on, 0=off). + SAI = confirmed; + O2 = probable (validated as a group vs a + real NO-SAI-NO-O2 map, but not individually isolated).
+
⚠ Flags alone are not a tune. + Disabling O2 forces open-loop — the bike runs only on the base fuel map. On a stock map that + can run lean/rough. A proper delete pairs flags-off with fuel enrichment. Prefer flashing a + complete, matching delete map over hand-toggling a stock one.
-
Export re-encodes the map's distribution format. - The separate ECU-flash checksum is applied by the flashing tool at write time.
+
Export re-encodes the distribution format only; the ECU-flash + checksum is applied by the flashing tool at write time.
@@ -178,7 +184,7 @@ - +