pacifica-obd#
A command-line OBD-II and UDS diagnostics toolkit for a 2021 Chrysler Pacifica, talking to a vLinker FS USB adapter. Built on python-OBD, managed with uv, scriptable end to end.
Generic OBD-II reads are the tested core. The same adapter is then driven at the raw ELM327/STN level for UDS work: module discovery, all-module DTC reads and identification DIDs on either CAN bus — plus a deliberately guarded write path you have to opt into explicitly.
uv sync
uv run pacifica-obd scan # VIN + stored codes + supported PIDs
macOS · Python 3.12+ via uv · MIT · not affiliated with Stellantis
What this can and can't do here#
| Task | Support | How |
|---|---|---|
| VIN, stored and pending codes, readiness monitors, live data, freeze frame | ✅ | Generic OBD-II: scan, dtc, readiness, watch, freeze |
| Codes from the other modules that answer on CAN-C / CAN-IHS | ✅ read-only | dtc-all — raw codes and status flags, no text descriptions |
| Part, software and hardware numbers per module | ✅ read-only | module-info, read-did (F187–F191) |
| Which modules should exist, and at which addresses | ✅ read-only | module-map (plus an optional read-only external ECU database) |
| Clear engine codes | ⚠️ | dtc --clear sends mode 04. The Security Gateway may refuse it, and it erases freeze frames and readiness history |
Write a DID (2E) or run a routine (31) |
⚠️ experimental | Guarded behind --confirm, not reversible by this tool, usually refused by the SGW |
| Coding, adaptations, module programming | ❌ | Beyond those primitives. Use Appcar DiagFCA / JScan / dealer wiTECH, with an SGW bypass |
What it does#
-
Check-engine basics
VIN, stored (mode
03) and pending (mode07) codes, permanent codes when the installed python-OBD exposes mode0A, readiness monitors, and the freeze frame behind a fault. -
Live dashboard
watchRPM, speed, coolant, load, throttle, intake temp, MAF and fuel level. Log every sample to CSV, or stream newline-delimited JSON intojq. -
Every module, not just the PCM
dtc-alldiscovers the modules that answer on one or both CAN buses, then asks each of them for its codes over UDS19 02. -
Who is on the bus
modulesfinds the responders,module-inforeads their part and software/hardware numbers, andmodule-mapshows which modules should exist and at which addresses. -
History that stays local
Every run lands in a local SQLite database plus an append-only JSONL log, so this week's codes can be compared with last month's. Nothing is uploaded.
-
TUI or JSON
Browse with the keyboard/mouse in
tui, or put--jsonon any read command for scripts, spreadsheets and CI.
Read-only by default — and park the van
Discovery and dtc-all put each module into an extended diagnostic session
(10 03) while they read. Run them parked, with the ignition ON. Nothing
writes unless you ask it to: the write services (dtc --clear, write-did,
routine) are gated behind an explicit confirmation, and security only
asks for a seed — no seed→key provider is configured, so nothing is unlocked.
On a 2021 Pacifica the Security Gateway blocks writes on the stock port, so expect a write to be refused without a 12+8 bypass cable. See the Security Gateway deep dive.
Deep dives#
-
What the SGW is, what it blocks on a 2021, when a 12+8 bypass cable is needed, and where Appcar / JScan / wiTECH fit.
-
Enhanced (manufacturer-aware) diagnostics
How manufacturer-aware tools actually work, what this adapter can already do, and the roadmap from generic OBD-II to UDS.
-
Other model years, the Voyager and Grand Caravan, and the PHEV: what is known to carry over and what still has to be mapped.
-
Architecture, ISO-TP/UDS notes, the
+8versus−0x280addressing rule, bus presets, and the storage model.
References & related work#
- python-OBD — the library doing generic OBD-II PID work here. pyobd is a finished GUI front end built on the same library; this project is the engine plus a scriptable CLI.
- comma.ai opendbc — Chrysler
— vehicle-observed ECU addresses, the
−0x280response rule, and the non-standard FCA DIDF132. - OBD Solutions STN11xx reference manual — AT/ST command set and protocol presets.
MIT licensed — see the repository's LICENSE.