Understanding Report DTC with Permanent Status (0x15): UDS Protocol 0x19 Service
Hello, automotive diagnostics enthusiasts! In this blog post, Report DTC with Permanent Status (0x15): UDS Protocol 0x19 Service. I’ll walk you through one of the essential sub
-functions in the UDS protocol – Report DTC with Permanent Status (0x15), part of the 0x19 Diagnostic Service. This sub-function is used to retrieve DTCs that are stored permanently in the ECU memory, even after faults are cleared. It is especially useful for emissions-related diagnostics and regulatory compliance. You’ll learn how to construct the request and interpret the positive and negative responses over the CAN bus. We’ll break down real byte-level examples for better understanding. By the end, you’ll be confident in using this service in your UDS communication stack. Let’s dive into permanent DTC reporting with UDS!Table of contents
- Understanding Report DTC with Permanent Status (0x15): UDS Protocol 0x19 Service
- Introduction to Report DTC with Permanent Status (0x15): UDS Protocol 0x19 Service
- Why do we need Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service?
- 1. Compliance with Emission Regulations
- 2. Preventing Tampering or Unintentional Erasure
- 3. Support for On-Board Diagnostics (OBD-II)
- 4. Enhancing Vehicle Safety and Reliability
- 5. Assists in Service Validation
- 6. Enables Long-Term Fault Monitoring
- 7. Facilitates Advanced Diagnostic Tools
- Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service
- Syntax of Report DTC with Permanent Status (SBFID-0x15) of SID-0x19
- Syntax of 0x19 SID Positive Response Message
- Syntax of 0x19 SID Negative Response Message
- Example of Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service
Introduction to Report DTC with Permanent Status (0x15): UDS Protocol 0x19 Service
The Report DTC with Permanent Status (0x15) is a sub-function of the 0x19 diagnostic service in the UDS (Unified Diagnostic Services) protocol, widely used in automotive electronic control unit (ECU) diagnostics. This sub-function allows the client (typically a diagnostic tool) to request a list of Diagnostic Trouble Codes (DTCs) that have a permanent status indicating serious issues that require attention and cannot be cleared without a proper fix. Understanding this function is critical for service technicians and developers who deal with long-term or emissions-related faults. In this article, we will break down how the 0x15 sub-function works, how request and response messages are structured over the CAN bus, and how to interpret them for effective troubleshooting and diagnostics. Whether you’re new to UDS or enhancing your understanding of DTC handling, this guide will provide practical insights into permanent fault reporting in modern vehicle systems.
What is the Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service?
The Report DTC with Permanent Status (0x15) is a sub-function of the UDS (Unified Diagnostic Services) 0x19 Service, which is used in automotive diagnostics to retrieve Diagnostic Trouble Codes (DTCs) that are permanently stored in an ECU (Electronic Control Unit). These permanent DTCs are critical because they indicate issues that must be addressed before the fault memory can be cleared even if the fault is no longer actively occurring.
In simple terms, this sub-function helps diagnostic tools or testers request and retrieve DTCs that the ECU has marked as permanent, usually because they are related to emission-critical faults or safety-relevant issues. These DTCs are stored according to regulatory standards (such as OBD-II) and cannot be cleared by normal Clear DTC commands (like service 0x14) until proper repair or reset criteria are fulfilled.
Purpose of Sub-function 0x15
The main objective of this sub-function is to:
- Provide a list of permanently stored DTCs
- Ensure that critical faults are not accidentally or prematurely erased
- Support compliance with OBD legislations (such as U.S. EPA or EU regulations)
Why do we need Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service?
The Report DTC with Permanent Status (0x15) sub-function in the UDS 0x19 Service plays a crucial role in vehicle diagnostics, especially in ensuring compliance with regulatory and environmental standards. This service is specifically designed to report permanently stored Diagnostic Trouble Codes (DTCs) that cannot be erased by a standard clear operation. But here’s why is this needed:
1. Compliance with Emission Regulations
The Report DTC with Permanent Status (0x15) is vital to help vehicles comply with strict emission regulations worldwide. Authorities like the Environmental Protection Agency (EPA) and European standards require that emission-related faults must be recorded and not be erased easily. This sub-function ensures that permanent Diagnostic Trouble Codes related to emissions stay stored in the ECU until the problem is fully resolved. By doing so, it helps maintain vehicle emissions within legal limits and supports efforts to reduce air pollution. This also allows regulatory bodies and vehicle inspectors to verify the vehicle’s compliance during inspections effectively.
2. Preventing Tampering or Unintentional Erasure
Permanent DTCs cannot be cleared using typical clear commands to avoid tampering or accidental erasure. If emission or safety-related faults could be deleted easily, it might allow vehicle owners or technicians to hide faults temporarily. The 0x15 sub-function ensures these critical trouble codes remain stored in the vehicle’s memory until the ECU confirms that the fault has been genuinely fixed. This prevents unauthorized manipulation of the diagnostic data, maintaining the reliability and accuracy of vehicle diagnostics. It also protects the integrity of fault data for legal and safety purposes.
3. Support for On-Board Diagnostics (OBD-II)
On-Board Diagnostics (OBD-II) systems in modern vehicles require the storage and reporting of permanent DTCs for emission control systems. The 0x15 sub-function provides a standardized way to retrieve these permanent DTCs. This allows diagnostic tools to access the current emission-related faults that persist even after clearing temporary faults. It confirms that emission systems are properly monitored and any faults are addressed correctly. This helps maintain the vehicle’s emission system health and supports the ongoing monitoring and maintenance requirements defined by OBD-II standards.
4. Enhancing Vehicle Safety and Reliability
Permanent DTCs are not limited to emission faults; they also cover critical safety-related systems such as airbags, ABS, and stability control. The 0x15 sub-function ensures that these faults remain visible to technicians until fully repaired and verified. This continuous fault tracking enhances vehicle safety by preventing dangerous faults from being ignored or prematurely erased. It ensures that important safety functions remain operational and helps avoid unexpected failures. Consequently, it plays a key role in protecting vehicle occupants and other road users by supporting ongoing vehicle reliability.
5. Assists in Service Validation
When a vehicle is serviced, technicians rely on the permanent DTCs to confirm that repairs have been effective. The 0x15 sub-function allows diagnostic tools to retrieve these codes to check whether previously identified faults still exist. This helps mechanics verify that repairs meet regulatory and safety requirements before returning the vehicle to the customer. It ensures thorough validation of the vehicle’s condition, avoiding repeat visits or unresolved issues. Using this function during servicing leads to higher quality repairs and increased customer trust in the service provided.
6. Enables Long-Term Fault Monitoring
The Report DTC with Permanent Status (0x15) supports long-term monitoring of faults within the vehicle’s ECU. Unlike temporary DTCs that may clear after a fault condition no longer exists, permanent DTCs remain stored until the ECU confirms a sustained fault resolution. This allows the system to track intermittent or recurring problems over time, giving technicians and vehicle owners better insight into persistent issues. Long-term fault data helps identify patterns or degradation that might not be immediately obvious, leading to more accurate diagnostics and preventative maintenance.
7. Facilitates Advanced Diagnostic Tools
Modern diagnostic tools and software rely on detailed and reliable data to provide comprehensive analysis and reporting. The 0x15 sub-function delivers permanent DTCs, which are critical for advanced diagnostics such as trend analysis, predictive maintenance, and vehicle health monitoring. By accessing permanent DTCs, these tools can offer technicians deeper insights into the vehicle’s condition, helping them prioritize repairs and manage vehicle fleets more effectively. This capability improves diagnostic efficiency and reduces downtime, especially in commercial and fleet operations.
Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service
The client has the capability to request and obtain a complete list of Diagnostic Trouble Codes (DTCs) that are currently marked with a “permanent” status. These permanent DTCs represent issues that the vehicle’s system has reliably detected and stored, indicating faults that persist beyond resets or power cycles. Accessing this information allows technicians and diagnostic tools to focus on problems that require long-term attention, ensuring effective troubleshooting and vehicle maintenance.
Syntax of Report DTC with Permanent Status (SBFID-0x15) of SID-0x19
Request Message Definition – Sub-Function = Report DTC with Permanent Status
Data byte | Parameter Name | Byte Value |
#1 | Read DTC Information Request SID | 0x19 |
#2 | sub-function = [ report Type = Report DTC with Permanent Status ] | 0x15 |
SBFID (0x15) Request Message Data-Parameter of SID (0x19)
reportType: This parameter reflects bits 6 – 0 of the sub-function parameter from the client’s request message.
Syntax of 0x19 SID Positive Response Message
Response Message Definition – Sub-Function = Report DTC with Permanent Status
Data byte | Parameter Name | Byte Value |
#1 | Read DTC Information +Ve Response SID | 0x59 |
#2 | Report Type = [ Report DTC with Permanent Status | 0x15 |
#3 | DTC Status Availability Mask | 0x00 – 0xFF |
#4 #5 #6 #7 #8 #9 #10 #11 : #n-3 #n-2 #n-1 #n | DTC And Status Record[] = [ DTC High Byte#1 DTC Middle Byte#1 DTC Low Byte#1 status Of DTC#1 DTC High Byte#2 DTC Middle Byte#2 DTC Low Byte#2 status Of DTC#2 : DTC High Byte#m DTC Middle Byte#m DTC Low Byte#m status Of DTC#m | 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF : 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF 0x00 – 0xFF |
Sure, here’s a concise version: C1: Present if DTC information is available. C2: Present if report Type matches specific conditions and more than one DTC is available. |
SBFID (0x15) Response Message Data-Parameter of SID (0x19)
reportType: This parameter reflects bits 6 – 0 of the sub-function parameter from the client’s request message.
DTCStatusAvailabilityMask: A byte where the bits are defined the same as the statusOfDTC, representing the status bits supported by the server. Bits not supported by the server will be set to ‘0’. Each supported bit (indicated by a value of ‘1’) will be implemented for every DTC supported by the server.
DTCAndStatusRecord: This parameter record includes one or more groupings of DTCHighByte, DTCMiddleByte, DTCLowByte, and statusOfDTC, based on the following formats:
Supported DTC Formats:
- ISO_14229-1_DTCFormat
- SAE_J2012-DA_DTCFormat_00
- SAE_J1939-73_DTCFormat
- SAE_J2012-DA_DTCFormat_04
- ISO_11992-4_DTCFormat
- DTCHighByte, DTCMiddleByte, DTCLowByte: Together represent a unique identification number for a specific diagnostic trouble code.
- DTCHighByte and DTCMiddleByte: Represent the circuit/system being diagnosed.
- DTCLowByte: Indicates the type of fault (e.g., sensor open circuit, sensor shorted to ground).
Formats Supported:
- SAE_J2012-DA_DTCFormat_00
- ISO_14229-1_DTCFormat
- SAE_J1939-73_DTCFormat
- ISO11992-4DTCFormat
- SAE_J2012-DA_DTCFormat_04
Syntax of 0x19 SID Negative Response Message
Response Message Definition – Sub-Function = Report DTC with Permanent Status
Data byte | Parameter Name | Byte Value |
#1 | Read DTC Information –Ve Response SID [ byte#1 ] | 0x7F |
#2 | Requested SID [ byte#1 ] | 0x19 |
#3 | Negative Response Code [ byte#1 ] | NRC |
Example of Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service
Here are the Examples of Report DTC with Permanent Status (0x15) in the UDS Protocol 0x19 Service:
// Below example shows how to use the UDS commands over the CAN data field as per the DoCAN
// Example for Positive Response for SID-0x19
Request: Client --> Server
02 19 15
Positive Response: Server --> Client
11 59 15 00 01 D0 09 AA F1 90 AC 11
// Example for Negative Response for SID-0x19
Request: Client --> Server
03 19 15
Negative Response: Server --> Client
03 7F 19 13
Explanation of UDS Protocol Commands for Service 0x19 Sub-function 0x15
This example demonstrates how the Unified Diagnostic Services (UDS) protocol uses CAN data fields to request and receive information about the Report DTC with Permanent Status (0x15) sub-function within the 0x19 Diagnostic Service.

