UDS Mode 22: what manufacturers hide beyond the OBD-II standard
What UDS (Unified Diagnostic Services) ISO 14229 is, difference vs OBD-II, how Mode 22 reads DPF soot mass, VGT position, TPMS voltage — and why 90% of the "interesting stuff" lives here.
Standard OBD-II (SAE J1979) is Mode 01 live parameters, Mode 03 DTCs, Mode 09 VIN, a few others. Total ~200 standard PIDs, many of which show nothing specific to your car. All the stuff you actually care about — AdBlue pressure, VGT position, TPMS sensor battery — lives beyond OBD-II, in UDS (Unified Diagnostic Services), ISO 14229 standard. Below: brief architecture and why 90% of the “interesting” stuff is here.
What UDS is
UDS = Unified Diagnostic Services (ISO 14229). Designed as a single diagnostic protocol for every EU/US manufacturer after 2007. Used inside the car between service tool and ECU (over CAN, LIN, Ethernet).
UDS has its own set of “services” (analog of modes in OBD-II):
- $10 — DiagnosticSessionControl (switch to service session)
- $22 — ReadDataByIdentifier (read any parameter by 16-bit ID)
- $27 — SecurityAccess (unlock protected functions)
- $2E — WriteDataByIdentifier (write)
- $31 — RoutineControl (run diagnostic routines)
- $34-$37 — Upload / Download (ECU reflash)
Key for reading data — $22 (ReadDataByIdentifier).
OBD-II Mode 22 — bridge to UDS
OBD-II is limited: Mode 01 covers only 200+ standard PIDs (1-byte identifiers). To access 65 535 manufacturer IDs — you use OBD-II Mode 22, which is effectively a proxy to UDS $22.
Request:
22 F1 90 ← "read ID 0xF190"
Response:
62 F1 90 W V W Z Z Z 1 K Z 9 W 1 2 3 4 5 6 ← VIN
Why 90% of the “interesting” lives in Mode 22
Example 1. DPF (diesel)
Standard OBD-II only shows P2002 “Filter efficiency below threshold”. Mode 22 (for VW):
- ID
0x22A6— Soot mass calculated (28.3 g) - ID
0x22A7— Soot mass measured (31.5 g) - ID
0x22A8— Regeneration count (145) - ID
0x22B5— DPF differential pressure (24 mbar) - ID
0x22F4— Time since last regen (34 hours)
That’s what standard OBD-II won’t see.
Example 2. Turbo (VGT position)
Standard: MAP and boost. Mode 22 (for BMW N57):
- ID
0x4A31— VGT position (%) - ID
0x4A32— VGT target position (%) - ID
0x4A50— Waste gate duty cycle - ID
0x4B00— Turbocharger inlet temperature
All the parameters needed for turbo diagnostics.
Example 3. TPMS (per wheel)
Standard: only C075X codes. Mode 22 (for Mercedes):
- ID
0xF201— TPMS LF pressure - ID
0xF202— TPMS LF temperature - ID
0xF203— TPMS LF battery voltage - ID
0xF204— TPMS LF sensor ID (8 hex)
Full TPMS monitoring.
UDS pitfalls
1. IDs NOT standardised
Same parameter (say, oil temperature) has different IDs per manufacturer:
- VW:
0x2200 - BMW:
0x445F - Ford:
0xE010 - Toyota:
0x1146
So a generic ELM327 without a PID database doesn’t know what to read.
2. Deep-level DIDs need SecurityAccess
E.g. WriteDataByIdentifier (write) or running routines (DPF regen, adaptation reset) — require seed-key challenge. That’s already protocol reverse engineering.
3. Deep-level data — only in extended session
Must first 10 03 (extended session), then 27 XX (SecurityAccess), then 22 XX XX (read). Timing is strict.
What Car Diagnostics does
We assembled a PID database for ~15 manufacturers (VW Group, BMW, Mercedes, Toyota, Ford, GM, Renault, PSA, Hyundai/Kia, Volvo Trucks, Scania, Isuzu, Iveco, Chinese brands: Chery, Geely, Great Wall). For each:
- ID → human-readable decode
- Units
- Norms
- Manufacturer formulas (not just linear scaling)
That’s what the paid tier delivers — ~200 PIDs per marker beyond standard OBD-II.
Practical example
You want to know if a 2018 Toyota Camry has a rolled-back odometer:
- Standard OBD-II: only VIN and DTCs
- Mode 22 (Toyota):
0x1146— Engine hours (say 3450)0x1147— Ignition cycles (7890)0x1148— Distance since new (ECU internal, often doesn’t match the cluster!)
Difference between Distance since new in ECU (150 000 mi) and odometer (53 000 mi) → 100% rollback. See odometer fraud post.
For DIY readers
If you want to dig in yourself:
- BMW/MINI: DME/DDE ISTA documentation (leaked, googlable)
- VAG: ODIS-Service labelfiles
- Ford: Ford IDS/FDRS calibration files
- GM: GDS2 tester data
- Mercedes: XENTRY / DAS databases
Car Diagnostics does this “for you” — just read parameters with human names instead of hex IDs.
Try it on the free tier — pair an ELM327 adapter. Manufacturer Mode 22 PIDs — on paid tier with your make supported.