Skip to content

UDS

This page teaches how to inspect observed diagnostic service exchanges without turning a request/response pair into a claim about the whole ECU.

Status Examples Runtime example Source posture
final-copy synthetic/passive available standards metadata plus public/tooling cross-checks

A Concrete Artifact

# synthetic observed UDS exchange after transport reassembly
observed tester -> ECU: 22 f1 90
observed ECU -> tester: 62 f1 90 12 34

Synthetic

Synthetic offline sample for explanation; not a real operational trace or live-system instruction.

Inspection Trap

UDS can make a captured diagnostic exchange feel authoritative because the service bytes have recognizable names. The exchange still only shows what an observed tester asked and how an observed ECU responded in that context.

The safer claim is interaction-relative: a passive observer can describe the service shape, positive or negative response shape, DID echo, payload bytes, and timing. DID names, value meaning, session/security context, and ECU-specific truth require source authority beyond the captured bytes.

Worked Decode

  1. Request byte 0x22 is treated as a ReadDataByIdentifier-shaped service in this teaching model.
  2. f1 90 is a DID-shaped value. DID catalogs are ECU-specific authority; the bytes alone do not name the value.
  3. Response byte 0x62 has the positive-response shape associated with request service 0x22.
  4. The response echoes DID f1 90, which supports pairing this response with the observed request.
  5. Response data bytes 12 34 are returned payload evidence. Their engineering meaning is outside the page artifact.

What The Evidence Supports

The artifact supports a diagnostic-exchange claim: an observed tester emitted a ReadDataByIdentifier-shaped request for DID 0xf190, and an observed ECU returned a positive-response-shaped payload that echoes the DID and includes two data bytes.

It also supports timing and pairing questions when the surrounding capture is available: response latency, missing responses, repeated requests, negative responses, and tester behavior can all matter to a passive observer.

What The Evidence Does Not Support

The artifact does not prove VIN, calibration identity, ECU health, regulatory state, security state, session capability, or physical machine truth. It does not prove that another ECU, another session, or another time would expose the same data.

The page does not teach readers to initiate sessions, bypass protected access, run routines, reset fault memory, program software, or interact with a real vehicle.

Field Layout / Anatomy

Element Shape Inspection meaning
Service ID 1 byte Application operation shape observed in the request.
Positive response service + 0x40 shape Response-shape evidence paired to the observed request.
Negative response 0x7f, service, NRC Refusal, timing, condition, session, or authorization evidence.
DID commonly 2 bytes Identifier whose name and value meaning are ECU/profile-specific.
Payload bytes service-specific Returned bytes whose interpretation requires DID/value authority.
Session/security state capture context May explain availability without proving unobserved ECU state.

Visual Model

sequenceDiagram participant Tester as Observed tester participant ECU as Observed ECU Tester->>ECU: 22 F1 90 ECU-->>Tester: 62 F1 90 12 34 Note over Tester,ECU: evidence of this exchange, not full ECU state
packet +8: "Service 0x62" +16: "DID 0xf190" +16: "Data 12 34"

Timing And Authority

UDS authority is stateful and source-bound. Sessions, security access, timing, routines, and ECU-specific DID catalogs shape what may appear in a captured exchange. A passive observer sees observed tester choice and observed ECU response, not unrequested state.

Semantic authority

DID catalogs, service definitions, session context, and ECU-specific documentation are semantic authority for UDS values. Public explainers can teach the shape, but they do not identify proprietary DIDs or prove physical truth.

Failure And Ambiguity

  • A DID catalog can be ECU-specific, stale, or mismatched to the observed ECU.
  • Negative responses may indicate timing, conditions, session state, or authorization, not simple absence.
  • Transport reassembly can hide application boundaries when ISO-TP is ignored.
  • Gateway or tester behavior can change what a passive observer sees.
  • A positive-response shape does not prove value freshness or engineering truth.

Python Model

The current package exposes a small observed-message model for passive UDS payload inspection:

"""Runnable UDS observed exchange example for the schoolbus binder."""

from schoolbus.protocols.uds import UdsExchange, UdsMessage

request = UdsMessage.from_hex("request", "22 f1 90")
response = UdsMessage.from_hex("response", "62 f1 90 12 34")
exchange = UdsExchange(request=request, response=response)

print(request.show_fields())
print(response.show_fields())
print(exchange.show_fields())
print(exchange.explain())

The model describes request-shaped, positive-response-shaped, and negative-response evidence without initiating sessions, naming proprietary DIDs, or providing diagnostic operation helpers.

Simplification

The observed request and response are synthetic. The page omits service tables, security-access workflows, programming sequences, routine-control details, response-pending timing, transport addressing variants, and operational vehicle procedures.

Source Notes

Teaching claim Source role Limit
UDS service and response shapes are application-layer diagnostic evidence. canonical metadata Not a reproduced ISO service table.
DID meaning is ECU/profile specific. de facto/proprietary format context The page does not claim proprietary DID authority.
Public UDS explainers can cross-check teaching shape. public explainer Not normative authority for edge cases or proprietary DIDs.
The request and response bytes are synthetic. synthetic teaching artifact Not operational capture evidence or ECU truth.
udsoncan and Scapy provide tooling context. tooling reference Not proof of every diagnostic stack's behavior.
Field Value
Governance tier Tier 1 Core Lab
Canonical source status yes
Public explainer status yes
Open-source tool status yes
Sample-data status none listed; use synthetic teaching artifacts
Confidence high
Citation specificity document-metadata-level

References

Public Sources

Project posture is aggregated in the protocol support policy, source policy, and project charter.