The UDS diagnostic protocol — Unified Diagnostic Services, standardised in ISO 14229 — is the universal language between automotive diagnostic tools and vehicle ECUs, enabling fault code reading, ECU programming, configuration, and functional testing across the entire range of vehicle electronic systems. Unified diagnostic services replaced the fragmented, manufacturer-specific diagnostic protocols (KWP2000, ISO 9141) that complicated multi-brand workshop and development tooling, providing a single, consistent automotive diagnostics protocol applicable from the engine ECU through the body controller, ABS, airbag system, HVAC, and infotainment. Each UDS service identifier (SID) defines a specific diagnostic function — reading data, reading DTCs, flashing software, unlocking security access — and an ECU responds to each SID with either a positive response (data or acknowledgement) or a negative response code (NRC) explaining why the request was rejected. Understanding ISO 14229 diagnostics is essential for automotive engineers working in ECU development, validation, end-of-line testing, or aftermarket diagnostics tool development.
The UDS diagnostic protocol operates in sessions — modes that determine which services and UDS service identifiers are accessible. Session control is managed by SID 0x10 (DiagnosticSessionControl). The three primary sessions in unified diagnostic services:
| SID (Hex) | UDS Service Name | Automotive Diagnostics Protocol Use |
|---|---|---|
| 0x10 | DiagnosticSessionControl | Switch between default, extended, programming sessions |
| 0x11 | ECUReset | Hard reset, soft reset, or key-off reset of target ECU |
| 0x14 | ClearDiagnosticInformation | Clear all or group-specific DTCs from ECU fault memory |
| 0x19 | ReadDTCInformation | Read active, confirmed, pending, and historic fault codes |
| 0x22 | ReadDataByIdentifier | Read ECU data — software version, VIN, calibration ID, live data |
| 0x27 | SecurityAccess | Seed-key authentication to unlock restricted UDS service identifiers |
| 0x34/0x36/0x37 | Download sequence | ECU software flashing — request, transfer, exit |
| 0x3E | TesterPresent | Keep diagnostic session alive during long operations |
UDS diagnostic protocol messages are transported over CAN bus using ISO 15765-2 (ISO-TP) — a transport protocol that segments unified diagnostic services messages longer than 8 bytes into multiple CAN frames. Single-frame UDS messages (≤7 bytes payload) fit in one CAN frame; multi-frame messages (common for ECU programming data transfers and long DTC lists) use a first frame, consecutive frames, and flow control frames defined by ISO-TP. The automotive diagnostics protocol addresses ECUs using CAN IDs — typically a request ID (e.g., 0x7DF broadcast or 0x7E0–0x7E7 for specific ECUs) and a response ID (0x7E8–0x7EF). On modern vehicles with Automotive Ethernet, ISO 14229 diagnostics uses DoIP (Diagnostics over IP, ISO 13400) as the transport layer instead of CAN ISO-TP.
Precisol Automation's CAN to USB Adapter provides the physical CAN bus interface for UDS diagnostic protocol communication — connecting a test PC to the vehicle CAN bus via OBD-II or direct harness connector, supporting all standard automotive diagnostics protocol session types and UDS service identifiers at full CAN bus speed. The CAN Data Logger captures complete ISO 14229 diagnostics sessions for offline analysis and traceability in ECU validation and end-of-line testing applications.
See UDS diagnostic protocol tools in action in our automotive ECU software validation case study, or explore how Precisol enables ECU simulator applications with full unified diagnostic services support.
The UDS diagnostic protocol (ISO 14229) is the standard automotive diagnostics protocol for ECU communication — covering fault code reading, software flashing, configuration, and functional testing. Unified diagnostic services define a set of service identifiers that diagnostic tools use over CAN bus or Ethernet to access all vehicle ECU functions in development, EOL testing, and workshop diagnostics.
The most used UDS service identifiers are: 0x10 (session control), 0x19 (read DTCs), 0x22 (read data by identifier), 0x14 (clear DTCs), 0x27 (security access), 0x2E (write data by identifier), and the 0x34/0x36/0x37 ECU software flashing sequence. These cover the majority of automotive diagnostics protocol functions used in development, validation, and production testing under ISO 14229 diagnostics.
OBD-II provides standardised, publicly accessible emissions diagnostics only. The UDS diagnostic protocol provides full ECU access — proprietary data identifiers, security-locked programming, actuator tests, and all non-emissions systems. Workshop and development diagnostics use unified diagnostic services; roadside emissions compliance uses OBD-II. ISO 14229 diagnostics is significantly more capable but requires authentication for advanced functions.