Service Interaction Protocol
Tester Present
0x3EProtocol Identifier
A heartbeat signal sent by the tester to prevent the ECU from exiting the active diagnostic session due to timeout.
Overview
ISO 14229-1
“The client sends a TesterPresent request to indicate to the server that the client is still connected… preventing the server from automatically returning to default session.”
info _entry
The ‘P3 Server’ Timer ECUs have a safety timer (typically 5000ms). If no diagnostic message is received within this window, the ECU assumes the tester has disconnected. It will:
- Revert to Default Session (0x01).
- Lock any unlocked security access.
- Stop any active diagnostic routines.
Service 0x3E resets this timer.
Message Format
Byte | Name | Description |
|---|---|---|
| 0 | SID | 0x3E |
| 1 | Sub-Function | 0x00 (Reply) or 0x80 (Suppress Reply) |
Mode 1: Handshake (0x00)
You want the ECU to confirm it’s still there.
tx_packet
Request
3E 00> Sub-fn 0x00 = Respond
rx_packet
Response
7E 00> Positive Response
Mode 2: Keep-Alive (0x80)
Standard mode. Keeps session active silently.
tx_packet
Request
3E 80> Sub-fn 0x80 = Suppress Response
(No Response sent by ECU)
Workflow & Thinking

Click to Enlarge
Visualizing the P3 Timer reset mechanism.
Negative Response Codes
Logic_Exceptions
Critical_Error_Paths
NRC_0x12
Sub-function Not Supported
You sent a sub-function other than 0x00 or 0x80.
SEQ_DIAGRAM_DUMPOFFSET_0x7F
Sub-function Not Supported Flow
2 stepsTester
ECU
NRC_0x13
Incorrect Message Length
The message was not exactly 2 bytes long.
SEQ_DIAGRAM_DUMPOFFSET_0x7F
Incorrect Message Length Flow
2 stepsTester
ECU