Log real-world road test results and correct/extend the CO-trim theory
New research/ROAD_TEST_LOG.md: the 2026-09-15 flash of 20262-arrow-delete-lowthrottle-composed.hex was a major real-world success (stalling fully resolved, decel backfire much reduced but not eliminated). Captures the live diagnostic reasoning that followed: correcting an overly-lean-leaning framing mid-session (residual decel pop is more likely a rich-unburned-mixture-with-no-SAI-assist problem, not a lean one), a structural hypothesis that the Idle Fuel Trim (CO) curve likely applies whenever the throttle is closed at any RPM rather than only at a literal stop (only 2 of its 32 points are currently corrected, and the untouched middle range lines up with the residual pop's RPM window), and the reasoning for rejecting airbox-baffle removal as a fix for decel popping specifically (wrong mechanism -- closed throttle isn't airbox-limited -- and risks worsening the separately-flagged, still unaddressed main-VE-table leanness gap). Also updates TABLES.md with the CO-trim applicability open question, and brings TUNING_GUIDE.md's "local research assets" section up to date (it still said maps were gitignored/unflashable, both stale). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FP2GaxS9HkUdL5sLBnjKje
This commit is contained in:
121
tunie/research/ROAD_TEST_LOG.md
Normal file
121
tunie/research/ROAD_TEST_LOG.md
Normal file
@@ -0,0 +1,121 @@
|
||||
# Road test log — real-world tune results
|
||||
|
||||
Empirical outcomes from actually flashing and riding, kept separate from the
|
||||
static reverse-engineering docs (`TABLES.md`, `DEVICES.md`) since this is
|
||||
field data, not derived facts about the ROM format.
|
||||
|
||||
## 2026-09-15 — `20262-arrow-delete-lowthrottle-composed.hex`, first real ride
|
||||
|
||||
Flashed after several days running plain stock `20262Map.hex` (SAI/O2 flags
|
||||
still enabled despite SAI being physically removed, snorkel already removed
|
||||
with zero main-table correction). Result: **major, immediate improvement.**
|
||||
|
||||
- **Stalling at lights / low-speed choking: fully resolved.** Not just
|
||||
fixed — noticeably *better* than expected: "a lot more low rev and slow
|
||||
speed control," easier to get going, smooth at slow speeds. Attributed to
|
||||
the Low-throttle fuel table correction (under ~10% throttle, both
|
||||
cylinders, +7% to +24%) plus the two corrected Idle Fuel Trim (CO) points.
|
||||
- **Decel backfire (3-4.5k RPM, 2nd-4th gear): dramatically better, not
|
||||
eliminated.** Before: "backfires like crazy," reliably reproducible.
|
||||
After: 1-3 noticeable pops on a 5k→3k decel sweep in 2nd-3rd gear, and
|
||||
*not* reliably reproducible anymore (sometimes it doesn't happen at all).
|
||||
- **New/newly-noticeable, minor**: holding steady revs at 5k, the engine
|
||||
can "break up and get a tiny bit throaty." Described as minor, not
|
||||
concerning, bike is very rideable as-is.
|
||||
|
||||
**User's own assessment**: "In the current state I could drive it as is and
|
||||
be happy" — this is a real, working baseline, not a stopgap.
|
||||
|
||||
## Diagnosing the residual decel pop — reasoning, 2026-09-15/16
|
||||
|
||||
Two mechanisms were on the table for residual exhaust-side popping on
|
||||
deceleration:
|
||||
|
||||
1. **Rich unburned mixture reaching the hot exhaust with no SAI assist to
|
||||
burn it cleanly** — the classic mechanism for popping *from the exhaust*
|
||||
on decel (as opposed to backfiring through the intake, which is the
|
||||
lean-misfire pattern). SAI's actual job was adding oxygen downstream to
|
||||
assist combustion of that charge; a fuel table can't replicate an air
|
||||
*supply* by adjusting how much fuel goes in. **This is the mechanism the
|
||||
user's own reasoning correctly pointed at** (session correction:
|
||||
"I mean it's still rich, since that's what caused the popping" — right
|
||||
call, corrected an overly-lean-leaning framing from earlier in the same
|
||||
conversation).
|
||||
2. Unaddressed leanness in areas the current composed file doesn't touch.
|
||||
|
||||
**Important structural correction, made mid-session**: the Idle Fuel Trim
|
||||
(CO) table (`0x53690`-`0x536AF`, 32 RPM-indexed points, same RPM axis as
|
||||
the main tables — see `TABLES.md`) was initially assumed to apply only at a
|
||||
literal stop. That's likely wrong. The table has real entries all the way
|
||||
out to 10,000 RPM — no reason for that range to exist if it only ever
|
||||
applied near idle. **More likely: this curve applies whenever the throttle
|
||||
is closed/near-closed, at whatever RPM the engine happens to be at** — i.e.
|
||||
it's the relevant table during an active decel sweep through elevated RPM,
|
||||
not just idle-at-a-stop.
|
||||
|
||||
Given that, the composed file's coverage of this curve matters directly for
|
||||
the decel-popping symptom:
|
||||
|
||||
| Curve region | RPM range | Correction status |
|
||||
|---|---|---|
|
||||
| Point 12 | 2400 | **Corrected** (see `compose_arrow_delete.py`) |
|
||||
| Points 13-26 | 2600-6500 | **Untouched** — still Arrow's original values |
|
||||
| Point 27 | 7000 | **Corrected** |
|
||||
|
||||
The user's actual decel sweep (5000→3000 RPM) runs almost entirely through
|
||||
the **untouched middle section** of this curve. That's a more precise,
|
||||
evidence-grounded candidate for the residual pop than either "lean the
|
||||
idle" (don't — that's the low-throttle fix that's working great, protect
|
||||
it) or "richen the higher range" broadly (that's a different symptom,
|
||||
different table — see below).
|
||||
|
||||
**Two symptoms, two different tables — don't conflate them:**
|
||||
|
||||
| Symptom | Condition | Likely table |
|
||||
|---|---|---|
|
||||
| Decel pop | closed throttle, elevated RPM (falling through 3-5k) | Idle Fuel Trim (CO) curve, untouched middle points |
|
||||
| "Breaks up/throaty" at held 5k revs | open throttle, sustained load | Main VE fuel tables — still 100% stock-Arrow, unaddressed |
|
||||
|
||||
The second one is the known, previously-flagged gap (no main-table
|
||||
correction exists for the snorkel/baffle removal). It is a *separate*
|
||||
project from the decel-pop investigation, not the same fix.
|
||||
|
||||
## Baffle removal considered and rejected as a fix for decel pop (2026-09-16)
|
||||
|
||||
User proposed removing the airbox internal baffle (on top of already-removed
|
||||
snorkel), reasoning more airflow would "even out" the remaining popping.
|
||||
**Rejected, reasoning below** — not because baffle removal is bad in
|
||||
general, but because it's the wrong tool for this specific symptom:
|
||||
|
||||
- Decel popping happens at **closed throttle**, where the throttle plate
|
||||
itself (not the airbox) is the dominant restriction. Baffle removal
|
||||
doesn't meaningfully change airflow in that condition.
|
||||
- Baffle removal *does* increase airflow at every **open**-throttle
|
||||
condition — exactly the untouched main VE tables. This widens the
|
||||
existing, already-flagged leanness gap rather than closing it, and is
|
||||
likely to make the "breaks up/throaty at 5k" symptom *worse*, not better.
|
||||
- Per `COMMUNITY_TUNING.md`'s TTP dyno data, baffle-removal+2-1 already
|
||||
lands close to *full* airbox removal in airflow/power terms. Pulling the
|
||||
baffle on top of an already-removed snorkel pushes past what either
|
||||
reference data point in this project actually characterizes.
|
||||
|
||||
**Recommendation given**: don't pursue baffle removal as a decel-pop fix.
|
||||
If pursued later for its own sake (more performance), it should come
|
||||
*with* main-table correction work, not before it.
|
||||
|
||||
## Where this leaves things, if picked up again
|
||||
|
||||
Current file (`derived/20262-arrow-delete-lowthrottle-composed.hex`) is a
|
||||
good, real, working baseline — user is happy running it as-is. If further
|
||||
work is wanted:
|
||||
|
||||
1. **For the decel pop specifically**: pull real reference deltas for the
|
||||
untouched CO-trim points in the 2600-6500 RPM range (same source
|
||||
methodology as the rest of this project — `20184dynoTuneSteveO2-Disable.hex`
|
||||
vs `20186Map.hex`), test in isolation, don't touch the low-throttle
|
||||
fix that's already working.
|
||||
2. **For the main-table gap**: the bigger, separately-tracked project —
|
||||
full VE-table composition for the snorkel/airbox-baffle removal, still
|
||||
not started (`COMMUNITY_TUNING.md`'s "~1340-byte main VE overlap").
|
||||
3. Neither is urgent — current state is rideable and the user is satisfied
|
||||
with it. This is optimization, not a fix for something broken.
|
||||
@@ -487,22 +487,27 @@ odometer").** Wrong-generation map IDs that came up and got ruled out:
|
||||
variants (`20262`-`20316`), the real SAI/O2 delete map
|
||||
(`20188Map2009AIRBOXBONNY.hex`), the America dyno tune
|
||||
(`20184dynoTuneSteveO2-Disable.hex`) plus its stock baseline
|
||||
(`20185`/`20186`). Gitignored (`*.hex` at the samplez repo root) — these
|
||||
are working files, not committed, so they won't survive a fresh clone;
|
||||
re-download commands are in each research doc's history if needed again.
|
||||
- `reference-maps/derived/` — our own composed candidates (SAI-only,
|
||||
SAI+O2, the trim-composed Arrow variant). **None are known-flashable**
|
||||
— the ECU flash checksum isn't solved (`docs/ROADMAP.md` Phase 3),
|
||||
separate from everything in this document.
|
||||
(`20185`/`20186`). **Committed to the repo as of 2026-09 (`.gitignore`
|
||||
rule removed, explicit user call)** — no longer working-files-only,
|
||||
reachable from a phone browser for TuneECU use.
|
||||
- `reference-maps/derived/` — our own composed candidates. **Flashable —
|
||||
the checksum problem is solved** (`reference-maps/checksum.py`, see
|
||||
`docs/ROADMAP.md`). `20262-arrow-delete-lowthrottle-composed.hex` has
|
||||
been flashed on the real bike and road-tested successfully — see
|
||||
`ROAD_TEST_LOG.md` for actual outcomes, not just derivation.
|
||||
- `reference-maps/{decode_map,reconstruct_rom,table_map,toggle_devices,
|
||||
compose_arrow_delete}.py` — the working toolchain: decrypt → flat ROM →
|
||||
named tables → device-flag edit → trim-byte compose.
|
||||
compose_arrow_delete,compose_lowthrottle,checksum}.py` — the working
|
||||
toolchain: decrypt → flat ROM → named tables → device-flag edit →
|
||||
trim-byte compose → low-throttle table compose → checksum patch.
|
||||
- `tuneecu_site_mirror/` — full local mirror of tuneecu.net's
|
||||
documentation (built by `tuneecu_crawl.py`), including the German
|
||||
road-tuning primer. The live site says it won't be updated after
|
||||
September 2024 — this mirror is insurance against link rot.
|
||||
- `PERMUTATIONS.md`, `TABLES.md`, `DEVICES.md`, `COMMUNITY_TUNING.md` — the
|
||||
detailed research trail; this file is the index, those are the evidence.
|
||||
detailed research trail (how the ROM format works); this file is the
|
||||
index. **`ROAD_TEST_LOG.md`** — the separate, real-world log: what
|
||||
actually happened flashing and riding on it, distinct from derived facts
|
||||
about the ROM.
|
||||
|
||||
## Open questions, if this gets picked up again
|
||||
|
||||
|
||||
@@ -133,6 +133,25 @@ Composing two independent tunes' curves here needs the same per-cell
|
||||
arithmetic treatment as the main VE tables (`PERMUTATIONS.md`), not a
|
||||
handful of spot fixes.
|
||||
|
||||
**Open question, raised from real-world testing (2026-09-15/16, see
|
||||
`../ROAD_TEST_LOG.md`): does "idle" in this table's name mean literal
|
||||
engine-stopped idle, or does it apply whenever the throttle is
|
||||
closed/near-closed regardless of RPM?** TuneECU's own docs say "at idle,"
|
||||
but the table has real, non-trivial entries all the way out to 10,000 RPM
|
||||
— hard to explain if it only ever applied near a stop. Circumstantial
|
||||
support for "applies whenever throttle is closed": a real-world decel
|
||||
sweep through the *uncorrected* middle of this curve (RPM 2600-6500,
|
||||
composed only touched points 2400 and 7000) produced residual popping in
|
||||
exactly that RPM range, while the low-throttle table fix (a genuinely
|
||||
different, confirmed-idle-adjacent table) independently and completely
|
||||
fixed literal stopped-idle stalling. That's consistent with this curve
|
||||
being live during the whole closed-throttle deceleration, not just at a
|
||||
stop — but it's inference from one road test, not confirmed in the
|
||||
decompile. Worth designing a deliberate test for if this gets revisited:
|
||||
does the CO Trim value visibly change on TuneECU's live-diagnostics screen
|
||||
while decelerating at 4000 RPM with the throttle shut, or only once RPM
|
||||
actually reaches idle?
|
||||
|
||||
## SAI / O2 / lambda flags
|
||||
|
||||
Now findable via the localised flat-ROM diff (20187 vs 20188), which isolates small
|
||||
|
||||
Reference in New Issue
Block a user