Many small Chinese fuel-injected machines, 125s, 250s and quads included, use a Delphi MT05 ECU (or its MT05.2 and MT05.3 developments). Delphi designed it for small single- and twin-cylinder engines, and it has a rare quality: you can read its fault codes without any tool, by counting the flashes of the engine warning light. Before buying a diagnostic tool or paying for an hour of workshop time, it is worth knowing how.
First: does your bike have a Delphi?
The motorcycle maker almost never builds its own injection. Depending on model and year, a Chinese bike may carry a Delphi, Bosch or UAES (Bosch's Chinese joint venture) ECU, or one from another local supplier. Three ways to find out:
- The ECU label: under the seat or behind a side panel, the unit carries the maker's name and the reference (MT05, MT05.2, MT05.3…).
- The workshop manual for the model, if there is one, which describes the injection system.
- The dealer, who knows the ECU used across the range.
The MT05 is documented for example on the Zongshen Cyclone RX3, where an owner published the procedure and the code table, and on many Chinese UTVs and quads (Hisun and derivatives), where specialist forums have used it for years. The procedure below applies only to an MT05: on a Bosch or UAES ECU it will give you nothing, or something else.
The engine light, normally
When you switch on the ignition, the engine light comes on: that is the bulb check and proof that the ECU is powered. Once the engine has started, it should go out. If it stays on, or comes on while riding, the ECU has stored a fault. A light that never comes on, even with the ignition on, is also a clue: dead bulb or LED, or a fault in the light's circuit (which is exactly what code P0650 in the table reports).
Reading the code by counting flashes
The procedure published for the RX3:
- Bike stationary, engine off.
- Turn the ignition on, off, on, off, on: ON, OFF, ON, OFF, ON, within a few seconds.
- The engine light then gives four series of flashes, one per digit of the code.
- Count each series: one flash = 1, two flashes = 2… nine flashes = 9, and ten flashes = 0.
- If there are two faults in memory, the second code follows the first.
The "P" does not flash: only the four digits are sent. Example: ten flashes, ten flashes, three flashes, one flash give 0031, that is P0031. Note them as you go, on paper or by filming the dash with your phone: more reliable than memory.
Other sources (UTV forums) describe the same thing as "three ignition cycles". If the first attempt gives nothing, try again more quickly.
The MT05 code table
Here is the MT05 "Malf code" table as published with the procedure. The meanings are Delphi's; the "What to do" column is our order of checks, from simplest to most expensive.
| Code | Meaning (Delphi MT05 table) | Likely cause | What to do |
|---|---|---|---|
| P0107 | Manifold absolute pressure (MAP) circuit: low voltage or open | Connector unplugged, broken wire | MAP connector and loom |
| P0108 | MAP circuit: high voltage | Short to positive, failed sensor | Loom, then sensor |
| P0112 | Intake air temperature (IAT) circuit: low voltage | Wire shorted to earth, failed sensor | Loom, then sensor |
| P0113 | IAT circuit: high voltage or open | Connector unplugged | Connector, then sensor |
| P0117 | Engine temperature sensor circuit (coolant or oil): low voltage | Wire shorted to earth, failed sensor | Loom, then sensor |
| P0118 | Engine temperature sensor circuit: high voltage or open | Corroded or unplugged connector | Connector, then sensor |
| P0122 | Throttle position sensor (TPS) circuit: low voltage or open | Connector, sensor | Connector, then sensor |
| P0123 | TPS circuit: high voltage | Short, failed sensor | Loom, then sensor |
| P0131 | Oxygen sensor circuit: low voltage | Sensor, exhaust air leak | Exhaust, connector, sensor |
| P0132 | Oxygen sensor circuit: high voltage | Sensor, loom | Connector, sensor |
| P0031 | Oxygen sensor heater: high voltage (Delphi wording, see below) | Sensor heater, loom | Connector, sensor |
| P0032 | Oxygen sensor heater: low voltage (Delphi wording) | Same | Same |
| P0201 | Injector 1 circuit | Injector connector, injector coil | Connector, then injector |
| P0202 | Injector 2 circuit (twins) | Same | Same |
| P0230 | Fuel pump relay coil: low voltage or open | Relay, fuse, loom | Fuse, relay, loom |
| P0232 | Fuel pump relay coil: high voltage | Relay, loom | Relay, loom |
| P0336 | Crankshaft position (CKP) sensor: noisy signal | Air gap, poorly shielded wire, damaged trigger | Connector, sensor mounting |
| P0337 | Crankshaft sensor: no signal | Failed sensor, broken wire | Connector, sensor test |
| P0351 | Cylinder 1 ignition coil | Coil, connector, loom | Connector, then coil |
| P0352 | Cylinder 2 ignition coil | Same | Same |
| P0505 | Idle speed control error | Dirty throttle body, air leak, stepper motor | Cleaning, air-leak search |
| P0562 | System voltage low | Battery, regulator, charging | Battery and charging with a multimeter |
| P0563 | System voltage high | Regulator-rectifier | Charging test with engine running |
| P0650 | Engine warning light (MIL) circuit | Bulb or LED, dash loom | Dashboard, connector |
| P1693 | Tachometer circuit: low voltage | Loom to the dashboard | Loom |
| P1694 | Tachometer circuit: high voltage | Same | Loom |
The last two are Delphi-specific codes (P1xxx): do not look up their meaning in a generic OBD list, where it would be different.
The P0031 / P0032 trap
In the SAE J2012 standard, the one behind the OBD lists you find everywhere, P0031 means "oxygen sensor heater, circuit low" and P0032 "circuit high". The Delphi MT05 table gives the reverse: P0031 high voltage, P0032 low voltage. We do not know whether this is a quirk of the ECU or a typo in the published table; we flag it for a practical reason: on an MT05, do not infer the direction of the fault from a generic list's wording. Measure: sensor heater, its supply, its earth. For what it is worth, the RX3 owner got a P0031 simply by unplugging the sensor.




