TPS Spoof

The KLX300 ECU pulls up to 6° of ignition timing at high RPM whenever it sees 80% throttle or more. TuneFI keeps the ECU below that line — and re-adds the fuel it stops giving.

The problem

Kawasaki built a limiter into the factory ECU: at high RPM with roughly 80% throttle or more, the ignition map switches to a retarded one — up to 6° gone above 8000 RPM, worth about 2 HP. Exactly when you pin it. We decoded the map from the ECU binary; the full story is in the ignition article.

Ignition timing vs RPM from the factory ECU: at 80% throttle (green) timing stays fully advanced to redline; at full throttle (red) the ECU pulls up to 6 degrees above 8000 RPM
Straight from the ECU binary. Green is 80% throttle — fully advanced, all the way to redline. Red is full throttle — up to 6° pulled above 8000. The cliff is keyed to throttle position, and that's the door TuneFI walks through.

The spoof

TuneFI sits on the throttle sensor wire behind a relay. Normally the relay passes the real sensor through untouched. But once RPM crosses the engage threshold and your real throttle goes past the cap, TuneFI flips the relay and shows the ECU a signal it generates itself: a steady 75%.

The ECU never learns you're actually at 100%. And since it only retards timing at 80% throttle or more, it stays on the fully advanced map all the way to wide open. The defaults sit a few percent below the factory triggers — 75% cap against the 80% line, 7800 RPM engage against the 8000 band — so sensor tolerance can't push the ECU over the edge.

1 · BELOW ENGAGE RPM — PASS-THROUGHTPS sensorrelay · NCECUreal signalreal signalTuneFI watches RPM and throttle — and stays out of the way2 · ABOVE ENGAGE RPM, REAL THROTTLE OVER 75% — SPOOFINGTPS sensorTuneFIreads real throttlesends 75% to ECUrelay · NOECUreal75%injectorsfueled from the real throttleECU sees: 75% — ignition stays fully advancedrelay falls back to the real sensor on power loss — stock behavior, always
One relay, two states. TuneFI watches RPM and the real throttle; the ECU only ever sees whichever signal the relay selects.

The catch

The ECU computes fuel from what it's shown. Convince it you're at 75% and it fuels for 75% — a lean engine at full throttle if nothing else happened. Lean is the one thing a fuel controller must never do.

RETARD ZONE40%60%80%100%40%60%80%100%your real throttlewhat the ECU seesbelow engage: real signal75%above engage: clamped to 75%
Above the engage RPM the ECU input flatlines at 75% while your real throttle keeps going. The gap between the two lines is exactly the fuel the ECU stops giving.

Spoof fuel compensation

So the moment the relay engages, a second mechanism switches on: a compensation curve, completely independent of your fuel map. It tracks how far past the cap you really are — nothing changes below 75%, and at true wide-open throttle it adds the full table value for the current RPM. It stacks on top of whatever map is loaded: the stock base, a shared map, or one you built in TuneFI Studio.

The curves aren't guesses: we read the stock VE map out of real KLX250 and KLX300 ECUs, computed exactly how much fuel the ECU stops injecting at each RPM past the cap, and shipped the result — rounded, then biased a couple percent rich. Rich is safe, lean is not.

+0%+5%+10%+15%7,0008,0009,00010,00011,000RPMextra fuel at WOTengage 7,800+8+8+11+13+13KLX300
Shipped KLX300 defaults, computed from the stock VE map. The KLX250 mechanism is identical — its own VE map, its own engage point and curve. Curves ship biased a couple percent rich: rich is safe, lean is not.

If it ever fails

The relay is fail-safe by construction. Cut power, unplug the unit, hit a fault — and it falls back to the real sensor. The ECU sees the truth again, compensation switches off, and fueling is bone stock. The symptom of losing spoof is the ignition retard coming back: a power dip, not a lean engine. There's also a plain on/off toggle in the app.

Everything is configurable

Nothing here is locked in firmware. From the app — map screen, SPOOF chip — you can flip spoof on or off, set the engage RPM, set the throttle cap, and edit the compensation curve point by point. The shipped values are defaults, chosen per model from the ECU decode; they're a starting point, not a prescription.

The source

The power cliff at 8000 RPM

How we pulled the factory ignition map out of the ECU binary — and what full throttle costs on a stock KLX300.

Spoof compensation is its own layer and composes with any fuel map. Starting maps live on the fuel maps page; build your own from ride logs in TuneFI Studio.