Service Interaction Protocol
Read Data By Periodic Identifier
SID 0x2A Quick Reference
16 ready-to-send commands across 4 categories. Click any byte string to copy.
Showing all 16 commands
transmissionMode 0x01 = slow. Saves bus bandwidth on inert signals.
transmissionMode 0x02 = medium. Most common rate in fleet logging.
transmissionMode 0x03 = fast. Watch scheduler capacity — fast lane fills first.
Bytes 3+ are additional PDIDs. Verify scheduler depth before bulk subscribe.
transmissionMode 0x04 = stopSending. Preferred clean exit.
Append PDID list to mode 0x04 for targeted stop. Useful in multi-rate sessions.
Side-effect stop. Useful when explicit 2A 04 cannot reach the ECU.
Response carries P2 / P2* timing — note these for keepalive cadence.
Pair with 27 02 [key]. Skip for public PDIDs (RPM, speed, temp).
Successful unlock persists until session change or explicit re-lock.
Without this, EXTENDED session expires after ~5 s and all streams stop silently.
Response byte 4 = session ID: 0x01 DEFAULT, 0x03 EXTENDED.
Reset clears the entire scheduler. There is no resume — all subscriptions are gone.
Typical fast-lane capacity 5–10 entries. Use for ECU profiling, not production.
Equivalent of "turn it off and on again" for the periodic scheduler.
Replace [pdid] with a low-priority active PDID. Then resend the original request.
Streaming Best Practices
Overview
“The ReadDataByPeriodicIdentifier service is used by the client to request periodic transmission of data record values of data identifiers from the server.”
Live Stream
Pick a transmission rate and watch the ECU push periodic responses in real time. This is what 0x2A actually feels like on the wire — every other section below explains why.
Transmission Mode (Byte 1)
Select a rate and press Start Streaming to see live periodic responses
One-Shot vs Periodic
SID 0x22 ReadDataByIdentifier returns one value per request. SID 0x2A sets up a subscription — the ECU autonomously pushes data until you stop it. The contrast is best seen as a timing diagram. Press the request button and watch.
One-Shot vs Periodic
Same request, two services. Watch how 0x22 stops after one response while 0x2A keeps streaming.
Notice: 0x22 emits exactly one 0x62 response and stops. 0x2A keeps emitting 0x6A frames at the chosen cadence until the tester sends 2A 04 or the session ends.
Transmission Modes
The first parameter defines how fast the ECU should sample and send the data.
Mode | Name | Typical Frequency | Use Case |
|---|---|---|---|
| 0x01 | Slow Rate | 1-2 Hz | Temp, Battery Level |
| 0x02 | Medium Rate | 5-10 Hz | Vehicle Speed, O2 Sensors |
| 0x03 | Fast Rate | 20-100 Hz | Crank Sensor, Torque |
| 0x04 | Stop Sending | N/A | Explicit termination |
Message Format
Tap any byte to see what it means, the valid value range, and the ISO 14229 clause that defines it. Use the preset buttons to swap between common request and response shapes.
Reads as: SID 0x2A · mode 0x02 (medium) · PDID 0x01 (RPM)
Examples
Start RPM Streaming (Medium Rate)
Request
2A 02 01> Start PDID 0x01 at Medium Rate
Periodic #1
6A 01 0B B8> RPM = 3000 (0x0BB8)
Periodic #2
6A 01 0B BA> RPM = 3002 (sent ~100ms later)
Stop Streaming
Request
2A 04 01> Stop PDID 0x01
Response
6A> Confirmation: Stopped
Want to see these in motion? Scroll back to the live stream in the Overview — the same hex frames render there in real time.
Negative Response Codes
EXCEPTION_MATRIX_V3
Transmission mode (0x01-0x04) is not supported by this ECU.
This negative response indicates a failure in processing the Read Data Periodic request. Ensure all pre-conditions and active sessions match the requirements defined by ISO 14229.
Session & Security Requirements
SID 0x2A has two independent prerequisites: an active diagnostic session AND, for some PDIDs, 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 cells flip.
Security state
Toggle the unlock state to watch protected cells flip between 🔒 and ✅.
| Session ↓ / PDID → | Public PDIDs Engine RPM, vehicle speed, coolant temperature — no auth required | Security-Protected Calibration data, internal sensors — gated by SID 0x27 unlock | Manufacturer-Specific OEM-private PDIDs (range typically 0x80–0xFF) — ODX/CDD defines availability |
|---|---|---|---|
0x01 DEFAULT Default Session | |||
0x02 PROG Programming Session | |||
0x03 EXTENDED Extended Session | |||
0x04 SAFETY Safety System |
Click any cell to see the exact request, response, and NRC code.
Service Dependencies
SID 0x2A 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 0x2A flow.
Dependency Graph
Click any node to see the relationship, hex example, and where it fits in a 0x2A flow.
0x2AReadDataByPeriodicIdentifier
The service this page documents
Subscribes to one or more PDIDs at a fixed transmission rate. ECU autonomously emits 0x6A frames until stopped, the session changes, the ECU resets, or P2* expires.
2A 02 01Start PDID 0x01 (RPM) at medium rate (~5 Hz)
Complete Workflows
Four end-to-end scenarios played as a ladder diagram. Tester messages on the left, ECU on the right; periodic responses are the cyan rows. Use the speed control for slow walk-through or fast review.
Rate Selection Guide
Engineers don’t pick rates — they pick signals. Pick what you’re monitoring, then see whether your chosen rate aliases the signal, wastes bandwidth, or fits cleanly. The recommended rate is starred.
Rate Advisor
Pick a signal first, then a rate. Watch the oscilloscope trace below to see if you'd actually capture the real curve.
Aliased — wrong rate
2A 02 01Sampling at 5 Hz is below the Nyquist limit of 10 Hz for this signal. The trace below will show false oscillation patterns instead of the real waveform.
Medium rate (~5 Hz) tracks gear-shift transients. Fast rate is overkill unless diagnosing misfire.
Oscilloscope
Signal bandwidth: 5 Hz · Sampling at: 5 Hz · Nyquist needs ≥ 10 Hz
Scheduler Behavior
The ECU maintains an internal scheduler with separate queues per transmission rate. Add PDIDs, slide capacity to match your target ECU, and trigger events to observe the auto-stop rules in motion.
Scheduler Visualizer
Three queues, three rates. Add PDIDs, fire ECU events, watch the bus traffic update live.
Trigger ECU Event
Bus Timeline (last 8 s)
Capacity rules
- • Typically 5–10 entries per rate (manufacturer-specific)
- • Usually 15–20 simultaneous PDIDs total
- • Overflow → NRC 0x72 (generalProgrammingFailure)
Auto-stop triggers
- • Session change → all queues drain
- • Security re-lock → only protected PDIDs drain
- • ECU reset (0x11) → scheduler wiped, no resume
- • Mode 0x04 → clean tester-initiated stop
- • P2* timeout (no 0x3E 80) → silent stop, no NRC
Best Practices
🛠️ For Implementation
- ✓ Validate all 6 message formats before processing
- ✓ Implement 3 separate scheduler queues by rate
- ✓ Use timer-based transmission (not polling loops)
- ✓ Stop ALL periodic on session or security change
- ✓ Return specific NRC for each validation failure
- ✓ Support at least 10 simultaneous PDIDs
- ✓ Interleave responses when multiple rates active
🧪 For Testing
- ✓ Test basic single PDID request
- ✓ Test multiple PDIDs at different rates
- ✓ Verify session change stops transmission
- ✓ Test security-protected PDIDs
- ✓ Trigger scheduler overflow (NRC 0x72)
- ✓ Verify timing tolerance (±10% acceptable)
- ✓ Test recovery after ECU reset
Troubleshooting
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.