Practical Testing
Module 4 of 5 · 1 lesson · ~18 min · ← Back to Learning Hub
Lesson: Complete DTC Diagnosis Workflow
Real-World Scenario
A vehicle arrives with the check engine light (MIL) illuminated. As the diagnostic engineer, you need to:
- Establish a diagnostic session
- Read and document all DTCs
- Capture freeze frame data for context
- Perform the repair
- Clear the DTCs
- Verify the fix with a drive cycle
- Exit the diagnostic session cleanly
This is the most common workflow in automotive service — let’s walk through it step by step with exact UDS frames.
Step 1: Enter Extended Diagnostic Session
Start with SID 0x10 to unlock full diagnostic capabilities:
Request: 10 03
Response: 50 03 00 32 01 F4The response confirms:
- Extended session (0x03) is active
- P2 = 50 ms response time
- P2* = 5000 ms extended response time
Always confirm the session before proceeding. Some ECUs may refuse the transition if conditions aren’t met (e.g., vehicle speed > 0 km/h).
Step 2: Count DTCs First
Get a quick count before pulling the full list:
Request: 19 01 0F
Response: 59 01 0F 01 00 020Fstatus mask = all DTCs (bits 0–3 combined)01= ISO 14229-1 DTC format00 02= 2 DTCs present
Step 3: Read All DTC Details
Now retrieve the full list with status bytes:
Request: 19 02 0F
Response: 59 02 0F 04 30 01 2F 01 71 00 0C
↑─────────┘ ↑─────────┘
DTC 1 DTC 2Decoded:
- DTC 1:
04 30 01= P0301 (Cylinder 1 Misfire), status0x2F- Status
0x2F= binary0010 1111→ confirmed, active, warning lamp on
- Status
- DTC 2:
01 71 00= P0171 (System Too Lean), status0x0C- Status
0x0C= binary0000 1100→ pending, not yet confirmed
- Status
Document these before touching anything.
Step 4: Capture Freeze Frame Data
For the confirmed DTC (P0301), get the conditions at fault onset:
Request: 19 04 04 30 01 FF
Response: 59 04 04 30 01 2F 01 [freeze frame bytes...]The freeze frame typically contains:
- Engine RPM at fault
- Vehicle speed
- Coolant temperature
- Fuel trim values
- Load percentage
This data is critical for diagnosing intermittent faults — it shows exactly what the vehicle was doing when the fault was first detected.
Step 5: Perform the Repair
Based on the DTCs and freeze frame:
- P0301 (Misfire Cyl 1) → Inspect spark plug, ignition coil, injector for cylinder 1
- P0171 (System Too Lean) → Check for vacuum leaks, MAF sensor, fuel pressure
Make the necessary repairs.
Step 6: Clear All DTCs
After repair, clear the codes with SID 0x14:
Request: 14 FF FF FF
Response: 54FF FF FF= all DTC groups- Response
54(positive, no data payload) confirms all DTCs cleared
Note: Clearing DTCs also resets freeze frame data, readiness monitors, and the DTC status bytes. This is irreversible — make sure you’ve documented everything first.
Step 7: Verify the Repair
Perform a drive cycle to allow the ECU to run its diagnostic monitors, then re-read:
Request: 19 01 0F
Response: 59 01 0F 01 00 0000 00= 0 DTCs present ✓
If DTCs return immediately, the repair was not successful. If they return after a drive cycle, the root cause is still present.
Step 8: Exit the Diagnostic Session
Always return to Default Session when complete:
Request: 10 01
Response: 50 01 00 32 01 F4This re-enables normal vehicle communication and releases any suppressed network messages.
Professional Tips
Always read before clearing. Print or export the full DTC list, freeze frames, and extended data before clearing. This protects you legally and helps diagnose warranty returns.
Check readiness monitors. Before clearing, note which monitors are complete (19 0A). After clearing, the customer may need a drive cycle before emissions testing.
Freeze frame is your time machine. The engine conditions at fault detection often point directly to the cause — especially for intermittent DTCs that only set under specific load or temperature conditions.
Pending vs Confirmed. A pending DTC (status bit 2) has been detected once. A confirmed DTC (bit 3) has been seen across at least two drive cycles. Address confirmed DTCs first; pending DTCs may resolve with repair of the confirmed fault.
Complete Frame Sequence Summary
| Step | Request | Response | Purpose |
|---|---|---|---|
| 1 | 10 03 | 50 03 00 32 01 F4 | Enter Extended Session |
| 2 | 19 01 0F | 59 01 0F 01 00 02 | Count DTCs |
| 3 | 19 02 0F | 59 02 0F [DTC data] | Read DTC list |
| 4 | 19 04 [DTC] FF | 59 04 [freeze frame] | Capture freeze frame |
| 5 | — | — | Perform repair |
| 6 | 14 FF FF FF | 54 | Clear DTCs |
| 7 | 19 01 0F | 59 01 0F 01 00 00 | Verify cleared |
| 8 | 10 01 | 50 01 00 32 01 F4 | Exit session |
Next Steps
Continue to Best Practices for production-grade error handling, retry logic, and NRC response strategies.