Explanation of EFI Diagnostic Trouble Codes for OBD-II
By Mike Grage, Customer and Technical Support at Modern British Iron
EFI diagnostics only got an honorable mention when I attended Motorcycle Mechanic’s Institute in 1990-91. Then it started putting the meat and potatoes into my paychecks sometime around 1998. My EFI training is from annual new model update seminars from multiple motorcycle manufacturers over the years. And experience has taught me that some EFI problems cannot be solved with training alone.
“Starting in 1996 all electronic fuel injection on highway vehicles were required to have the second generation of on-board diagnostic, or OBD-II.”
Since OBD-II trouble codes will send you in the right direction when diagnosing EFI problems I am going to decipher the trouble codes in this blog. The actual diagnostic procedure for finding faults is a little more complex so I am going to be covering that in a separate blog. Starting in 1996 all electronic fuel injection on highway vehicles were required to have the second generation of on-board diagnostic, or OBD-II. There are over 5000 generic codes in the OBD-II system and a number of these are manufacturer specific codes. The manufacturer specific codes may not appear in a generic scanner.
There are four basic groups of codes:
- Powertrain (Pxxxx),
- Chassis (Cxxxx),
- Body (Bxxxx), and
- Network Communication (Uxxxx)
As far as I know, no motorcycle ECU will produce a body code and I hope the reason is self-explanatory. Or at least none that I have been factory certified to service.
First up are the powertrain, or P codes. The next character will be either a 0 or 1. A code of P0xxx indicates a generic OBD-II trouble code, a P1xxx code indicates a manufacturer specific code. (ex. P1201 Inj 1 open/short to gnd is a code specific to Triumph).
The next digit indicates which part of the EFI system circuit is generating the DTC. The standardized list for this digit is:
- 0- Fuel & Air metering (Oxygen sensor heater)
- 1- Fuel & Air metering (MAP, IAT)
- 2- Injector circuit (injector malfunctions)
- 3- Ignition system (misfires, etc.)
- 4- Auxiliary emissions control (purge canister, air injection, etc.)
- 5- Vehicle speed control & Idle speed control
- 6- Computer output circuit (tach output, fall detection, ECU)
- 7- Transmission (Gear position sensor)
- 8- Transmission
- 9- Transmission
Part One of the OBD-II EFI Trouble Codes
The first part of the code is important because a single fault can create an OBD-II generic code and manufacturer specific code. One example would be the fault codes for a poorly connected injector on the number one cylinder of a Triumph Rocket III. It will produce OBD-II generic code P0201 (Inj. 1 circuit) and Triumph specific code (P1201).
Last Two Digits
The last two digits of the OBD-II EFI trouble code indicate the part that is responsible for generating the fault code. If it is only one part generating the code, replace it. If there are multiple parts generating the codes read my other blog before replacing any sensors, especially if they are P01xx and P11xx codes.
Chassis codes
The next set of codes to discuss are the Chassis codes. On motorcycles these are generated by the ABS braking system. For Triumph and most motorcycle brands these are manufacturer specific codes in the C16xx range. The most common source of these fault codes are dirty or damaged sensors or connectors. Multiple C16xx range fault codes can be caused by bad grounds or damaged wiring, so the same basic principle applies when diagnosing ABS problems.
Network Codes
The last set of OBD-II EFI trouble codes are the network codes. The way the U codes apply to our beloved motorcycles are related to the dreaded CANBUS system. On a motorcycle it is the communications network between the electronic dash and ECU computers. Explaining and diagnosing this system can be found in our blog post: Electronic Fuel Injection EFI Diagnostics.
Frequently Asked Questions
What is OBD-II on a motorcycle?
OBD-II is the second generation of on-board diagnostics. When your fuel injection system detects a fault, it stores a diagnostic trouble code (DTC) that points you in the right direction. In the US, OBD-II has been required on all passenger cars and trucks since the 1996 model year (California Air Resources Board). Motorcycles use the same code format. In Europe, the Euro 5+ standard made full OBD II monitoring mandatory on new motorcycles from 2024–2025 (Bennetts BikeSocial).
How many OBD-II trouble codes are there?
There are more than 5,000 OBD-II codes, and some of them are manufacturer-specific. A generic scanner may not show manufacturer-specific codes, so a brand-specific diagnostic tool can show faults a generic one misses. Access to those tools and codes is one reason the Right to Repair movement matters for independent shops and home mechanics.
What do the letters P, C, B and U mean in a trouble code?
P (Powertrain): engine and fuel injection codes, the most common on motorcycles
C (Chassis): ABS braking system codes on motorcycles
B (Body): no motorcycle ECU Mike has been factory-certified to service produces body codes
U (Network communication): CANbus communication between the electronic dash and the ECU
What is the difference between a P0 and a P1 trouble code?
The second character tells you who defined the code. A P0xxx code is a generic OBD-II code that means the same thing on any vehicle. A P1xxx code is manufacturer-specific. For example, P1201 (injector 1 open/short to ground) is specific to Triumph.
What does the third digit of an OBD-II code mean?
The third digit shows which part of the EFI system set the code:
0: fuel and air metering (oxygen sensor heater)
1: fuel and air metering (MAP and IAT sensors)
2: injector circuit (injector malfunctions)
3: ignition system (misfires, etc.)
4: auxiliary emissions controls (purge canister, air injection, etc.)
5: vehicle speed control and idle speed control
6: computer output circuits (tach output, fall detection, ECU)
7–9: transmission (including the gear position sensor)
Why did my motorcycle set both a generic and a Triumph-specific code for one problem?
A single fault can set both a generic OBD-II code and a manufacturer-specific code. For example, a poorly connected injector on cylinder 1 of a Triumph Rocket III sets generic code P0201 (injector 1 circuit) and Triumph code P1201. Both point to the same problem, so fix the one fault instead of chasing two. To confirm your exact model and engine before ordering parts, use the USA vehicle identification number explanation.
What do the last two digits of an OBD-II trouble code mean?
The last two digits identify the specific part responsible for the code. If only one part is setting a code, replace it, but check its connector and terminals first. If several parts are setting codes, especially P01xx and P11xx codes, read Electronic Fuel Injection Diagnostics before you replace any sensors. Multiple codes are often caused by a single bad connection or ground.
Should I replace a sensor as soon as it sets a trouble code?
Not always. If just one sensor is setting a code, replacing it should fix the problem. Multiple sensor codes are often caused by wiring, connectors or a bad ground, and coolant temperature and MAP sensors are notorious for setting several codes at once. Check the wiring before buying parts. Testers and meters are in Electrical Tools.
What are C16xx codes on a motorcycle?
On motorcycles, chassis (C) codes come from the ABS braking system. For Triumph and most other motorcycle brands, these are manufacturer-specific codes in the C16xx range. The most common causes are dirty or damaged wheel speed sensors or connectors. Multiple C16xx codes can come from bad grounds or damaged wiring, the same as with EFI codes. For brake parts, see Brakes.
What do U codes mean on a motorcycle?
U codes are network communication codes. On a motorcycle, they relate to the CANbus system, the communications network between the electronic dash and the ECU. A U code means those modules aren’t communicating properly. Diagnosing CANbus problems is covered in Electronic Fuel Injection Diagnostics.
Can a generic OBD-II scanner read Triumph trouble codes?
A generic scanner can read standard P0xxx codes, but it may not show manufacturer-specific codes like Triumph’s P1xxx or C16xx ABS codes. For those, you need a scanner or software that supports Triumph. For a list of what each generic code means, see the OBD-II code categories on Wikipedia.
Where can I get help diagnosing Triumph EFI and ABS codes?
Start with Electronic Fuel Injection Diagnostics, which covers low fuel pressure, TPS testing, bad grounds and multiple codes. For sensors, wiring and connectors, browse Electrical and Ignition. If you’re still stuck, contact British Iron with your codes and VIN.



