Report Most Recent Confirmed DTC (0x0E): 0x19 Service in UDS

Understanding UDS 0x0E Sub-function: Report Most Recent Confirmed DTC in 0x19 Diagnostic Service

Hello, automotive diagnostics enthusiasts! In this blog post, Report Most Recent Confirmed DTC (0x0E) in UDS. I will walk you through one of the key sub-functions in the UDS (Unified

Diagnostic Services) protocol: Report Most Recent Confirmed DTC (0x0E) under service 0x19. This sub-function allows you to retrieve the latest Diagnostic Trouble Code (DTC) that has been confirmed by the ECU since the last memory clear. It plays a crucial role in helping technicians and diagnostic tools quickly identify persistent faults in a vehicle. By understanding how this feature works, you’ll be better equipped to interpret trouble codes during vehicle servicing. In this post, I’ll explain what the 0x0E sub-function is, how to use it, and how to read the response structure effectively. Whether you’re a diagnostics engineer or a learner, this guide will strengthen your knowledge of fault detection using UDS. Let’s dive into the world of vehicle diagnostics!

Introduction to Report Most Recent Confirmed DTC (0x0E) in 0x19 Service of UDS Protocol

Welcome to another insightful dive into the UDS protocol! Today, we’re focusing on the Report Most Recent Confirmed DTC (0x0E), a critical sub-function under the 0x19 diagnostic service. This function helps technicians and diagnostic tools identify the last Diagnostic Trouble Code that has been confirmed by the ECU. It’s especially useful for tracking down issues that have repeatedly occurred and been validated as genuine. Knowing how to use and interpret this sub-function can greatly improve the accuracy of vehicle diagnostics. In this article, we’ll explore the purpose, request/response format, and practical use cases of 0x0E. If you’re working with automotive ECUs or developing diagnostics software, this topic is essential. Let’s jump in and understand how confirmed DTC reporting works in UDS!

What is Report Most Recent Confirmed DTC (0x0E) in 0x19 Service of UDS Protocol?

The Report Most Recent Confirmed DTC (0x0E) is a sub-function of the Diagnostic Service 0x19 in the Unified Diagnostic Services (UDS) protocol. This sub-function allows a diagnostic tester (client) to request and receive the most recent Diagnostic Trouble Code (DTC) that has been confirmed by the Electronic Control Unit (ECU) in a vehicle.

Here’s a detailed explanation:

The UDS protocol defines service 0x19 as “ReadDTCInformation”, which includes several sub-functions to access various types of DTC-related data. Among these, sub-function 0x0E is specifically used to report the last DTC that has transitioned to a “confirmed” state, indicating that the fault has met certain thresholds or conditions defined by the manufacturer and is considered a valid, recurring issue.

When a fault is detected by a monitoring system inside the ECU, it first becomes a pending DTC. If the fault continues to persist and satisfies the internal confirmation criteria (like occurring on multiple drive cycles), it transitions into a confirmed DTC. The most recent of such confirmed DTCs is what sub-function 0x0E retrieves.

This information is crucial for:

  • Diagnosing recent critical faults
  • Identifying patterns in ECU behavior
  • Verifying vehicle health after servicing
  • Supporting root-cause analysis in OEM development and service centers

The server (ECU) responds with a positive response message that includes:

  • A status availability mask
  • The DTC number (usually 3 bytes)
  • The DTC status byte

If no confirmed DTCs exist since the last memory clear (via service 0x14), then only the status availability mask is returned, and no DTC will follow in the response. Understanding and using this sub-function correctly can enhance diagnostics accuracy and speed up troubleshooting, especially in complex embedded automotive systems.

Why do we need Report Most Recent Confirmed DTC (0x0E) in 0x19 Service of UDS Protocol?

Here’s a detailed explanation of why the Report Most Recent Confirmed DTC (0x0E) in 0x19 Service of UDS Protocol is important:

1. Quick Identification of Persistent Faults

The 0x0E sub-function in the UDS 0x19 service allows the client to retrieve the most recent Diagnostic Trouble Code (DTC) that has been confirmed. A confirmed DTC is one that has failed consistently enough to meet confirmation criteria, making it a more reliable indicator of a true problem. This feature is essential for identifying persistent issues that have recently occurred in the system. Instead of displaying all stored DTCs, it pinpoints the latest significant fault. This helps technicians focus their attention on real-time issues rather than historical or pending codes. As a result, it improves the speed and accuracy of diagnostics.

2. Streamlined Troubleshooting Process

