Skip to Content
UDS Simulator 2.0 Released

Docs baseline actions

Copy this page URLEdit page
Docs0x2E Write Data By Identifier

Service Interaction Protocol

Write Data By Identifier

0x2E
Protocol Identifier
The WriteDataByIdentifier service allows the client to write data record values to the server (ECU) by specifying specialized Data Identifiers (DIDs).
warning _entry

High Risk: Writing incorrect configuration or calibration data can lead to permanent ECU malfunction (“bricking”).

SID 0x2E Quick Reference

17 ready-to-send commands across 4 categories. Click any byte string to copy.

Showing all 17 commands

Write VIN (0xF190)Write a 17-byte VIN. Payload is printable ASCII; ECU stores to EEPROM.
2EF1905742413147303031323334353637
Session: EXTENDED (0x03)NRCs: 0x13, 0x22, 0x33, 0x72

Length must be exactly 17 bytes — fewer returns NRC 0x13.

Write Serial (0xF18C)Write serial number. Often single-shot (OTP) on production ECUs.
2EF18C534E313233
Session: EXTENDED (0x03)NRCs: 0x13, 0x22, 0x31, 0x33

Many ECUs treat serial as OTP — only one successful write per lifetime.

Write Calibration (RAM, 0xFD00)Write to a RAM calibration DID. Lost on power cycle but immediate.
2EFD0012345678
Session: EXTENDED (0x03)NRCs: 0x13, 0x22, 0x33

Useful during tuning — try values without committing to EEPROM.

Write Calibration (EEPROM, 0xFD01)Write to a persistent calibration DID. Survives power cycle.
2EFD0112345678
Session: EXTENDED (0x03)NRCs: 0x13, 0x22, 0x33, 0x72

May trigger 100–500 ms EEPROM commit. Send 0x3E during the wait.

Write Network Config (0xF010)Update network configuration block (CAN ID, baud, gateway routing).
2EF01001020304
Session: EXTENDED (0x03)NRCs: 0x13, 0x22, 0x33, 0x72

Most ECUs require reset (0x11 0x01) afterward to apply new config.

Verify VIN (read back)Read DID 0xF190 with SID 0x22 immediately after writing. Compare byte-for-byte.
22F190
Session: ANY (read works in DEFAULT)NRCs: 0x31

Always pair every 0x2E with a 0x22 read-back. Trust nothing until confirmed.

Verify After ResetAfter ECU reset, re-read DID to confirm value persisted out of RAM into EEPROM.
22F190
Session: ANYNRCs: 0x31

A write that succeeds but doesn't survive reset means the EEPROM commit failed silently.

Read Before WriteRead current value before writing. Skip the write if already equal — reduces EEPROM wear.
22F190
Session: ANYNRCs: 0x31

Conditional write pattern. EEPROM cells have finite write endurance (~100k cycles).

Enter EXTENDED SessionRequired first step. SID 0x2E is unavailable in DEFAULT (returns NRC 0x7F).
1003
Session: ANYNRCs: 0x12, 0x22

Response carries P2 / P2* timing — note for keepalive cadence.

Enter PROGRAMMING SessionFor OTP DIDs and flash-bound writes. Most ECUs gate by this.
1002
Session: ANYNRCs: 0x12, 0x22

PROGRAMMING is more permissive but more dangerous. Tool must keep voltage stable.

Request Security SeedGet seed to unlock. Required for protected DIDs (VIN, serial, calibration).
2701
Session: EXTENDED (0x03)NRCs: 0x12, 0x22, 0x37

Pair with 27 02 [key]. Unlock survives until session change or re-lock.

Send Security KeySend computed key. Append the calculated key bytes after the subfunction.
2702
Session: EXTENDED (0x03)NRCs: 0x35, 0x36

Wrong key 3× often triggers a multi-minute delay timer — implement carefully.

TesterPresent KeepaliveSend every 3–4 seconds during long write sequences. Suppressed response.
3E80
Session: EXTENDED (0x03)

EEPROM commits can take 500 ms — without 0x3E the session may time out mid-commit.

Confirm Active SessionRead DID 0xF186 to verify session. Diagnostic pre-check before 0x2E.
22F186
Session: ANYNRCs: 0x31

Response byte 4 = session ID: 0x01 DEFAULT, 0x02 PROGRAMMING, 0x03 EXTENDED.

ECU Reset (commit + verify)Hard reset after critical writes. Forces EEPROM flush and re-init from persistent state.
1101
Session: EXTENDED (0x03)NRCs: 0x22, 0x33

