Service Interaction Protocol
Request Transfer Exit
The closer. 0x37 is the mandatory final step of every transfer: it finalizes the data and clears the ECU’s transfer state so a new 0x34/0x35 can begin. Forget it, and the next transfer fails with NRC 0x22.
Overview
“The RequestTransferExit service is used by the client to terminate a data transfer between client and server.”
On a real ECU, 0x37 also triggers verification (CRC/signature) and finalizes the flash write — and may answer NRC 0x78 (response pending) while it does so. This simulator keeps it minimal: it validates session, security, and an active transfer, then returns a bare 0x77 and clears the state.
Transfer Exit in Context
0x37 only makes sense as the end of a sequence. Step through closing a download and an upload, and the three ways the ECU rejects an exit.
Transfer Exit Runner
See 0x37 in context — closing a transfer, and the ways it gets rejected.
Finalize a flash download with 0x37, then reset to boot the new image.
Press Play or Step to begin the sequence.
Transfer Lifecycle
Drive the transfer state machine yourself. Notice that 0x37 is the only service that takes an active transfer back to IDLE — and that 0x36/0x37 in IDLE return NRC 0x24.
Transfer Lifecycle
Drive the transfer state machine. 0x37 is the only thing that takes an active transfer back to IDLE. (Assumes PROGRAMMING session + unlocked.)
Last Frame
Click a service to drive the transfer state machine.
Message Structure
◆ PROTOCOL ANATOMY
0x37 REQUEST TRANSFER EXIT
0x37 RESPONSE
Session & Security
SID 0x37 RequestTransferExit Matrix
Permissions by transfer exit scenario across diagnostic sessions. Select a row for details.
| Transfer Exit Scenario | DEFAULT 0x01 | EXTENDED 0x03 | PROGRAMMING 0x02 | Security |
|---|---|---|---|---|
| ✗ | ~ | ✓ | Level 3 Flash | |
| ✗ | ✓ | ✓ | — | |
| ✗ | ~ | ✓ | Level 3 Flash |
Hold the session and unlock through the whole transfer. A session change or a security timeout clears the transfer state, so a later 0x37 returns 0x70/0x33/0x24. Send TesterPresent (3E 80) during long transfers.
If security access has lapsed or is invalid before 0x37 is received, the transfer cannot finalize and returns NRC 0x33 (SecurityAccessDenied) or NRC 0x24 (RequestSequenceError).
ECU verifies payload integrity, finalizes non-volatile memory write commits, clears transfer state flags, and returns 0x77.
| From Session | To Session | Transition Command | Security State Effect |
|---|---|---|---|
| 0x02 Programming | 0x01 Default | Security state drops to LOCKED. Pending transfer marked invalid and discarded. | |
| Transfer Finalized | ECU Reset | System resets into application software or re-boots with updated firmware. |
Triggered when this service or requested resource requires an active security unlock that has not been granted.
Triggered during unlock attempts if the calculated key fails ECU cryptographic verification.
Enforced delay lockout if the maximum number of failed key submissions (typically 3) has been exceeded.
Service Dependencies
0x37 terminates active data block transfers, commits flash programming buffers, and releases memory resources. Select a node to inspect interactions.
Complete Transfer with Exit
Finalize a Flash Download
12 stepsNegative Response Codes
EXCEPTION_MATRIX_V3
Request contains extra unexpected parameters, or transferRequestParameterRecord is formatted incorrectly.
This negative response indicates a rejection while processing the Request Transfer Exit (SID 0x37) request. Verify preconditions, session levels, and message formatting per ISO 14229.
Troubleshooting Guide
Troubleshooting Guide
Click any issue to expand diagnosis and resolution.
What Happens on Exit
This simulator
- Checks session, security, and that a transfer is active
- Clears downloadInProgress / uploadInProgress
- Resets the block counter and returns a bare 0x77
Real ECUs additionally
- Verify a CRC/checksum or signature over the data
- Finalize the flash write and update metadata
- May answer NRC 0x78 (response pending) while verifying
- Return NRC 0x72 if verification fails
Timing Parameters
| Parameter | Typical Value | Context |
|---|---|---|
| P2 (Response) | 50 ms | Bare 0x77 in this simulator |
| P2* (Enhanced) | 5000 ms | Real ECUs use this while verifying (NRC 0x78) |
| S3 (Session Timeout) | 5000 ms | Hold with 3E 80 so the transfer state survives until 0x37 |
| Last 0x36 → 0x37 | 2–5 s typical | Real-ECU window before the transfer is auto-aborted |
ISO 14229-1 References
Standard: ISO 14229-1:2020, Section 14.5 — RequestTransferExit. Related: §14.2 RequestDownload (0x34), §14.3 RequestUpload (0x35), §14.4 TransferData (0x36).
Key points
- Request is 37 plus an optional transferRequestParameterRecord
- Positive response is 77 plus an optional transferResponseParameterRecord
- Must follow at least one TransferData (0x36) on an open 0x34/0x35 transfer
- This simulator emits only NRC 0x70, 0x33, and 0x24
Quick Reference & Best Practices
RequestTransferExit
the closerTransfer sequence
Request
Positive Response
- Service ID
- 0x37
- Positive Response
- 0x77
- Role
- Finalizes an active transfer
- Required session
- PROGRAMMING (0x02) only
- Security
- Must be unlocked (0x27)
- Precondition
- A download/upload must be active (else NRC 0x24)
- Parameter record
- ISO-optional; ignored by this simulator
- ISO ref
- ISO 14229-1:2020 §14.5