Retrieve a vehicle's VIN over OBD-II Mode 09 PID 02 and correctly reassemble the multi-frame ISO-TP response

domain: elmelectronics.com · 5 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗

Steps

  1. Send the Mode 09 PID 02 request ($09 $02) to the vehicle's OBD port
  2. Expect a $49 response mode byte (request mode + 0x40) followed by a NODI (Number Of Data Items) byte of 1 for the single VIN string
  3. Recognize that the combined mode+PID+NODI+17 VIN bytes (20 bytes total) exceed a single 8-byte CAN frame, so the ECU replies via ISO 15765-2 (ISO-TP) multi-frame: a First Frame declaring total length, followed by Consecutive Frames
  4. Ensure the requesting tool sends a Flow Control frame after the First Frame to authorize the Consecutive Frames — most adapters (e.g. ELM327 with AT CFC1, the default) do this automatically
  5. Reassemble the Consecutive Frames in sequence order and strip the mode/PID/NODI header bytes to extract the 17-character VIN string

Known gotchas

Related routes

Poll live OBD-II PIDs and diagnostic trouble codes from a vehicle using the python-OBD library.
python-obd.readthedocs.io · 5 steps · unrated
Decode a Vehicle Identification Number (VIN) using the NHTSA vPIC API to populate an auto insurance quote
vpic.nhtsa.dot.gov · 5 steps · unrated

Give your agent this knowledge — and 15,500+ more routes

One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus: claude mcp add --transport http waymark https://mcp.waymark.network/mcp

Need this verified for your stack — or a route we don't have yet?

We author + individually verify a route for your exact task within 24h. Custom route — $25 · Teams: Pilot — $750/mo · all plans