PROTOCOL · APPLICATION LAYER · 2006-present
UDS protocol
Unified Diagnostic Services (ISO 14229).
What is UDS?
UDS (Unified Diagnostic Services, ISO 14229) is the modern diagnostic application-layer protocol that replaced KWP2000 / KW1281 / K-Line proprietary variants. It defines a standardised set of service identifiers (SIDs) used by every modern ECU read, write, flash and adaptation routine. Runs over CAN (ISO 15765-4), CAN-FD, or DoIP (ISO 13400).
Key characteristics
- Standardised service IDs (SIDs) — same request format across Bosch / Siemens / Delphi.
- Session control (DiagnosticSession 0x10) gates which services are available.
- Security access (0x27) is a seed/key challenge gating write/flash operations.
- Routine control (0x31) starts ECU-side routines like checksum or memory erase.
- Request/Transfer/Exit (0x34/0x36/0x37) move flash data into ECU memory.
UDS service IDs / frame structure
| ID / Code | Name | Purpose |
|---|---|---|
0x10 | DiagnosticSessionControl | Enter Default, Extended, Programming, Safety session |
0x11 | ECUReset | Hard, key-off-on, soft, enable-rapid-power-shutdown |
0x14 | ClearDiagnosticInformation | Clear stored DTCs |
0x19 | ReadDTCInformation | Report DTCs by status mask |
0x22 | ReadDataByIdentifier | Read live or stored data by DID |
0x23 | ReadMemoryByAddress | Direct memory read (often locked) |
0x27 | SecurityAccess | Seed/key challenge — gates write/flash |
0x28 | CommunicationControl | Suppress / resume bus messages |
0x2E | WriteDataByIdentifier | Write a calibration ID |
0x2F | InputOutputControlByIdentifier | Actuator test |
0x31 | RoutineControl | Start / stop / status routine (checksum, erase) |
0x34 | RequestDownload | Begin a memory download into ECU |
0x36 | TransferData | Send a chunk of memory data |
0x37 | RequestTransferExit | End a memory transfer |
0x38 | RequestFileTransfer | File-level transfer (newer ECUs) |
0x3D | WriteMemoryByAddress | Direct memory write (often locked) |
0x3E | TesterPresent | Keep diagnostic session alive |
0x85 | ControlDTCSetting | Suppress / enable DTC storage |