justin 36b233f02c Correct Ford 6.0 Mode-22 PID table from workflow research
The old 12xx PIDs (1209/1228/120B/...) were wrong addresses -- that's why
they returned 'no response' on the truck, NOT a bus/gateway problem. The real
Ford-enhanced DIDs are in the 09xx/14xx/16xx families. Confirmed by the truck's
own brute-scan: 1446=ICP, 1445=EBP, 1440=MAP, 1442=BARO, 1310=EOT, 11B3=gear,
11B4=TSS all decode to sane on-vehicle values.

- Rewrite FORD_60_PIDS with corrected addresses + [VERIFIED]/[DOC]/[TENTATIVE] tags
- FICM voltages -> 09D0/09CF/09CE/09CD (09D0 Main = the ~48V no-start metric)
- ICP=1446 *0.57, IPR=1434, ICP_V=16AD; EOT scaling fixed to /100-40
- watch --ford now streams 09D0/09CF/1446/1434 (FICM main V + ICP during crank)
- Add diagnostics/2026-06-29-no-start/pid-research.md (full workflow findings)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
2026-06-29 22:29:46 -04:00

ford-obd

Minimal ELM327 OBD-II code reader with a Ford 6.0L Power Stroke no-start triage, built for a cheap CH340 ELM327 USB adapter. Works on any OBD-II vehicle for generic codes/PIDs; the triage notes are 6.0-specific.

Created as a stopgap while forscan.org was offline — it covers reading/clearing codes and the basics, not Ford-enhanced diesel PIDs (see Scope below).

Features

  • Read stored (mode 03), pending (mode 07), permanent (mode 0A) DTCs
  • Decode P/C/B/U codes, with common 6.0 codes described and no-start suspects flagged
  • Clear codes (mode 04) — guarded behind --clear + a typed CLEAR confirmation, then re-reads to show any code that returns immediately (active fault)
  • Key live values (coolant, IAT, MAP, module voltage, RPM, load, throttle) + battery voltage
  • 6.0 Power Stroke no-start triage checklist (FICM, ICP, cam/crank, batteries, fuel)

Setup (Windows)

  1. Install the CH340 driver (WCH CH341SER) so the adapter appears as USB-SERIAL CH340 (COMx) in Device Manager → Ports.
  2. Install Python from https://www.python.org/downloads/ — tick Add Python to PATH.

Usage

python obd_reader.py                # auto-detect the COM port
python obd_reader.py COM5           # force a port
python obd_reader.py COM5 9600      # force port + baud (default 38400)
python obd_reader.py COM5 --clear   # read, then optionally clear (asks to confirm)
python obd_reader.py COM5 -v        # verbose: show raw ELM327 traffic

Or just double-click RUN_OBD.bat on Windows (auto-installs pyserial).

On the truck: plug into the OBD port under the dash, key to RUN (engine off is fine for codes), then run the tool.

Scope / honesty

A generic ELM327 reads standard OBD-II only: codes, generic PIDs, port voltage. It does not read Ford-enhanced diesel PIDs (ICP, FICM main/sync voltage, IPR%) — those need FORScan. For FICM/ICP numbers, measure at the FICM with a meter, or use FORScan when it's available. Default baud is 38400 (measured on the CH340 adapter); try 9600 if you get garbage.

Requirements

pyserial (pip install pyserial). Tested against a QinHeng CH340 ELM327 v1.5 clone.

S
Description
OBDash — open-source, vehicle-agnostic OBD-II scanner (Python/Qt). Live multi-axis graphs, car-style gauges, DTC read/clear, JSON vehicle profiles.
Readme MIT 1.8 MiB
v0.1.0 Latest
2026-06-30 16:53:36 -04:00
Languages
Python 99.7%
Batchfile 0.3%