Unified Diagnostic Services
Unified Diagnostic Services is a diagnostic communication protocol used by electronic control units in automotive electronics. UDS is defined by ISO 14229 and evolved from ISO 14230, which is now largely obsolete. UDS specifies functionality at the session, presentation, and application layers of the OSI model. Because of this, it can operate on different physical and data link layers such as CAN, LIN, Ethernet, FlexRay, and K-Line. In practice, UDS is most commonly used over CAN via Diagnostic over CAN, defined in ISO 15765.
The term "unified" refers to the fact that UDS is an international standard rather than a manufacturer-specific protocol. Today, nearly all Tier 1 suppliers implement UDS in ECUs developed for automotive original equipment manufacturers (OEMs). UDS is also integrated into larger software architectures, including AUTOSAR.
Modern vehicles have a diagnostic interface for on-board diagnostics, which makes it possible to connect a computer or diagnostics tool, which is referred to as tester, to the communication system of the vehicle. Thus, UDS requests can be sent to the controllers which provide responses. This makes it possible to interrogate the fault memory of the individual control units, to update them with new firmware, have low-level interaction with their hardware, or to make use of special functions to attempt to understand the environment and operating conditions of an ECU to be able to diagnose faulty or otherwise undesirable behavior.
Services
SIDDiagnostic Message
There are two types of diagnostic messages transmitted using UDS protocol:- Request
- Response
Request Message
Request messages are transmitted by a Client towards one or more Servers.Service Identifier is the first byte in each request message.
Response Message
Response messages are transmitted by Servers to a Client.The first byte in the response message is usually Response Service Identifier value.
Positive Response Message
Format of each positive response message is specific for the diagnostic service it relates to.Negative Response Message
Negative Response Codes
Negative Response Codes carry the information for request message rejection.| Value | Name |
| 0x10 | generalReject |
| 0x11 | serviceNotSupported |
| 0x12 | SubFunctionNotSupported |
| 0x13 | incorrectMessageLengthOrInvalidFormat |
| 0x14 | responseTooLong |
| 0x21 | busyRepeatRequest |
| 0x22 | conditionsNotCorrect |
| 0x24 | requestSequenceError |
| 0x25 | noResponseFromSubnetComponent |
| 0x26 | FailurePreventsExecutionOfRequestedAction |
| 0x31 | requestOutOfRange |
| 0x33 | securityAccessDenied |
| 0x34 | authenticationRequired |
| 0x35 | invalidKey |
| 0x36 | exceedNumberOfAttempts |
| 0x37 | requiredTimeDelayNotExpired |
| 0x38 | secureDataTransmissionRequired |
| 0x39 | secureDataTransmissionNotAllowed |
| 0x3A | secureDataVerificationFailed |
| 0x50 | Certificate verification failed, Invalid Time Period |
| 0x51 | Certificate verification failed, Invalid Signature |
| 0x52 | Certificate verification failed, Invalid Chain of Trust |
| 0x53 | Certificate verification failed, Invalid Type |
| 0x54 | Certificate verification failed, Invalid Format |
| 0x55 | Certificate verification failed, Invalid Content |
| 0x56 | Certificate verification failed, Invalid Scope |
| 0x57 | Certificate verification failed, Invalid Certificate |
| 0x58 | Ownership verification failed |
| 0x59 | Challenge calculation failed |
| 0x5A | Setting Access Rights failed |
| 0x5B | Session key creation/derivation failed |
| 0x5C | Configuration data usage failed |
| 0x5D | DeAuthentication failed |
| 0x70 | uploadDownloadNotAccepted |
| 0x71 | transferDataSuspended |
| 0x72 | generalProgrammingFailure |
| 0x73 | wrongBlockSequenceCounter |
| 0x78 | requestCorrectlyReceived-ResponsePending |
| 0x7E | SubFunctionNotSupportedInActiveSession |
| 0x7F | serviceNotSupportedInActiveSession |
| 0x81 | rpmTooHigh |
| 0x82 | rpmTooLow |
| 0x83 | engineIsRunning |
| 0x84 | engineIsNotRunning |
| 0x85 | engineRunTimeTooLow |
| 0x86 | temperatureTooHigh |
| 0x87 | temperatureTooLow |
| 0x88 | vehicleSpeedTooHigh |
| 0x89 | vehicleSpeedTooLow |
| 0x8A | throttle/PedalTooHigh |
| 0x8B | throttle/PedalTooLow |
| 0x8C | transmissionRangeNotInNeutral |
| 0x8D | transmissionRangeNotInGear |
| 0x8F | brakeSwitchNotClosed |
| 0x90 | shifterLeverNotInPark |
| 0x91 | torqueConverterClutchLocked |
| 0x92 | voltageTooHigh |
| 0x93 | voltageTooLow |
| 0x94 | ResourceTemporarilyNotAvailable |