Crosskart on the dyno

🔧 Cracking the Code on Yamaha MT-09 Limp Mode! 🔧

This was one of those projects where the machine fought back — and lost.

The challenge: a crosskart powered by the Yamaha MT-09 engine. As fun as that sounds, transplanting this engine from its native bike into a buggy created a storm of ECU complaints. The original ECU expects to see ABS speed data and gear position info from the bike’s systems. Without them, it drops straight into limp mode, cutting power and ruining the party.

Step 1 – Remove the obvious limits
I unified the default mode to “A”, making sure the throttle and ignition maps would always deliver full output at wide open throttle. That killed one set of restrictions, but the real enemy was still lurking — a hard limiter at 8,500 RPM.

Step 2 – Push the limits
I lifted the limiter to 13,000 RPM. On the dyno, the first run felt perfect… until the ECU threw limp again. Cylinders cut, misfires, hard starts. Time to go deeper.

Step 3 – Reverse engineering the root cause
Digging into the firmware running on the Renesas SH78xxx CPU, I traced the exact routine that decides when to cut cylinders and clamp RPM. Sure enough, the trigger path was “missing ABS” OR “invalid gear data”. The protection logic made sense for a bike, but in this build it was just sabotage.

Step 4 – Surgical patching
I NOP’d the decision points — four in total — so the routine still runs, but skips over the kill commands. That way, other unrelated protections stay active, but the bogus ABS/gear checks can’t shut the party down.

MT-09 Ghidra