The info in this thread was very useful, so I wanted drop a rundown of a “fix” for the service code 25 that I have found that works on the Ninja 400. When changing the gearing more than 7ish percent, we also see that code. My suspicion is the ECU is comparing RPM to rear wheel speed in reference to current gear being reported by the gear position sensor. i believe there is a speed table somewhere in the ECU, a bit like what they were finding in the Ninja 250. When it sees a large enough mismatch, it seems to “assume” the problem is the gear position sensor. After a semi-sarcastic comment to a friend about “how can it possibly compare rear wheel speed speed to RPM when the clutch disengaging the engine and transmission can make any RPM occur at any speed” and some follow up testing, it does not appear the ECU is making that check while the clutch switch is closed. Here is a copy/paste from my post on another forum about this same issue. While I can’t promise results here, I have a very strong feeling it will work. Definitely let me know.
“WARNING! Doing this disables the engine lockout switch! The bike will allow you to attempt to start when in gear even if the clutch lever is not held in. IT WILL LUNGE FORWARD ABRUPTLY IF ATTEMPTING TO START! This is disabling a safety feature, and I cannot recommend doing this, especially on a street driven vehicle.
Now that that's out of the way. Currently I have a jumper wire in place of the clutch switch (aka Engine Lockout Switch), and have not received an error code after quite a few hours and miles of driving. I removed the jumper and the error appeared with 15 minutes, and I also got the error when the jumper fell out, unknown to me at the time. So this means that the ECU isn't comparing RPM to rear wheel speed while the clutch is "engaged." While I can't say there isn't anything else happening, I haven't noticed any negative effects of this on performance. AFR stays as programmed, ignition advance is fine, all the basics seem fine.”
So in short, since I didn’t explain it will, I disconnected the wire from the switch on the clutch lever, plugged a wire into each side of the connector so it always appeared to the electronics that the clutch lever was being pulled. I haven’t had time to dig into the wiring harness more, but I think if you place a diode in the line that goes from the clutch switch system and the ECU so power can only flow towards the ECU, and then a diode that sends power from the wire powering that switch system to between that other diode and the ECU, the ECU should always see that the clutch switch is closed (pulled) but should allow the rest of the engine lockout features to still work and not backfeed power into those lines. Again, it’s only an untested thought at this point, but maybe work exploring for someone who has a service manual wiring diagram and doesn’t mine cutting into the harness to get readings and attaching diodes.