Using sub-function 0x0E, diagnostic tools or technicians can immediately fetch the last confirmed DTC without scanning through the full DTC list. This streamlines the troubleshooting process, especially when time is critical in a service bay or during on-road diagnostics. The ability to narrow down the problem to the most recent confirmed issue ensures quicker root cause identification. It reduces unnecessary steps and helps prioritize the fault for immediate resolution. This functionality is particularly useful in complex ECUs with numerous error records. Overall, it enhances service efficiency and diagnostic accuracy.

3. Supports Post-Repair Validation

After performing repairs and clearing the diagnostic memory, the 0x0E sub-function plays a crucial role in post-repair validation. If the same or a new confirmed DTC appears, it indicates that the issue may not have been fully resolved or a new problem has arisen. This helps technicians verify whether the repair action was successful. It’s also useful in warranty repairs or vehicle recalls, where confirmation of fault resolution is critical. By analyzing the most recent confirmed DTC, technicians can be confident in their repair quality. It’s a reliable way to check system integrity post-service.

4. Enhances Diagnostic Reporting and Logging

In diagnostic tools or fleet management systems, the 0x0E sub-function helps in generating concise and meaningful reports. Instead of listing all active and historic DTCs, the report can focus on the most recent confirmed fault. This is useful for maintaining a vehicle’s service history or for OEMs tracking issues across vehicle fleets. The data helps in trend analysis and identifying recurring problems in a specific vehicle model. It also simplifies communication between technicians and vehicle owners by focusing on the latest validated issue. As a result, diagnostics reporting becomes cleaner and more actionable.

5. Independent from DTC Aging Mechanism

The most recent confirmed DTC retrieved using 0x0E is not affected by the aging process that clears DTCs after they no longer occur. Even if other DTCs have aged out of the system, this sub-function ensures that the most recent critical issue is still available for diagnostics. This independence makes the retrieved data more trustworthy and robust for fault tracking. It ensures that valuable fault information is not lost due to automatic aging, which is common in modern ECUs. Hence, it improves fault traceability and supports long-term diagnostics and development testing.

6. Useful in Vehicle Health Monitoring Systems

The 0x0E sub-function is highly beneficial in real-time vehicle health monitoring systems. These systems rely on precise and up-to-date information to assess a vehicle’s status. By providing only the most recent confirmed DTC, it filters out outdated or irrelevant codes and focuses on what matters now. This is especially useful in connected vehicles where data is transmitted to backend servers for predictive maintenance. It allows backend analytics to quickly identify which vehicles are at risk and require service. As a result, it improves operational uptime and enhances customer satisfaction through proactive care.

7. Compliance with Diagnostic Standards

Using this sub-function helps OEMs and diagnostic tool manufacturers align with automotive diagnostic standards like ISO 14229 (UDS) and regulatory requirements. Certain jurisdictions or diagnostic use-cases mandate confirmation of the latest fault before repairs or emissions checks. By offering a standardized way to access this data, the 0x0E sub-function ensures interoperability across diagnostic equipment. It also provides a consistent diagnostic interface across multiple ECUs and vehicle platforms. This helps in achieving compliance, improving tool compatibility, and reducing development overhead for vehicle diagnostics systems.

Report Most Recent Confirmed DTC (0x0E) in 0x19 Service

The 0x0E sub-function, known as reportMostRecentConfirmedDTC, is used to retrieve the most recent confirmed DTC since the last time diagnostic information was cleared. This request is made by sending a command with the sub-function byte set to 0x0E. The server will return the DTC number and its associated status. Just like with the 0x0C sub-function, if no DTCs have been confirmed, the server won’t send any DTC or status information after the DTCStatusAvailabilityMask byte.

If only one DTC has been confirmed, it will be returned for both the first and most recent confirmed DTC requests. If a previously failed DTC meets aging criteria and gets confirmed, it will be marked as the most recent confirmed DTC, regardless of other confirmed codes that may be logged later. This behavior ensures that the history of confirmed DTCs is consistently tracked and that the system maintains continuity in reporting. Similar to the first confirmed DTC, the most recent confirmed DTC information is cleared when a ClearDiagnosticInformation request is issued by the client.

Syntax of Report Most Recent Confirmed DTC (SBFID-0x0E) of SID-0x19

Request Message Definition – Sub-function = Report Most Recent Confirmed DTC

Data byteParameter NameByte Value
#1Read DTC Information Request SID0x19

#2
sub-function = [ report Type =                            
Report Most Recent Confirmed DTC ]

0x0E

Syntax of 0x19 SID Positive Response Message

Response Message Definition – Sub-function = Report Most Recent Confirmed DTC

Data byteParameter NameByte Value
#1Read DTC Information +Ve Response SID0x59

