What Are Enhanced OBD2 Codes and How Do They Differ from Generic Codes
By Kamil Siegień / October 12, 2026
When an OBD2 scanner reads codes, it retrieves two distinct types: generic codes that follow the SAE J2012 standard and appear identically across all makes, and enhanced (manufacturer-specific) codes that use manufacturer-defined numbering and descriptions accessible only through scanners with the appropriate make-specific database. Generic codes cover emissions-related powertrain faults. Enhanced codes cover everything the manufacturer chose to monitor beyond the emissions minimum requirement, including transmission-specific faults, body and chassis faults, and powertrain faults detected by manufacturer logic that the emissions standard does not require to be reported. A vehicle producing a P1XXX or a B/C/U code is producing an enhanced code that a basic code reader may display as an unknown or unknown manufacturer code without a meaningful description.
I explain this in more detail in my what obd2 scanner cannot detect.
For scanner recommendations to perform this type of work, see my scanner comparison guide.
About the author: Hello! I’m Kamil Siegień, founder of OBD2 Scout. My diagnostic experience started with an engine rebuild on a 2014 Skoda Superb 1.8 TSI, where tuning from 160 to 222 hp required mastering live data and ECU behavior that basic code readers cannot handle. I am a former BMW and MINI employee and regularly use diagnostic scanners on my own Audi A4 2.0 TFSI.
This guide covers the DTC numbering structure and what each character position means, the difference between generic P0 codes and manufacturer-specific P1/P3 codes, how B, C, and U codes differ from P codes, what a scanner needs to display enhanced code descriptions, and how to approach diagnosis when a code has no description on your current scanner.
If you prefer a wireless setup, my top-rated Bluetooth adapters covers the best options.
DTC Numbering Structure
Every diagnostic trouble code follows a five-character format. The first character is a letter that identifies the system: P for powertrain (engine and transmission), B for body, C for chassis, and U for network/communication. The second character is a digit that indicates whether the code is generic or manufacturer-specific: 0 means generic (SAE-defined), 1 or 3 means manufacturer-specific, and 2 is shared between SAE-reserved and manufacturer use depending on the P or B/C/U prefix.
iPhone users looking for a compatible scanner can check my top iOS diagnostic tools.
The third character identifies the subsystem within the system category. For P codes: 0 through 4 broadly correspond to fuel/air metering (0), fuel/air metering injection (1), ignition (3), auxiliary emissions (4), computer and output circuit (5), transmission (7), and others. The fourth and fifth characters are a two-digit number identifying the specific fault condition within the subsystem.
I cover this capability in more detail in my BlueDriver diagnostic coverage.
So a code P0300 is: P (powertrain), 0 (generic/SAE-defined), 3 (ignition system subsystem), 00 (random multiple cylinder misfire). A code P1300 is: P (powertrain), 1 (manufacturer-specific), 3 (ignition subsystem), 00 (a manufacturer-defined fault in the ignition area). The P1300 code description varies by manufacturer: Toyota uses P1300 for the igniter circuit fault, while a different manufacturer may assign P1300 to a completely different ignition system fault.
My my guide on diagnose misfires covers this step by step.
Audi owners looking for the right scanner should check my top Audi scanner picks.
Generic P0 Codes

Generic P0 codes are standardized by SAE J2012. Every scanner that supports standard OBD2 Mode 03 displays P0 codes with the same description for the same code number, regardless of the vehicle make. P0171 always means “System Too Lean Bank 1.” P0420 always means “Catalyst System Efficiency Below Threshold Bank 1.” P0300 always means “Random/Multiple Cylinder Misfire Detected.” The description comes from the universal SAE code definition, not from a manufacturer-specific database.
Honda owners looking for the right scanner should check my top Honda scanner picks.
Generic P0 codes cover the emission-relevant subsystems that the OBD2 standard requires to be monitored: oxygen sensor performance and circuit faults, catalytic converter efficiency, evaporative emission system faults, exhaust gas recirculation faults, fuel system trim faults, misfire detection, and several other emission-affecting systems. If a fault affects vehicle emissions, there is typically a generic P0 code defined for it. If the fault does not directly affect emissions, the manufacturer uses P1/P2/P3 space or B/C/U codes to report it.
I cover this capability in more detail in my Innova 3100RS breakdown.
Manufacturer-Specific P1 and P3 Codes

