Skip to Content
UDS Simulator 2.0 Released
Docs0x37 Request Transfer Exit

Service Interaction Protocol

Transfer Exit

0x37
Protocol Identifier
The RequestTransferExit service terminates a data transfer sequence initiated by RequestDownload (0x34) or RequestUpload (0x35).
A Service Identifier (SID) is a single-byte value (0x00–0xFF) in position 0 of every UDS request frame. It specifies which diagnostic operation the client wishes the ECU to execute. The positive response echoes the SID with the high bit set (SID + 0x40).

FLOW_TYPE

TERMINATION
Final stage of the Transfer process. Releases memory locks and finalizes the operation.

POST_PROCESS

VERIFICATION
Often triggers a final checksum or signature check before returning a positive response.

NEXT_STATE

IDLE_PRG
ECU returns to an idle programming state, ready for another download or a reset.

Overview

ISO 14229-1

RequestTransferExit is the final step in the download/upload sequence. When the ECU receives this request, it verifies the transferred data (checksum, signature), finalizes the write operation, and releases the transfer state so new transfers can begin.

Transfer Exit Sequence
Click to Enlarge

Finalizing the transfer and triggering data integrity verification.

Default Behavior

By default, the ECU remains in a “Transferring” state once a download or upload is initiated. Incoming Transfer Data (0x36) calls will continue to be accepted until service 0x37 is received. A successful Exit command triggers the final integrity check (CRC/Sum) and releases the ECU to resume normal diagnostics or prepare for a Reset (0x11).

Interactions with Other SIDs

Prerequisites & Dependencies

  • 0x34/35A download or upload must be in progress
  • 0x36All TransferData blocks should be sent first
  • 0x11ECU Reset often follows to apply new firmware
  • 0x31RoutineControl may verify the downloaded data

Protocol Anatomy (Exit Request)

◆ PROTOCOL ANATOMY

View
REQUEST_TX

0x37 TRANSFER EXIT

RESPONSE_RX

0x37 RESPONSE

TX/RX Examples

Successful Transfer Exit

tx_packet

Request

37

> End transfer

rx_packet

Response

77

> Transfer complete

Data verified and finalized successfully

Exit with Checksum Parameter

tx_packet

Request

37 AB CD EF 12

> Exit with checksum

rx_packet

Response

77 00

> Checksum verified

ECU validated the provided checksum

No Active Transfer

tx_packet

Request

37

> Without prior 0x34/0x35

rx_packet

Error Response

7F 37 24

> Request sequence error

Error
No download or upload is in progress

Verification Failed

tx_packet

Request

37

> After incomplete transfer

rx_packet

Error Response

7F 37 72

> General programming failure

Error
Data verification failed - transfer incomplete or corrupted

UML Sequence Diagrams

Complete Download with Exit

Finalize Flash Programming

7 steps
Tester
ECU

What Happens on Exit

ECU Actions on Transfer Exit

  1. Validate Data: Verify checksum/CRC of transferred data
  2. Finalize Write: Complete any pending flash operations
  3. Update Metadata: Store programming date, version info
  4. Release State: Mark transfer as complete, allow new transfers
  5. Optional Signature: Verify cryptographic signature (secure boot)

Anticipated Behavior

info _entry

Response Pending: Verification can take time. The ECU may send multiple NRC 0x78 responses while validating checksums and finalizing flash writes.

warning _entry

Always Exit: Even if aborting a transfer, send RequestTransferExit to release the ECU’s transfer state. Otherwise, new transfers will fail.

tip _entry

Post-Exit Reset: After successful download, an ECU Reset (0x11) is typically required to boot the new firmware.

Negative Response Codes (NRCs)

Error_Catalog

Negative Response Codes

THREAT_LEVEL4 HIGH1 MEDIUM5 NRCs TOTAL
ISO_14229_ANNEX_ANRC_ENGINE_V2
info _entry

Note on NRC 0x78: The ECU may send 7F 37 78 (Response Pending) while verifying checksums and finalizing writes. This is not an error.