The UDS protocol Negative Response Codes tutorial will help you to know the particu
lar error code meaning. This tutorial will help you to learn from basic to the deep knowledge of all Negative Response Codes (NRC) that have been implemented in the UDS protocol. If you are really working in any automotive company or working in any service station then I will tell this is the best tutorial for you to get to know the NRC code you have received in your diagnostic test tool. Let’s go discuss each and every NRC in the below topic step by step.Introduction to UDS Negative Response Codes
The UDS protocol is implemented in such a way that if the tester is requesting any task or UDS service request, then the server should complete the work and send the response for completion. But suppose due to any technical or environmental malfunction, the server or ECU is not able to complete due to the wrong request or anything, then the server will send the negative response message to the server with Negative Response Codes (NRC). By the way, the tester can easily analyze and fix the issue or repair the vehicle easily.
What is UDS Protocol NRC Code?
UDS NRC (Negative Response Code) stands for Unified Diagnostic Services Negative Response Code. It is a critical component of the UDS (Unified Diagnostic Services) protocol, which is widely used in the automotive industry for diagnostic communication between electronic control units (ECUs) in vehicles. UDS NRC codes are used to convey information about the success or failure of diagnostic services and requests within the UDS protocol.
Types of UDS Protocol NRCs
all the Negative Response Codes (NRC) used in the IS0-14229 standard for identifying the internal protocol fault for not following the standard are defined below. Each diagnostic service identifier has defined its negative response codes for that particular fault. The diagnostic service implementation within the server can also utilize additional and applicable Negative Response Codes (NRC) laid out in this as defined by the vehicle manufacturer also.
All the negative response codes are split into three categorized from 0x00 – 0xFF ranges, such as:
- 0x00: The purpose of this Negative Response Codes (NRC) is to available for a positive response parameter value for server internal implementation.
- 0x01 – 0x7F: This range is used for the communication-related negative response codes.
- 0x80 – 0xFF: This range is used as the Negative Response Codes (NRC) for specific conditions that are not correct at that instant of time when the request is received by the server. These response codes could also be utilized whenever the response code 0x22 is listed as valid. By the way to report more specifically why the requested action can not be taken for a positive response.
UDS Protocol NRC You Should Know
NRC Code Value | NRC Code Name | Description |
---|---|---|
0x00 | Positive Response | The 0x00 is a special and initiative value that can not be used for ant NRC. It is this parameter value reserved for several internal code implementation reason. |
0x01 – 0x0F | ISO SAE Reserved | This range of NRC is reserved for the future definition that maybe increase the diagnostic functionality more. |
0x10 | General Reject | If there is none of the NRC is available in UDS standard document to meet the needs of the implementation, then you can use this NRC for your ECU. |
0x11 | Service Not Supported | Suppose the client has sent a request with a Service Identifier. That is not supporting in your ECU by your OEM. Even if you can also say as per the requirement or as per the OEM. But the service engineer or client has requested that unknown SID request to the server. Then the server will send the 0x11 NRC response message to the client that it is an unknown Service Identifier. |
0x12 | Sub-function Not Supported | Suppose the client has sent a valid and known Service identifier. But the Sub-function Identifier is unknown or invalid. then the server will send 0x12 Negative Response Code to the client. |
0x13 | Incorrect Message Length Or Invalid Format | If the client has sent any diagnostic request message whose length or the frame format does not match with the prescribed length or the format for that specified service (SID), then the server will send this NRC. |
0x14 | Response Too Long | If the client has sent a diagnostic request and the response message length is more than the Transport protocol maximum length, then the server will send this NRC. The CAN-TP has 4096 bytes has a maximum length, if the server will send more than that, then this NRC will be sent by the server to the client. Ex: suppose you requested more number of DIDs at a time to read the data if it will cross that limit, then this NRC will get generated by the server. |
0x15 – 0x20 | ISO SAE Reserved | This range of NRC is also reserved for the future definition that maybe increase the diagnostic functionality more. |
0x21 | Busy Repeat Request | If the server is too busy with some other operation or you can say any other client request in a multi-client environment, then the server will send this NRC to the client. This NRC is supported by each SID. Ex: Suppose there are two clients connected to your vehicle simultaneously. One client has already requested a service that is under process means incomplete and the second client is requesting another request to the server then the server will send the NRC 0x21 to the second server to wait for some time. This time will be defined in the document that you need to check. |
0x22 | Conditions Not Correct | Before proceeding any service from the client, the server will check for prerequisite conditions are met or not. If not then the server will send this NRC. Ex: you can say the ECU operational low threshold or high threshold voltage, temperature, etc. |
0x23 | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x24 | Request Sequence Error | If the client will send the diagnostic message non-sequentially, then the server will send this NRC to the client. Ex: Suppose in security access SID, the client sent security key first and then seed request, then the server will send this NRC. because in this 0x27 service, the client should send the seed request first and then the security key. |
0x25 | No Response From Sub-net Component | Suppose the diagnostic request service sent by the client to the server, but the received ECU is not the target ECU and it is a gateway. So that the Gateway ECU will send this request to the target ECU and that should perform the operation and send back the response message to the Gateway ECU, and then it will send the response message. If the Gateway ECU does not receive the response message from that target ECU or server then the Gateway ECU will send this NRC to the client. This NRC supported by each SID. |
0x26 | Failure Prevents Execution Of Requested Action | If the client requested service and at that time a fault occurred in server ECU after receiving of this ECU so that at least one DTC status bit for TestFailed, Pending, Confirmed or TestFailedSinceLastClear set to 1, then the server will send this NRC to the client. Basically this failure condition prevents the server from performing the requested action so that the server will not able to execute the client request. |
0x27 – 0x30 | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x31 | Request Out Of Range | If the server received a client request with a parameter (DID, RID) that is out of range, then the server will send this NRC. Suppose in your ECU, the DID or RID having some range used and the client requesting it which is not supported in your ECU or might be not supported in this active session, it will send this NRC. |
0x32 | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x33 | Security Access Denied | The server will send this NRC if the security strategy is not satisfied with the server. The Server will send this NRC if any of the below conditions will not satisfy: Server test conditions are not met. Service message sequence (first diagnostic session and then security access service request). The server needs to unlock by the client for some read or write access to the server, but without unlock, a client trying to access the protected memory. |
0x34 | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x35 | Invalid Key | If the server received a security key from the client that is not matching with the server-generated key, then the server will send this NRC. |
0x36 | exceed Number Of Attempts | Basically, in each server, there will be a security retrieval counter and it will be having a limit like 3 or 5 times. So if a client will send the wrong security key more than the defined counter value, the server will send this NRC to the client. |
0x37 | Required Time Delay Not Expired | Once the client will send a wrong security key, client should wait the defined time, and then it should send the key again. But if the client will send the security key before that then the server will send this NRC. |
0x38 – 0x4F | Reserved By Extended Data Link Security Document | This is reserved for future implementation of security layer related NRC |
0x50 – 0x6F | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x70 | Upload Download Not Accepted | Sometimes due to some fault conditions in the server or server memory, it will not accept any upload or download request from the client. |
0x71 | Transfer Data Suspended | During the data transfer, sometimes due to some failure of any kind of fault, the server will not able to write data onto the memory. So in that situation, the server will send this NRC to the client. |
0x72 | General Programming Failure | If the server detects an error during the erasing or programming of the memory location of permanent memory (e.g. NVM/Flash/EEPROM), then the server will send this NRC to the client. |
0x73 | Wrong Block Sequence Counter | Basically whenever a multi-frame consecutive data packets sent by the client to server. In the Consecutive Frame, there will be a Frame index that will increase in each next frame. The server also receives that and compares it with the previous value that should be +1 in each current frame received. If there is any miss match, the server will send this NRC to the client. |
0x74 – 0x77 | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x78 | Request Correctly Received-Response Pending | This NRC indicates that the request message from client successfully received by the server. All the requested parameters are also valid. But the server is not ready or due to busy or it is taking some more time to execute the client request in the defined server parameter. So if the client sends another request or the server P2 Client time out happened, the server will send this NRC to the client to inform that to wait for some more time period nothing but the P2* Client timing value. After the execution, the server will send either a positive or negative response message. |
0x79 – 0x7D | ISO SAE Reserved | This NRC is also reserved for the future definition. |
0x7E | Sub-function Not Supported In Active Session | This NRC will return by the server if the requested sub-function Identifier is not supported in this session. basically, in UDS protocol there are 3 sessions. In each session what services and their sub-functions will support it will be decided by the OEM. If the tester will request a service with a correct subfunction for this service Identifier but that is not supported in this session, then obviously the server will send this NRC to the client. But remember there might be a possibility that the same sub-function and service Identifier will support in any other session. |
0x7F | Service Not Supported In Active Session | This NRC will return by the server if the requested service identifier is not supported in this session. |
0x80 | ISO SAE Reserved | This NRC is also reserved for future definition. |
0x81 | Rpm Too High | This NRC indicates that the requested action sent by the client will not be taken because the server prerequisite condition for RPM is higher than the defined value in ECU or server. |
0x82 | Rpm Too Low | This NRC indicates that the requested action sent by the client will not be taken because the server prerequisite condition for RPM is lower than the defined value in ECU or server. |
0x83 | Engine Is Running | An NRC is necessary for actuator tests that cannot be performed while the engine is operational. This requirement is distinct from a negative response due to excessively high RPM and should be permitted. |
0x84 | Engine Is Not Running | An NRC is needed for actuator tests that can only be activated when the engine is in operation. This is distinct from a negative response caused by excessively low RPM and should be permitted. |
0x85 | Engine Run Time Too Low | This NRC signifies that the requested action will not be executed due to the server prerequisite condition, which requires the engine run time to meet a pre-programmed limit. The current engine run time is below this limit. |
0x86 | Temperature is Too High | This NRC informs that the requested action will not be executed due to the server’s prerequisite condition related to temperature not being met. The current temperature exceeds a pre-programmed maximum threshold. |
0x87 | Temperature is Too Low | This NRC signifies that the requested action will not be carried out because the server’s prerequisite condition for temperature is not satisfied. The current temperature is below a pre-programmed minimum threshold. |
0x88 | Vehicle Speed is Too High | This NRC communicates that the requested action will not be executed due to the server’s prerequisite condition for vehicle speed not being met. The current vehicle speed exceeds a pre-programmed maximum threshold. |
0x89 | Vehicle Speed is Too Low | This NRC conveys that the requested action will not be carried out because the server’s prerequisite condition for vehicle speed is not satisfied. The current vehicle speed is below a pre-programmed minimum threshold. |
0x8A | Throttle/Pedal is Too High | This NRC implies that the requested action will not be executed because the server’s prerequisite condition for throttle or pedal position is not fulfilled. The current TP/APP (Throttle/Pedal Position) is above a pre-programmed maximum threshold. |
0X8B | Throttle/Pedal IS Too Low | This NRC suggests that the requested action will not be carried out because the server’s prerequisite condition for throttle or pedal position is not satisfied. The current TP/APP (Throttle/Pedal Position) is below a pre-programmed minimum threshold. |
0X8C | Transmission Range Is Not In Neutral | This NRC communicates that the requested action will not be executed because the server’s prerequisite condition for the vehicle being in neutral is not satisfied. The current transmission range is not in the neutral position. |
0x8D | Transmission Range is Not In Gear | This NRC indicates that the requested action will not be executed because the server’s prerequisite condition for the vehicle being in gear is not fulfilled. The current transmission range is not in a gear position. |
0x8E | ISO SAE Reserved | This range of values is set aside by this document for future definition. |
0x8F | Brake Switch(es) Not Closed (Brake Pedal not pressed or not applied) | This NRC indicates that for safety reasons, a specific requirement is necessary for certain tests before they commence, and it must be upheld throughout the entire duration of the test. |
0x90 | Shifter Lever Not In Park | This NRC signifies that, due to safety considerations, a certain requirement is mandatory before the commencement of specific tests, and it must be adhered to throughout the entire duration of the test. |
0x91 | Torque Converter Clutch is Locked | This NRC states that the requested action will not be executed because the server’s prerequisite condition for the torque converter clutch is not satisfied. The current TCC (Torque Converter Clutch) status is above a pre-programmed limit or it is locked. |
0x92 | Voltage is Too High | This NRC conveys that the requested action will not be carried out because the server’s prerequisite condition for voltage at the primary pin of the server (ECU) is not fulfilled. The current voltage exceeds a pre-programmed maximum threshold. |
0x93 | Voltage Too Low | This NRC communicates that the requested action will not be executed because the server’s prerequisite condition for voltage at the primary pin of the server (ECU) is not satisfied. The current voltage is below a pre-programmed maximum threshold. |
0x94 – 0xEF | Reserved For Specific Conditions Not Correct | This range of values is designated by this document for potential future definition or specification. |
0xF0 – 0xFE | Vehicle Manufacturer Specific Conditions Not Correct | This range of values is set aside for scenarios that pertain to specific conditions determined by the vehicle manufacturer and are not considered correct. |
0xFF | ISO SAE Reserved | This range of values is earmarked by this document for potential future definition or specification. |
In the above table, all the UDS Protocol Negative Response Codes (NRC)values are defined. But to know the main reason or the cause of that particular NRC or why it came you should go through the below explanation where each NRC has been explained briefly.
The above Negative response Codes are available in the ISO-14229 document, so it is nothing like in all the ECU there are only will be available for diagnosing purpose. As if you have seen in the above table there are some range of values are reserved, the OEM can use them for their own Negative response code implementation. So that it will be having more additional features for their vehicle to do the diagnostic easy. So you can say the OEM can also implement their own Negative Response Codes (NRC) in the vehicle to make the diagnostic easy.
Discover more from PiEmbSysTech
Subscribe to get the latest posts sent to your email.
Best Article for UDS NRC Codes list
Excellent Explanation about every NRC. Thanks alot
The page shows a description of the standard. This can be found anywhere in the internet.
An example with an interpretation of the data bytes would be more helpful to understand the application of the standard in a real data telegram.
Hi Bippus, we have each UDS service having one article there we are explaining with data bytes also. We are adding the links there even if you can search or go through our articles.