Skip to Content
UDS Simulator 2.0 Released
Docs0x35 Request Upload

Service Interaction Protocol

Request Upload

0x35
Protocol Identifier
The RequestUpload service initiates a data transfer sequence FROM the ECU TO the tester. This service prepares the ECU to send firmware, calibration data, or diagnostic logs.
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

INITIATION
First stage of the Upload process. ECU prepares to push data out to the client.

RETRIEVAL

PULL_MODEL
ECU calculates how much data can fit in each response block during the 0x36 phase.

SESSION_LOCK

SECURED
Available in Extended (0x03) or Programming (0x02) after Security Access.

Overview

ISO 14229-1

RequestUpload is the counterpart to RequestDownload (0x34). It initiates reading data FROM the ECU. The sequence is: RequestUpload (0x35) → TransferData (0x36) → RequestTransferExit (0x37). The ECU responds with the maximum block size it will send per transfer.

Upload Initiation Sequence
Click to Enlarge

Preparing the ECU to push internal data or firmware images to the tester.

Default Behavior

By default, internal ECU memory is protected from external reading to safeguard IP and security keys. Service 0x35 is typically only available in Extended (0x03) or Programming (0x02) sessions after a successful Security Access (0x27) unlock. A valid request transitions the ECU into an “Uploading” state, freezing the target data in memory to ensure consistency during the sequence.

Interactions with Other SIDs

Prerequisites & Dependencies

  • 0x10Programming Session (0x02) or Extended Session (0x03)
  • 0x27Security Access often required
  • 0x36TransferData retrieves the actual data blocks
  • 0x37RequestTransferExit completes the sequence

Protocol Anatomy (Read Calibration)

◆ PROTOCOL ANATOMY

View
REQUEST_TX

0x35 REQUEST UPLOAD

RESPONSE_RX

0x35 RESPONSE

TX/RX Examples

Request Upload 4KB from 0x00100000

tx_packet

Request

35 00 44 00 10 00 00 00 00 10 00

> Upload 4096 bytes from flash

rx_packet

Response

75 20 02 00

> MaxBlockLength=512 bytes

ECU ready to send data in 512-byte blocks

Read Calibration Data

tx_packet

Request

35 00 44 00 20 00 00 00 00 01 00

> Upload 256 bytes of calibration

rx_packet

Response

75 20 01 00

> MaxBlockLength=256 bytes

Entire calibration fits in one block

UML Sequence Diagrams

Complete Upload Sequence

Read Firmware from ECU

12 steps
Tester
ECU

Anticipated Behavior

info _entry

TransferData Direction: Unlike RequestDownload where the tester sends data in 0x36, with RequestUpload the ECU sends data in the 0x36 response.

warning _entry

Block Sequence: The tester sends sequential block numbers (01, 02, 03…) in TransferData requests. The ECU responds with the corresponding data block.

Negative Response Codes (NRCs)

Error_Catalog

Negative Response Codes

THREAT_LEVEL2 HIGH3 MEDIUM5 NRCs TOTAL
ISO_14229_ANNEX_ANRC_ENGINE_V2