ISO 14229
Services
Service ID (hex) | Service | Description |
---|---|---|
0x10 | Diagnostic Session Control | |
0x11 | ECU Reset | |
0x14 | Clear Diagnostic Information | |
0x19 | Read DTC Information | |
0x22 | Read Data By Identifier | |
0x23 | Read Memory By Address | |
0x27 | Security Access | |
0x28 | Communication Control | |
0x2A | Read Data by Periodic ID | |
0x2E | Write Data By Identifier | |
0x2F | Input Output Control By Identifier | |
0x31 | Routine Control | |
0x34 | Request Download | |
0x35 | Request Upload | |
0x36 | Transfer Data | |
0x37 | Transfer Exit | |
0x3D | Write Memory By Address | |
0x3E | Tester Present | |
0x85 | Control DTC Setting |
Negative Response Code
Value | Name | Description |
---|---|---|
0x00 | Positive response | This response code shall not be used in a negative response message. This positiveResponse parameter value is reserved for server internal implementation. |
0x01 - 0x0F | ISOSAEReserved | This range of values is reserved by this document for future definition. |
0x10 | General Reject | This response code indicates that the requested action has been rejected by the server. The generalReject response code shall only be implemented in the server if none of the negative response codes defined in this document meet the needs of the implementation. At no means shall this response code be a general replacement for other response codes defined. |
0x11 | Service Not Supported | This response code indicates that the requested action will not be taken because the server does not support the requested service. The server shall send this response code in case the client has sent a request message with a service identifier, which is either unknown or not supported by the server. Therefore this negative response code is not shown in the list of negative response codes to be supported for a diagnostic service, because this negative response code is not applicable for supported services. |
0x12 | Sub-Function Not Supported | This response code indicates that the requested action will not be taken because the server does not support the service specific parameters of the request message. The server shall send this response code in case the client has sent a request message with a known and supported service identifier but with "sub function“ which is either unknown or not supported. |
0x13 | Incorrect Message Length or Invalid Format | This response code indicates that the requested action will not be taken because the length of the received request message does not match the prescribed length for the specified service or the format of the parameters do not match the prescribed format for the specified service. |
0x14 | Response Too Long | This response code shall be reported by the server if the response to be generated exceeds the maximum number of bytes available by the underlying network layer. |
0x15 - 0x20 | ISOSAEReserved | This range of values is reserved for future definition. |
0x21 | Busy Repeat Request | This response code indicates that the server is temporarily too busy to perform the requested operation. In this circumstance the client shall perform repetition of the "identical request message" or "another request message". The repetition of the request shall be delayed by a time specified in the respective implementation documents. Example: In a multi-client environment the diagnostic request of one client might be blocked temporarily by a NRC $21 while a different client finishes a diagnostic task.NOTE If the server is able to perform the diagnostic task but needs additional time to finish the task and prepare the response, the NRC 0x78 shall be used instead of NRC 0x21.This response code is in general supported by each diagnostic service, as not otherwise stated in the data link specific implementation document, therefore it is not listed in the list of applicable response codes of the diagnostic services. |
0x22 | Conditions Not Correct | This response code indicates that the requested action will not be taken because the server prerequisite conditions are not met. |
0x23 | ISOSAEReserved | This range of values is reserved for future definition. |
0x24 | Request Sequence Error | This response code indicates that the requested action will not be taken because the server expects a different sequence of request messages or message as sent by the client. This may occur when sequence sensitive requests are issued in the wrong order. Example: A successful SecurityAccess service specifies a sequence of requestSeed and sendKey as sub-functions in the request messages. If the sequence is sent different by the client the server shall send a negative response message with the negative response code 0x24 (requestSequenceError). |
0x25 | No Response from Subnet Component | No response was received from a subnet component. |
0x26 | Failure Prevents Execution of Requested Action | A failure prevents the execution of the requested action. |
0x31 | Request Out of Range | This response code indicates that the requested action will not be taken because the server has detected that the request message contains a parameter which attempts to substitute a value beyond its range of authority (e.g. attempting to substitute a data byte of 111 when the data is only defined to 100), or which attempts to access a dataIdentifier/routineIdentifer that is not supported or not supported in active session. This response code shall be implemented for all services, which allow the client to read data, write data or adjust functions by data in the server. |
0x32 | ISOSAEReserved | This range of values is reserved for future definition. |
0x33 | Security Access Denied | This response code indicates that the requested action will not be taken because the server's security strategy has not been satisfied by the client. The server shall send this response code if one of the following cases occur:
|
0x34 | ISOSAEReserved | This range of values is reserved for future definition. |
0x35 | Invalid Key | This response code indicates that the server has not given security access because the key sent by the client did not match with the key in the server's memory. This counts as an attempt to gain security. The server shall remain locked and increment its internal securityAccessFailed counter. |
0x36 | Exceed Number of Attempts | This response code indicates that the requested action will not be taken because the client has unsuccessfully attempted to gain security access more times than the server's security strategy will allow. |
0x37 | Required Time Delay Not Expired | This response code indicates that the requested action will not be taken because the client's latest attempt to gain security access was initiated before the server's required timeout period had elapsed. |
0x3A | Request Download Not Accepted | The request to download data is not accepted by the server. |
0x3B | Improper Download Type | The download type requested is not proper. |
0x3C | CAN Identifier Collision | A collision occurred with the CAN identifier. |
0x3D | Invalid Data Transfer | The data transfer requested is invalid. |
0x43 | General Programming Failure | A general failure occurred during programming. |
0x44 | Wrong Block Sequence Counter | The block sequence counter is incorrect. |
0x45 | Illegal Address in Block Transfer | An illegal address was specified in the block transfer. |
0x71 | Transfer Suspended | The transfer of data has been suspended. |
0x72 | Transfer Aborted | The transfer of data has been aborted. |
0x73 | Transfer Cancelled | The transfer of data has been cancelled. |
0x7E | Sub-Function Not Supported in Active Session | This response code indicates that the requested action will not be taken because the server does not support the requested sub-function in the session currently active. Within the programmingSession negative response code 0x12 (subFunctionNotSupported) may optionally be reported instead of negative response code 0x7F (subFunctionNotSupportedInActiveSession). This response code shall only be used when the requested sub-function is known to be supported in another session, otherwise response code 0x12 (subFunctionNotSupported) shall be used. This response code shall be supported by each diagnostic service with a sub-function parameter, if not otherwise stated in the data link specific implementation document, therefore it is not listed in the list of applicable response codes of the diagnostic services. |
0x7F | Service Not Supported in Active Session | This response code indicates that the requested action will not be taken because the server does not support the requested service in the session currently active. This response code shall only be used when the requested service is known to be supported in another session, otherwise response code 0x11 (serviceNotSupported) shall be used. This response code is in general supported by each diagnostic service, as not otherwise stated in the data link specific implementation document, therefore it is not listed in the list of applicable response codes of the diagnostic services. |
0x81 | RpmTooHigh | This response code indicates that the requested action will not be taken because the server prerequisite condition for RPM is not met (current RPM is above a pre-programmed maximum threshold). |
Diagnostic Session Control (0x10)
The Diagnostic Session Control service (0x10) facilitates the management of diagnostic sessions between a control device (tester) and a vehicle's control module or control system. This service is essential within diagnostic communication standards such as ISO 14229 (Unified Diagnostic Services, UDS).
Common subfunctions:
-
Default Session (0x01): This default session is used for routine operations and general access to the diagnostic system without specific restrictions.
-
Programming Session (0x02): This session is used to activate programming modes, enabling access to programming and software update functions.
-
Extended Diagnostic Session (0x03): This extended session provides advanced diagnostic capabilities that may not be available in standard sessions, such as access to more detailed parameters or advanced diagnostic functions.
-
System Safety Diagnostic Session (0x04): This session is dedicated to diagnosing safety systems, ensuring their proper operation and diagnostics.
Request example:
-------------------------------------> PCI (CAN-TP Single frame).
/ --------------------------------> SID (Service Identifier)
| / ---------------------------> SBF (Sub Function) -> Default Session (0x01)
| | / ----------------------> Unused
| | | / -----------------> Unused
| | | | / ------------> Unused
| | | | | / -------> Unused
| | | | | | / --> Unused
| | | | | | | /
| | | | | | | |
0x02 0x10 0x01 0x00 0x00 0x00 0x00 0x00
Positive Response
-------------------------------------> PCI (CAN-TP Single frame).
/ --------------------------------> SID (Request SID + 0x40)
| / ---------------------------> SFID (Sub Function ID) -> Default Session (0x01)
| | / ----------------------> P2_0 Server timing parameter MSB
| | | / -----------------> P2_0 Server timing parameter LSB
| | | | / ------------> P2_1 Server timing parameter MSB
| | | | | / -------> P2_1 Server timing parameter LSB
| | | | | | / --> Unused
| | | | | | | /
| | | | | | | |
0x06 0x50 0x01 0x00 0x19 0x07 0xD0 0x00
Negative Response
-------------------------------------> PCI (CAN-TP Single frame).
/ --------------------------------> SID (Negative response)
| / ---------------------------> SID (Request SID)
| | / ----------------------> Reason (Check Negative response code)
| | | / -----------------> Unused
| | | | / ------------> Unused
| | | | | / -------> Unused
| | | | | | / --> Unused
| | | | | | | /
| | | | | | | |
0x03 0x7F 0x10 0x12 0x0 0x00 0x00 0x00
ECU Reset Service Identifier (0x11)
Request example:
-------------------------------------> PCI (CAN-TP Single frame).
/ --------------------------------> SID (Service Identifier)
| / ---------------------------> SBF (Sub Function)
| | / ----------------------> Unused
| | | / -----------------> Unused
| | | | / ------------> Unused
| | | | | / -------> Unused
| | | | | | / --> Unused
| | | | | | | /
| | | | | | | |
0x02 0x11 0xXX 0x00 0x00 0x00 0x00 0x00
Tester present (0x3E)
The purpose of this service is to indicate to a server (or servers) that a client is still connected to the vehicle. It ensures that certain diagnostic services and/or communications, previously activated, remain active. To keep one or multiple servers in a diagnostic session other than the default Session. ServicesKeeps communication is alive: avoid communication timeout. There is no Subfunction parameter like other services.
Request example:
-------------------------------------> PCI (CAN-TP).
/ --------------------------------> SID (Service Identifier)
| / ---------------------------> SBF (Sub Function) Can be anything
| | / ----------------------> Unused
| | | / -----------------> Unused
| | | | / ------------> Unused
| | | | | / -------> Unused
| | | | | | / --> Unused
| | | | | | | /
| | | | | | | |
0x02 0x3E 0x00 0x00 0x00 0x00 0x00 0x00
Positive Response
-------------------------------------> PCI (CAN-TP Single frame).
/ --------------------------------> SID (Request SID + 0x40)
| / ---------------------------> SFID (Sub Function ID - Usually 0x00)
| | / ----------------------> Unused
| | | / -----------------> Unused
| | | | / ------------> Unused
| | | | | / -------> Unused
| | | | | | / --> Unused
| | | | | | | /
| | | | | | | |
0x02 0x7E 0x00 0x00 0x00 0x00 0x00 0x00