diff --git a/tunie/research/ROAD_TEST_LOG.md b/tunie/research/ROAD_TEST_LOG.md new file mode 100644 index 0000000..00e0684 --- /dev/null +++ b/tunie/research/ROAD_TEST_LOG.md @@ -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. diff --git a/tunie/research/TUNING_GUIDE.md b/tunie/research/TUNING_GUIDE.md index b2d4e92..748124a 100644 --- a/tunie/research/TUNING_GUIDE.md +++ b/tunie/research/TUNING_GUIDE.md @@ -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 diff --git a/tunie/research/reference-maps/TABLES.md b/tunie/research/reference-maps/TABLES.md index a72f9d5..3f2389c 100644 --- a/tunie/research/reference-maps/TABLES.md +++ b/tunie/research/reference-maps/TABLES.md @@ -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