OBD-II Architecture and DTC Classification
On-Board Diagnostics II (OBD-II) is the standardized vehicle diagnostic protocol mandated in the United States for all vehicles manufactured from 1996 onward and adopted globally by most manufacturers. The system continuously monitors hundreds of engine, transmission, and emissions-related parameters through a network of sensors. When a monitored value falls outside its specified range for a defined period, the ECU (Engine Control Unit) stores a Diagnostic Trouble Code (DTC) and in most cases illuminates the Malfunction Indicator Lamp (MIL, commonly called the check engine light). DTCs are classified by status. A pending code (also called a maturing code) means the fault was detected during one drive cycle but has not yet been confirmed β the ECU requires the fault to reoccur during a second full drive cycle before setting a confirmed code. This prevents intermittent glitches from triggering the MIL. A confirmed code has been detected on multiple drive cycles; the MIL is illuminated. A permanent code cannot be cleared by a scan tool β it remains stored until the vehicle's own monitor runs and passes a self-test on the formerly faulting system. Permanent codes were introduced with OBD-II enhancements to prevent the practice of clearing codes before an emissions inspection. DTC alphanumeric structure: the first character identifies the system (P=Powertrain, B=Body, C=Chassis, U=Network); the second digit indicates whether the code is generic (0) or manufacturer-specific (1, 2, or 3); the third digit identifies the subsystem (1=fuel/air metering, 2=fuel/air metering injector, 3=ignition, 4=auxiliary emissions, 5=vehicle speed/idle, 6=computer output circuit, 7/8/9=transmission); the last two digits are the specific fault number. Example: P0301 = Powertrain, generic, ignition system (3), cylinder 1 misfire detected.