P1 codes are manufacturer-defined and their descriptions are specific to the make that assigned the code. The same P1 code number means different things on different vehicles. P1000 on a Ford indicates that not all OBD2 monitors have completed (a readiness code, not a fault). P1000 on a Honda indicates that the on-board refueling vapor recovery system has a fault. P1000 on a BMW indicates something entirely different from either of those.
I explain this in more detail in my my guide on use an.
A scanner that shows a P1 code with “Unknown Code” or “Manufacturer Specific” and no further description does not have the manufacturer’s code definition in its database for that specific code. This is common on budget scanners that have limited manufacturer database coverage. The code was transmitted correctly by the vehicle, and the number is valid, but without the database entry associating that number with its description for that make, the scanner cannot display a meaningful description. Resolving this requires either a scanner with better coverage for that make, a manufacturer-specific database lookup, or accessing the manufacturer’s service documentation for that code number.
Toyota owners looking for the right scanner should check my top Toyota scanner picks.
P2 codes are a partially shared space: some P2 codes are SAE-defined (following the same universal standard as P0 codes), and others are manufacturer-specific. Check the SAE J2012 document or a comprehensive database to determine whether a specific P2 code is standardized or manufacturer-specific. P3 codes are manufacturer-specific by definition, similar to P1 codes.
BMW owners looking for the right scanner should check my top BMW scanner picks.
B, C, and U Codes