# 2
Report Type = [                              
Report Most Recent Confirmed DTC ]

0x0E
#3DTC Status Availability Mask0x00 – 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 OfDTC#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
C1: This parameter is only present if DTC information is available to be reported.
C2: This parameter is only present if reportType = reportSupportedDTCs, reportDTCByStatusMask,
reportMirrorMemoryDTCByStatusMask, reportEmissionsOBDDTCByStatusMask, reportDTCWithPermanentStatus and
more than one DTC information is available to be reported.

SBFID (0x0E) 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_04
  • SAE_J2012-DA_DTCFormat_00
  • ISO_14229-1_DTCFormat
  • SAE_J1939-73_DTCFormat
  • ISO11992-4DTCFormat

Syntax of 0x19 SID Negative Response Message

Response Message Definition – Sub-Function = Report Most Recent Confirmed DTC

Data byteParameter NameByte Value
#1Read DTC Information -Ve Response SID [ byte#1 ]0x7F
#2Requested SID [ byte#1 ]0x19
#3Negative Response Code [ byte#1 ]NRC

Example of Report Most Recent Confirmed DTC (0x0E) in 0x19 Service of UDS Protocol

Here are the Examples of Report Most Recent Confirmed DTC (0x0E) in 0x19 Service of UDS Protocol:

// 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 0E
Positive Response: Server --> Client
14 59 0E FF 12 34 56 26 A0 A1 B0 B1 09 02 07
// Example for Negative Response for SID-0x19
Request: Client --> Server
03 19 0E Negative Response: Server --> Client
03 7F 19 13

Understanding UDS Commands for SID 0x19 with Sub-function 0x0E (Report Most Recent Confirmed DTC)

Here’s an explanation of the UDS (Unified Diagnostic Services) protocol commands as used in the provided example for Service ID 0x19 with sub-function 0x0E (Report Most Recent Confirmed DTC):

1. Positive Response for SID-0x19 (Sub-function 0x0E)

Request: Client –> Server
Client Request: 02 19 0E
  • 02: Length byte, indicating the length of the data (2 bytes).
  • 19: Service Identifier (SID) for diagnostic services, which is 0x19 in this case (specific to UDS diagnostic service).
  • 0E: Sub-function byte, here 0x0E is used for Report Most Recent Confirmed DTC. The client is requesting the most recent confirmed Diagnostic Trouble Code (DTC) from the server.
Positive Response: Server –> Client
Server Response: 14 59 0E FF 12 34 56 26 A0 A1 B0 B1 09 02 07
  • 14: PCI – indicates that this is a First Frame and more data follows in multi-frame format.
  • 59: Positive response code (0x19 + 0x40 = 0x59).
  • 0E: Echo of the requested sub-function.
  • FF: Snapshot record number or ID (example).
  • 12 34 56: DTC number in hexadecimal.
  • 26 A0 A1 B0 B1 09 02 07: Additional data including environmental or operational conditions or extended identifiers (depends on OEM definitions).

The ECU has responded with one or more snapshot record identifiers linked to DTC 0x123456. These IDs can now be used by the diagnostic tool to retrieve detailed snapshot data using sub-function 0x0F.

2. Negative Response for SID-0x19 (Sub-function 0x0E)

Request: Client –> Server
Client Request: 03 19 0E
  • 03: Length byte, indicating the length of the data (3 bytes).
  • 19: Service Identifier (SID) for diagnostic services, which is 0x19.
  • 0E: Sub-function byte, indicating the client is requesting Report Most Recent Confirmed DTC.
Negative Response: Server –> Client
Server Response: 03 7F 19 13
  • 03: Length byte, indicating the length of the response (3 bytes).
  • 7F: A general negative response code indicating an error or failure in the request.
  • 19: The Service Identifier (SID) for the service.
  • 13: The specific Negative Response Code. In this case, 0x13 refers to “sub-function not supported” or another error related to the request.
Key Takeaways:
  1. Client Request: The client sends a request to the server with the Service Identifier 0x19 and Sub-function 0x0E to retrieve the most recent confirmed DTC.
  2. Positive Response: If the server processes the request successfully, it sends back the requested DTC data along with a success response (success code 59).
  3. Negative Response: If there’s an issue (e.g., unsupported sub-function, missing data), the server sends a negative response with a failure code (e.g., 7F 19 13 indicating an error).

Discover more from PiEmbSysTech

Subscribe to get the latest posts sent to your email.

Leave a Reply

Scroll to Top

Discover more from PiEmbSysTech

Subscribe now to keep reading and get access to the full archive.

Continue reading