Skip to content

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:
  • the test conditions of the server are not met.
  • the required message sequence e.g. DiagnosticSessionControl, securityAccess is not met.
  • the client has sent a request message which requires an unlocked server.
Beside the mandatory use of this negative response code as specified in the applicable services within this standard, this negative response code can also be used for any case where security is required and is not yet granted to perform the required service.
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