B codes (body) cover faults in body system modules: the BCM (body control module), airbag/SRS module, instrument cluster, HVAC, power windows, door locks, and similar comfort and convenience systems. B0 codes are SAE-defined (a limited standardized set for airbag deployment and restraint system faults). B1 through B3 codes are manufacturer-specific. Accessing B codes requires a scanner with enhanced body system coverage for the specific make, because the BCM and airbag modules are not part of the standardized OBD2 emissions interface.
My airbag srs codes explained covers this step by step.
Ford owners looking for the right scanner should check my scanner recommendations for Ford owners.
C codes (chassis) cover ABS, traction control, ESC, suspension, and steering systems. C0 codes include a standardized set for ABS and stability control faults. C1 and higher are manufacturer-specific. Chassis codes are accessible through enhanced scanner coverage for the ABS and chassis modules, which are not part of the standard OBD2 emissions interface.
Chevy owners looking for the right scanner should check my top Chevy scanner picks.
U codes (network/communication) cover module communication faults on the CAN bus and other vehicle networks. U0 codes are standardized: U0001 (high-speed CAN fault), U0100 (lost communication with ECM), and the full U01xx series for specific module communication losses are all standardized. U1 through U3 codes are manufacturer-specific and cover communication faults that the manufacturer defined beyond the standardized set. U codes appear in virtually every module because the network communication protocol is common to all modules on the bus.
My a full system scan obd2 scanner explained covers this step by step.
Volvo owners looking for the right scanner should check my top-rated scanners for Volvo.
What a Scanner Needs to Display Enhanced Code Descriptions
Displaying meaningful descriptions for enhanced codes requires the scanner to have the manufacturer’s code-to-description database for each make. This database maps each manufacturer-specific code number (P1xxx, B codes, C codes, U1xxx) to the text description that makes it useful for diagnosis. Scanner manufacturers build this database by licensing manufacturer information, reverse engineering from service documentation, or through access to manufacturer training materials.
If you are on a tight budget, my top entry-level code readers covers the top value picks.
The coverage depth varies by scanner. A scanner might have excellent coverage for Toyota enhanced P1 codes but limited coverage for Toyota B codes, or strong Ford coverage but incomplete BMW coverage. When evaluating a scanner for a specific make’s enhanced codes, check not just whether the scanner lists that make in its compatibility, but whether it specifically mentions enhanced code coverage for the systems you need: transmission codes, body codes, and chassis codes for that make.
Honda CR-V owners can find the right scanner in my top CR-V diagnostic tools.
How Major Manufacturers Use the P1 Code Space
Different manufacturers assign the P1 range differently based on their diagnostic philosophy. Ford uses P1 codes extensively for system-specific faults that the OBD2 generic range does not cover: P1000 (OBD readiness check incomplete), P1100 (MAF sensor intermittent), P1309 (misfire monitor fault) are examples of Ford’s P1 usage. Ford’s P1 codes often overlap with the corresponding generic P0 system in a more specific way, adding detail beyond what the generic code captures. This makes Ford P1 codes especially useful for diagnosis when the corresponding P0 code is ambiguous.
I explain this in more detail in my how to read obd2 trouble codes.
GM uses P1 codes differently: many GM P1 codes cover proprietary systems unique to GM architectures, such as the VTD (Vehicle Theft Deterrent) system, the PCM’s internal self-diagnostics, and specific fuel system faults related to the Flex Fuel system or the active fuel management (cylinder deactivation) system. GM’s P1XXX range also includes codes for the Enhanced EVAP system, which goes beyond standard OBD2 EVAP requirements.
Ford F-150 owners can find the right scanner in my best scanners for the F-150.
Toyota P1 codes frequently cover the ETCS (Electronic Throttle Control System) at a more granular level than the generic P0 range: P1120 (accelerator pedal position sensor circuit), P1121 (pedal sensor range), and related codes appear in Toyota diagnostics as P1 codes because Toyota’s throttle system has additional monitoring beyond the generic OBD2 throttle position codes. Similarly, Toyota’s Variable Valve Timing system (VVT-i) faults appear under P1 codes not covered by the generic standard.
I explain this in more detail in my my guide on check used car.
BMW and VW Group vehicles are particularly dependent on manufacturer-specific code coverage because they use P1 codes for nearly every system-specific fault. Basic scanners that can only show generic P0 codes may miss the majority of fault codes stored on these vehicles in a typical service scenario. A BMW diagnostic session with only generic P0 coverage can miss P1 codes in the ECM, B/C codes in the body modules, and all the proprietary codes in the DME, EGS, and other BMW-specific modules that account for the majority of fault codes stored on these vehicles.
My obd2 scanner different codes than mechanic covers this step by step.
Audi Q8 owners can find the right scanner in my Q8-compatible diagnostic tools.
FAQs
Why does my scanner show “manufacturer specific” with no description?
The scanner received the code number from the vehicle but does not have the definition for that specific code in its database for that make. The code itself is valid: the vehicle stored it for a real reason. Resolving this requires a scanner with better coverage for that make, a web search for the specific code number plus the vehicle make, or accessing the manufacturer’s service documentation. Many P1 codes have been publicly documented through forums, professional service subscriptions, or manufacturer TSBs (Technical Service Bulletins) that reference specific codes.
Are P0 codes more serious than P1 codes?
Not necessarily. The P0 vs P1 distinction reflects standardization, not severity. A P0 code may be a minor oxygen sensor efficiency note or a severe misfire that damages the catalytic converter. A P1 code may be a minor informational status or a critical transmission fault. The code prefix indicates its origin (generic standard vs manufacturer-specific), not its impact on vehicle operation. The description and the symptoms the vehicle shows determine the severity.
Can I clear B, C, and U codes with a basic OBD2 scanner?
Standard Mode 04 (clear codes) clears the OBD2 emissions module codes and MIL. It does not clear codes stored in body, chassis, and communication modules, because these modules are not part of the standard OBD2 interface. Clearing codes from the ABS module, airbag module, BCM, or other enhanced modules requires either a scanner with enhanced coverage that can send a clear command to each module individually, or a full system scan and clear function that clears all accessible modules. Attempting to clear an airbag code without resolving the underlying fault means the code immediately returns when the ignition cycles.
Do manufacturers have to tell me what their P1 codes mean?
Yes, in the context of right-to-repair. US federal regulations and many state-level right-to-repair laws require manufacturers to make their diagnostic information available to independent repair shops and vehicle owners on commercially reasonable terms. This includes manufacturer-specific DTC descriptions, service procedures, and diagnostic data. Mitchell1, AllData, and manufacturer service subscription portals (Ford ETIS, GM SIS, etc.) provide access to this information for a subscription fee. The information is not automatically embedded in every scanner’s database, but it is available through these channels.