Always re-read DIDs after reset to confirm persistence.

NRC 0x33 RecoveryOn NRC 0x33 (securityAccessDenied): re-unlock via seed/key, then retry the write.
2701
Session: EXTENDED (0x03)NRCs: 0x33

Common cause: session changed silently. Re-check session before re-unlocking.

Return to DEFAULTClean exit. Returns ECU to DEFAULT, drops security, releases any held resources.
1001
Session: ANY

Always end a write session explicitly. Don't rely on S3 timeout.

Write Best Practices

Overview

ISO 14229-1

“The WriteDataByIdentifier service is used by the client to write a data record value to a server, specified by a data identifier.”

Write Sequence & NVM Persistence
Click to Enlarge

How UDS Write operations move data from the Tester into Permanent ECU Storage.

Service Dependencies

SID 0x2E sits in a small graph of co-dependent services. Click any orbital node to see what it does, the hex you’d send, and how it shapes a 0x2E flow.

Dependency Graph

Click any node to see the relationship, hex example, and where it fits in a 0x2E flow.

Central service

0x2EWriteDataByIdentifier

The service this page documents

Writes data to a specific DID. Positive response (0x6E) means "request accepted" — not "value persisted." Always pair with 0x22 to verify.

Example
2E F1 90 …

Write VIN (0xF190) with 17-byte ASCII payload

PrerequisiteRuntimeVerifyPersist

Interactions & Prerequisites

Required State

Session0x03 (Extended) or 0x02 (Programming)
SecurityUnlocked Level 1+ (DID-specific)
Cannot be inDEFAULT (0x01)

Critical Best Practices

  • ✓ Always follow Write (0x2E) with Read (0x22) to verify
  • ✓ Send TesterPresent (0x3E) every 2-3s for long operations
  • ✓ Wait 100-500ms for EEPROM writes to complete
  • ✓ Reset ECU after critical writes to persist changes

Write Permission Levels

Level 1: Public Write (Rare)

Session: EXTENDED | Security: NOT required | Risk: Low

Example: Diagnostic test counters, temporary flags

Level 2: Standard Security (Common)

Session: EXTENDED | Security: Level 1 | Risk: Medium

Example: Calibration parameters, network configuration

Level 3: High Security (Typical)

Session: EXTENDED or PROGRAMMING | Security: High Level | Risk: High

Example: VIN, serial numbers, critical parameters

Level 4: OTP (One-Time Programmable)

Session: PROGRAMMING | Security: Manufacturer key | Risk: Critical

Example: ECU serial number (write once only in lifetime)

Memory Write Types

Three storage classes, three very different timing profiles. The ECU’s response latency tells you nothing about whether the value persisted — only the storage class does.

Memory Write Timing

Pick a storage class to see the request-to-persistence timeline. Hover any phase for detail.

Timeline

~800 ms total
0 ms400 ms800 ms
Ack latency
<50 ms
Commit latency
100–500 ms (background)
Persistence
Across power cycles
When to use

Configuration and identity data (VIN, serial, calibration) that must survive ignition cycles.

  • Wait the commit window before issuing read-back — early reads may return stale RAM mirror.
  • Voltage must stay ≥11 V during commit. Sags cause NRC 0x72 generalProgrammingFailure.
  • EEPROM cells have finite endurance (~100k cycles). Use conditional writes to extend life.

Writable DIDs

Writable DID Explorer

14 DIDs across 5 categories. Click any row to see length, session, security, storage class, and example bytes.

DIDNameWrite
0xF190VIN
0xF18CECU Serial Number
0xF18AMfg Date
0xF110ECU Hardware Serial
0xFD00Calibration (RAM)
0xFD01Calibration (EEPROM)
0x0100Calibration Bank A
0xF010Network Config
0xF015Subnet Address
0xF187ECU Part Number
0xF188Hardware Version
0xF195Software Version
0x0105Test Counter
0x0200Diagnostic Flag

14 of 14 DIDs shown. Click any row for the full spec + example hex.

Message Format

Tap any byte to see what it means, the valid value range, and the ISO 14229 clause that defines it. Switch presets to compare write requests, positive responses, and NRC shapes.

Frame · Write VIN — 0xF190 with 17-byte ASCII payload

Reads as: SID 0x2E · DID 0xF190 (VIN) · 17 bytes "WBA1G001234567" (ASCII).

Hex →2E F1 90 57 42 41 …
SIDDIDData payloadNRC

SID 0x2E vs SID 0x22 Comparison

