All topics
Getting started

The method: stock to final

A fixed order of stages, each assuming the one before it is right. One variable per run, the same conditions every run, deterministic signals first and the knock counter last.

Tuning feels like guess-and-check when stages are skipped, or when a statistical signal (knock counts) is read as if one pull settled it. Done in order, every run answers one question you wrote down before pressing RUN, and the answer tells you the next step. This page is the order. "Your first session" walks it through with the app's controls. "Troubleshooting" covers what to do when a run does not look the way you expected.

The stages

StageWhat you changeWhat you readDone when
0. FactsScalars tab: injector flow and dead time (the card shows what is fitted), stoich for the fuel in the tank, rev limit under the valve-float point, boost cut 25–30 kPa above the boost you expect and never above the last MAP row (the Boost table's blurb states the spring's base boost and the last run's peak MAP). Nothing here changes by itself: fitting injectors or switching fuel changes the engine, not the ECUThe Scalars tab's fitted-parts lines, the retune banner in the Garage, then the pre-run checks under RUNThe pre-run checks pass. No run yet.
1. BaselineNothingOne cooled pull; set it as the baseline in Runs & compare and star itYou have a number and a curve to compare against.
2. FuelVE table only; leave timing aloneλ error % overlay, Suggested VE overlay, the worked line in the VE correction panelλ error under 1 % average and 3 % in any cell the pull visits, on two consecutive runs.
3. TargetsTarget λ: stoich at light load, rich under load, richer under boost; leaner at the top end only where EGT and knock allowMeasured λ tracking the final target, EGT, injector dutyDuty under 85 %; EGT at least 10 °C under the warning level on a cooled pull.
4. TimingIgnition, one block at a time, 0.5–1° per run, only in cells the run visitsTorque curve delta against the baseline, knock counts and retard, EGTThe last step gave no torque or raised the counts: take that step back out.
5. BoostWastegate duty, 5 % at a time; boost cut above the new target firstMAP against the target, turbo speed, injector duty, EGTTarget met without overshoot. Then back to stage 2 for the new cells, and walk down again.

The dependency chain

A change at one stage invalidates everything below it and nothing above it. That is what makes "what do I adjust now?" answer itself.

  • New hardware or a different fuel: back to stage 0. The app never updates the scalars for you. Injectors change the real flow and dead time while the ECU keeps the old numbers; E85 changes the real stoich while the ECU keeps 14.7; the retune banner shows both values side by side and you type the installed ones into the Scalars tab. Stronger valve springs let you raise the rev limit; more boost needs a higher boost cut; both are your call.
  • A λ target change: re-check stage 4. Richer raises the knock limit (up to a cap), leaner lowers it and raises EGT.
  • A timing change: re-check stage 3's EGT. Retard heats the exhaust; advance cools it.
  • A boost change: back to stage 2 for the new cells, then 3, then 4. More boost is more air than the table knows, a hotter charge, a lower knock limit and more injector duty.
  • New boost hardware (turbo, wastegate spring, solenoid, wastegate): the stock Boost table was solved for the old parts and will overboost on the first pull. Set every Boost cell to 0, set the cut 25–30 kPa above the spring's base boost (the Boost table blurb states it), and make the first pull short, part-throttle and in real time. The pre-run check reminds you.

The first pull on an unverified map

A full-throttle sweep to redline is a test, not a starting point. When the fuel, timing or boost tables have not yet been proven on the parts that are fitted, a tuner makes the car run in a small, safe window first and widens it on evidence:

  1. Safe base map: scalars true, Boost table at 0, boost cut just above base boost, λ targets rich (stock is fine), timing stock. Nothing in it is optimised; everything in it is survivable.
  2. First pull at 1× real time, 50 % throttle, sweep end 1000 rpm under the limiter, auto-abort on, a hand on Space. Watch λ measured against target and MAP against the cut. Lift if either runs away.
  3. Correct what that pull showed (usually VE in the cells it touched). Then 75 % throttle, then full throttle, then the full rpm range, correcting after each.
  4. Only then is a wide-open pull a baseline rather than a gamble. A boost cut or a lean cell found at 50 % throttle costs nothing; the same thing found at full boost costs a piston.

Rules that make it a method

  • One variable per run. If VE and timing change together, the torque delta tells you nothing.
  • Same conditions or no comparison. Press Cool down before every run you intend to learn from; keep the sweep settings fixed; when Runs & compare flags a comparison as unfair, believe it.
  • Edit only cells the run visited. The Cells hit overlay shows which. An edit elsewhere is a guess the dyno cannot check; tune part-load cells in steady-state instead.
  • Keep maps smooth. The ECU interpolates between cells, so a jagged map produces timing the engine sees in no cell at all. Flat offsets on blocks, then Smooth; never single-cell heroics. The 3D button next to the overlay picker shows the table as a surface: lumps and holes are obvious there and invisible in a grid of numbers.
  • Step small, in the direction you can undo: 0.5°, λ 0.01, 1 % VE, 5 % duty. Shift gives the big step when you are sure.
  • Star the run that closes each stage and export the project. You will want to restore it.

Which signals you can trust from one pull

SignalNatureHow to read it
λ error, injector duty, fuel pressure, EGTDeterministicOne cooled pull tells the truth. Two agreeing runs make it certain.
Torque curve and peakDeterministic, inside a noise bandDeltas under about 0.7 % are run-to-run variation; the result card labels them.
Knock countsStatisticalA rate, not a number. The same map gives 1 count on one pull and 3 on the next. Three cooled pulls before believing a count, and look for the pattern (same cells, retard climbing) rather than the total.
HealthCumulativeOnly ever goes down. If it moved during a stage, something in that stage was past a limit.

When to call it final

On three consecutive cooled pulls:

  • λ error inside the stage-2 limit everywhere the engine goes, and no cell outside that region touched.
  • The last timing step taken back out; counts 0–2 per pull with the retard at one step and recovering.
  • EGT and injector duty inside their margins; health unchanged since the stage started.
  • One pull on the Hot 38 °C day and one on the Cold 5 °C day, neither raising a warning or moving health. Hot is the worst case for knock; cold is the worst case for cylinder pressure and piston crown heat, because denser air means more mass at the same boost. A boosted engine on E85 is far more likely to break on the cold day.
A tune that only works on a mild day is not a tune. Star it, set it as the baseline, export the project. Anything after that is a new project with a hardware reason behind it, not more tinkering with the same map.

What "more" costs

The stock map sits a few degrees under the knock limit on purpose: that margin covers a hot day, a worse tank of fuel, heat soak and wear. Spending it with timing buys a few percent and gives that cover away. Moving the limit itself takes better fuel, a cooler charge or less boost (see Knock and Heat). Know which of the two you are doing.

Now try it.

Pick a car in the garage, make a baseline pull, correct the fuel, add timing, finish. The whole loop takes about twenty pulls. Free, in the browser, no account.

Start your first session →