Skip to Content
UDS Simulator 2.0 Released

Docs baseline actions

Copy this page URLEdit page
Docs0x36 Transfer Data

Service Interaction Protocol

Transfer Data

0x36
Protocol Identifier
The TransferData service transfers data blocks between the tester and ECU as part of a download or upload sequence initiated by RequestDownload (0x34) or RequestUpload (0x35).
info _entry

The data mover. 0x36 is the middle of the transfer chain: it carries the actual bytes, one block at a time, each tagged with a block-sequence-counter. Direction depends on what opened the transfer — 0x34 (download) puts data in the request, 0x35 (upload) puts it in the response.

0x36

TransferData

the middle

Transfer sequence

0x34/35Request Up/Download
0x36TransferData
0x37RequestTransferExit

Request

36
SID
BSC
blockSequenceCounter
data…
data (download only)

Positive Response

76
Response SID
BSC
echoed counter
data…
data (upload only)
Download (after 0x34)

Tester puts data in the request; ECU acks with 76 BSC.

Upload (after 0x35)

Tester sends only the BSC; ECU returns 76 BSC + data.

Service ID
0x36
Positive Response
0x76
Role
Moves the data blocks
Required session
PROGRAMMING or EXTENDED
Security
Must be unlocked (0x27)
Precondition
A 0x34/0x35 transfer must be active (else 0x24)
Block counter
Starts 0x01, wraps 0xFF → 0x01 (this sim)
ISO ref
ISO 14229-1:2020 §14.4

Overview

ISO 14229-1

“The TransferData service is used by the client to transfer data to (download) or from (upload) the server.”

info _entry

Each 0x36 request carries a blockSequenceCounter that must match what the ECU expects — that is how the ECU detects a lost or duplicated block. The block size is capped by the maxNumberOfBlockLength from the 0x34/0x35 response.

Transfer in Context

Step through blocks flowing in both directions, plus the errors you hit most: a wrong counter (0x73), no active transfer (0x24), and a voltage drop (0x93).

Transfer Runner

Watch blocks flow — both directions, plus the common errors and how to recover.

Goal

After 0x34, push the firmware in blocks and close with 0x37.

SessionPROGRAMMING
Securityunlocked
Outcome2 KB written in 512-byte blocks
0 / 12

Press Play or Step to begin the sequence.

Block Sequence Counter

Drive the counter yourself. Watch it advance with each accepted block, wrap from 0xFF back to 0x01, and reject a wrong value with NRC 0x73.

Block Sequence Counter

The BSC is the heart of 0x36. Send blocks to watch it advance and wrap, and send a wrong one to see NRC 0x73. (Assumes an active transfer, PROGRAMMING + unlocked.)

Direction
Next expected BSC
0x01
Blocks accepted
0

Last Frame

Send a block to begin.

warning _entry

Wrap behavior: in this simulator the counter wraps 0xFF → 0x01 (it never uses 0x00). When retrying a failed block, resend the same counter — do not advance it.

Message Format

The request and response shapes differ by direction. Pick a frame and inspect each byte.

Message Frame Breakdown

Download puts data in the request; upload puts it in the response. Pick a frame, then focus a byte.

36SID

TransferData service identifier.

Session & Security

Requirement
Value
If not met
SessionPROGRAMMING (0x02) or EXTENDED (0x03)NRC 0x7F (serviceNotSupportedInActiveSession)
SecurityUnlocked, still validNRC 0x33
Active transferA 0x34/0x35 must be openNRC 0x24 (requestSequenceError)
Block counterMatches the expected BSCNRC 0x73 (wrongBlockSequenceCounter)
Block size≤ maxNumberOfBlockLengthNRC 0x13; download over total size → 0x31
info _entry

Keep the session alive: send TesterPresent (3E 80) every 2–3 seconds during a long transfer. If the S3 timer (≈5s) expires, the transfer state is lost and the next 0x36 returns 0x7F/0x24.

Service Dependencies

Service Dependencies

0x36 carries the payload between 0x34/0x35 and 0x37. Select a node to see how it relates.

0x360x100x270x340x350x370x3E0x31
0x34RequestDownloadOpens transfer
Typical request
34 …

Opens a write transfer; sets the BSC to 0x01 and the maxBlockLength.

Multi-Block Sequences

Download — 2 KB in 512-byte blocks

Write Firmware to ECU

10 steps
Tester
ECU

Upload — ECU returns data in each response

Read Data from ECU

8 steps
Tester
ECU

Negative Response Codes

NRC Decoder — SID 0x36

This simulator emits 0x7F, 0x33, 0x24, 0x13, 0x73, 0x31, and (when voltage is configured) 0x92/0x93. Click any card for details.

0x7F
0x33
0x24
0x13
0x73
0x31
0x92/0x93

Order the simulator checks errors — session → security → active-transfer → length → BSC → oversize → voltage.

Troubleshooting Guide

Troubleshooting Guide

Click any issue to expand diagnosis and resolution.

Timing Parameters

Parameter
Typical Value
Context
P2 (Response)50–150 msPer-block acknowledgement
P2* (Enhanced)5000 msReal ECUs use this during a flash write (may answer NRC 0x78)
S3 (Session Timeout)5000 msHold with 3E 80 so the transfer state survives between blocks
Inter-block delay0–50 msGap between consecutive blocks

ISO 14229-1 References

info _entry

Standard: ISO 14229-1:2020, Section 14.4 — TransferData. Related: §14.2 RequestDownload (0x34), §14.3 RequestUpload (0x35), §14.5 RequestTransferExit (0x37).

Key points

  • Request: 36 + blockSequenceCounter + data (download only)
  • Response: 76 + blockSequenceCounter + data (upload only)
  • The BSC starts at 0x01 and, in this simulator, wraps 0xFF → 0x01
  • This simulator emits NRC 0x7F, 0x33, 0x24, 0x13, 0x73, 0x31, and (when voltage is configured) 0x92/0x93
  • 0x71 (suspend), 0x72 (programming failure) and 0x78 (response pending) are ISO-defined real-ECU behaviors, not emitted here