Aspect
SID 0x22 (Read)
SID 0x2E (Write)
OperationRead data from ECUWrite data to ECU
SessionDEFAULT (most)EXTENDED/PROGRAMMING
SecurityRarely requiredUsually required
Multiple DIDs✅ Supported❌ One DID only
Request SID0x220x2E
Response SID0x620x6E
Risk LevelLow (read-only)High (modifies ECU)

Session & Security Requirements

SID 0x2E has two independent prerequisites: an active diagnostic session AND, for most DIDs, a successful security unlock. The matrix below combines both. Click any cell to see the exact request, response, and NRC code; toggle security to watch protected and OTP cells flip.

Security state

Toggle the unlock state to watch protected and OTP cells flip between 🔒 and ✅.

Session ↓ / DID class →
Public DIDs (rare)
Diagnostic counters and temporary flags — no auth required
Protected (common)
Calibration, network config, vehicle identifiers — Level 1 unlock
OTP / High security
One-time programmable or manufacturer-locked — PROGRAMMING + high level
0x01
DEFAULT
Default Session
0x03
EXTENDED
Extended Session
0x02
PROG
Programming Session
0x04
SAFETY
Safety System
AllowedNeeds unlockNRCManufacturer-specific

Click any cell to see the exact request, response, and NRC code.

TX/RX Examples

tip _entry

Want to see these in motion? The Multi-Service Workflows section below plays through Write+Verify, Security Denied + Recovery, Batch Writes + Keepalive, and the NRC 0x72 voltage-failure scenario step-by-step on a ladder diagram.

Request Processing Pipeline

Nine steps inside the ECU between byte 0 of the request and the positive response. Each gate has a specific NRC if it fails — click any step to see which.

ECU Request Processing Pipeline

Nine steps from byte 0 to positive response. Each gate has a specific NRC if validation fails — click a step to see which.

Step 1 · Parse

Parse DID

Extract the 2-byte DID from request bytes [1:2]. Big-endian — high byte first.

No reject path

Pure extraction — no failure mode at this step.

Hex hint
Bytes 1-2 → 0xF190
ParseValidateCommitRespond

Multi-Service Workflows

Four end-to-end scenarios played as a ladder diagram. Tester messages on the left, ECU on the right; verify steps are the cyan rows, system events are amber. Use the speed control to step through slowly or review at 2×.

Goal · Enter EXTENDED, unlock security, write VIN, verify with 0x22 read-back.
Session
EXTENDED
Security
L1 unlocked
Outcome
VIN persisted to EEPROM
Press ▶ Play to walk through this workflow

UML Sequence Diagrams

Configuration Write & Verification

10 steps
Tester
ECU

ISO 14229-1 Compliance

ISO 14229-1:2020 — Road vehicles — Unified diagnostic services (UDS) — Part 1: Application layer

Section 11.5: WriteDataByIdentifier (0x2E) — Mandatory requirements for all UDS-compliant ECUs

Mandatory Requirements

  • ✓ Support at least one writable DID
  • ✓ Validate message length matches DID specification
  • ✓ Enforce session requirements (not in DEFAULT)
  • ✓ Enforce security requirements for protected DIDs
  • ✓ Return correct NRCs (0x13, 0x22, 0x31, 0x33, 0x72, 0x7F)
  • ✓ Echo DID in positive response (0x6E)
  • ✓ Do NOT include data record in response

Manufacturer-Specific (Optional)

  • ○ Number and types of writable DIDs
  • ○ DID-specific data validation rules
  • ○ Write operation timing (immediate vs deferred)
  • ○ Persistent storage mechanism (EEPROM, Flash)
  • ○ Write verification procedures and retry logic

Negative Response Codes (NRCs)

EXCEPTION_MATRIX_V3

Diagnostic_Context

Data payload size does not match target DID definition. Example: VIN expects 17 bytes, but only 10 bytes sent.

Technical_Significance & Trigger

This negative response indicates a failure in processing the WriteDataByIdentifier request. Ensure all pre-conditions and active sessions match the requirements defined by ISO 14229.

Execution_Trace
Tester → ECU
Only 3 bytes (expects 17)
Write (2E F1 90 57 42 41)
ECU → Tester
Negative Response (7F 2E 13)

Troubleshooting Common Issues

Symptom Decision Tree

Two or three questions narrow you to a concrete fix. The full NRC reference is in the appendix below.

What's the symptom?

Reference appendix

Complete NRC-by-NRC catalogue. Use the decision tree above for guided diagnosis; come here for lookup.