Interactive UDS Command Cheatsheet & Negative Response Codes (NRC) Reference

The authoritative engineering desk reference for automotive diagnostic engineers, embedded firmware developers, and calibration specialists.

Complete ISO 14229 UDS commands and service identifier overview

Unified Diagnostic Services (ISO 14229-1) standardizes client-server diagnostic communication across vehicle electronic control units (ECUs). This cheatsheet provides rapid lookup across all 19 core UDS commands: DiagnosticSessionControl (SID 0x10), ECUReset (SID 0x11), ClearDiagnosticInformation (SID 0x14), ReadDTCInformation (SID 0x19), ReadDataByIdentifier (SID 0x22), ReadMemoryByAddress (SID 0x23), SecurityAccess (SID 0x27), CommunicationControl (SID 0x28), ReadDataByPeriodicIdentifier (SID 0x2A), DynamicallyDefineDataIdentifier (SID 0x2C), WriteDataByIdentifier (SID 0x2E), InputOutputControlByIdentifier (SID 0x2F), RoutineControl (SID 0x31), RequestDownload (SID 0x34), RequestUpload (SID 0x35), TransferData (SID 0x36), RequestTransferExit (SID 0x37), WriteMemoryByAddress (SID 0x3D), TesterPresent (SID 0x3E), AccessTimingParameter (SID 0x83), and ControlDTCSetting (SID 0x85).

Standardized positive response offset (+0x40) and wire framing

Under ISO 14229 rules, a successful diagnostic command yields a positive response whose initial Service Identifier equals the request SID plus 0x40 hexadecimal offset. For example, SID 0x22 yields response 0x62; SID 0x10 yields 0x50; SID 0x27 yields 0x67; SID 0x31 yields 0x71; and SID 0x36 yields 0x76. Sub-functions, parameter identifiers (DIDs), and payload records are appended sequentially. If the sub-function byte sets the Suppress Positive Response Message (SPRM) indication bit (Bit 7 = 1), the ECU silently performs the operation without bus reply.

Comprehensive UDS NRC list and negative response code troubleshooting

When an ECU cannot execute a command, it returns a 3-byte Negative Response: 0x7F followed by the rejected SID and a 1-byte Negative Response Code (NRC). Our UDS NRC list catalogs all standardized error conditions: 0x10 generalReject, 0x11 serviceNotSupported, 0x12 subFunctionNotSupported, 0x13 incorrectMessageLengthOrInvalidFormat, 0x14 responseTooLong, 0x21 busyRepeatRequest, 0x22 conditionsNotCorrect (e.g. ignition KL15 OFF, vehicle speed > 0, engine running), 0x24 requestSequenceError (e.g. SendKey before RequestSeed), 0x25 noResponseFromSubnetComponent, 0x31 requestOutOfRange (invalid DID or memory address), 0x33 securityAccessDenied, 0x35 invalidKey, 0x36 exceededNumberOfAttempts (security lockout), 0x37 requiredTimeDelayNotExpired (10-minute penalty delay active), 0x72 generalProgrammingFailure, 0x73 wrongBlockSequenceCounter, 0x78 requestCorrectlyReceived-ResponsePending (extends deadline to P2*Server), 0x7E subFunctionNotSupportedInActiveSession, and 0x7F serviceNotSupportedInActiveSession.

Addressing modes, session state machines, and security prerequisites

UDS commands differ fundamentally by addressing and state requirements. Functional addressing (CAN ID 0x7DF) broadcasts queries across all ECUs simultaneously and is supported for read operations (0x19, 0x22), fault clearing (0x14), and keep-alive heartbeats (0x3E). Stateful, safety-critical services such as SecurityAccess (0x27), Memory Writes (0x3D, 0x2E), Actuator Overrides (0x2F), and ECU Flashing (0x34, 0x36) strictly require 1-to-1 Physical Addressing (e.g. 0x7E0 to 0x7E8) and elevation to Extended (0x03) or Programming (0x02) sessions.

Skip to main content