1. Request from Client to Server
Request: 02 19 15
- 02 indicates the length of the data bytes following (2 bytes).
- 19 is the service identifier (SID) for the Diagnostic Service.
- 15 is the sub-function identifier, specifying the “Report DTC with Permanent Status”.
In this step, the client (diagnostic tool) sends a request to the server (ECU) asking to report all Diagnostic Trouble Codes (DTCs) that have a permanent status.
2. Positive Response from Server to Client
Positive Response: 11 59 15 00 01 D0 09 AA F1 90 AC 11
- 11 indicates the total length of the data bytes (7 bytes).
- 59 is the positive response code corresponding to the original service 0x19 (service + 0x40).
- 15 confirms the sub-function being responded to.
- The remaining bytes (
00 01 D0 09 AA
F1 90 AC 11
) represent the actual data in this case, the details of the permanent DTC(s) reported by the ECU. These bytes would typically include DTC codes and status information specific to the ECU’s diagnostic memory.
This response means the ECU successfully processed the request and is providing the requested information about permanent DTCs.
3. Negative Response from Server to Client
Request: 03 19 15
This is an alternative request length (3 bytes) indicating a request for the same sub-function.
Negative Response: 03 7F 19 13
- 03 is the length of the negative response bytes.
- 7F is the negative response indicator in UDS, meaning the request could not be processed successfully.
- 19 is the original service identifier.
- 13 is the negative response code, which stands for “Incorrect Message Length or Invalid Format”.
This means the ECU rejected the request due to a problem in the request message, such as an incorrect length or format error.
Key Takeaways:
- The client sends a request to retrieve permanent DTCs using the 0x19 service with sub-function 0x15.
- The server responds positively with the data if the request is valid.
- If there is an error in the request (such as incorrect length), the server returns a negative response with an appropriate error code.
Understanding these steps helps automotive technicians and diagnostic tool developers correctly implement fault code reporting and troubleshooting based on the UDS protocol.
Discover more from PiEmbSysTech
Subscribe to get the latest posts sent to your email.