Files
obdash/handoff.md
T
justin 899a82e596 handoff: catch up to verified PID set + --crank/--dash modes
Replaces the "PIDs are TENTATIVE" framing with pointers to the verified
Ford 6.0 PID table and pid-research.md.  Updates the "resume" section
to make --crank the top action at the truck, with --pid probes for the
09xx FICM family that was outside the original brute-scan window.
Open-follow-ups condensed to the live items from pid-research §5.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-30 11:40:57 -04:00

6.4 KiB
Raw Blame History

Handoff — ford-obd / 6.0 Power Stroke no-start

Pick-up notes for diagnosing the truck in the cab. Repo: git.jpaul.io/justin/ford-obd (private).

TL;DR — what to do at the truck

  1. CH340 ELM327 adapter → OBD port (under dash, driver side).
  2. Key to RUN (not ACC). Engine off is fine for reading codes.
  3. On the Windows laptop, in the repo folder: double-click RUN_OBD.bat (or python obd_reader.py). If no port found: python obd_reader.py COM5.
  4. Read the codes + the no-start triage it prints. Write the codes down.
  5. To erase codes after reading: python obd_reader.py COM5 --clear (it asks you to type CLEAR).

Hardware confirmed

  • Adapter chip: QinHeng CH340 (USB 1a86:7523), ELM327 v1.5 clone.
  • Working baud: 38400 (default in the tool). If you get garbage, try 9600.
  • It's an AT@2 = ? clone (no stored serial) — normal, works fine for generic OBD-II.

What the tool does

  • DTCs: stored / pending / permanent (modes 03/07/0A), with 6.0-relevant codes flagged as no-start suspects. --clear erases (mode 04).
  • Generic live PIDs: RPM, ECT, IAT, MAP, engine load, module voltage, ATRV.
  • --ford: Mode-22 read of the VERIFIED Ford 6.0 PID set — ICP, EBP, MAP, BARO, MGP (boost), EOT, gear, TSS, plus the documented FICM trio (09D0 Main, 09CF Logic, 09CE Vehicle V) and 09CD Sync. Full PID research + sources in diagnostics/2026-06-29-no-start/pid-research.md.
  • --crank: dedicated cranking monitor — large ICP readout + trace of ICP, FICM Main, battery, RPM. This is the no-start mode.
  • --dash: real-time gauge dashboard. Presets: --dash crank (cranking), --dash full (everything). Add --dash-log run.csv to capture a CSV trace.
  • --pid XXXX: one-shot probe of any 16-bit Mode-22 PID; prints raw bytes plus a few candidate decodings.
  • --scan AAAA-BBBB (with optional --scan-log PATH): brute-force a PID range. Use for hunting new PIDs.

What still needs FORScan: desired ICP (ICP_DES) and a labeled FICM-Sync yes/no gauge — neither has a published Mode-22 DID. Everything else for no-start diagnosis is reachable through this tool now.

6.0 no-start priority checklist (from the triage)

The 6.0 needs, to fire: good batteries → FICM ~48V → ICP ~500 psi → fuel → cam/crank signal.

  1. Batteries — both. Weak battery → FICM won't boost → no injector fire. Load test; ~12.5V+ at rest, watch it while cranking.
  2. FICM voltage while cranking (~48V). #1 6.0 cold no-start cause. <45V is suspect.
  3. ICP (injection control pressure) ~500 psi to fire. Leaks: STC fitting, oil rail O-rings, high-pressure oil hoses, IPR/HPOP.
  4. Fuel — HFCM lift pump priming, fuel filters, water-in-fuel.
  5. CMP/CKP sensors — failed cam sensor = crank, no-start (codes P0340/P0341, P0335/P0336).
  6. Glow plugs/relay if cold (won't stop start, but hard start).

Code-driven branches the tool will hint at

  • P0335/P0336/P0340/P0341/P0344 → cam/crank sensor path.
  • P0611/P1316 or P02xx/P026x injector codes → FICM / injector path.
  • P0087/P0148/P0191 → fuel pressure (low-side + high-side oil).
  • U0100/U0073/P0606 → module comms / PCM.

Status of this session's work

  • Tool built + tested against the real adapter (init, all 3 DTC modes, live PIDs, clear flow).
  • DTC parser unit-tested incl. a fixed bug: legacy ISO/PWM multi-frame responses repeat the 43 header (was producing phantom codes) — fixed + regression-tested.
  • 2026-06-29 in-cab session: added --watch, --ford, --pid, and --scan modes. Captured cranking voltages + ran a Mode-22 brute scan (46 PIDs hit). Full session writeup + raw data in diagnostics/2026-06-29-no-start/. Headline: FICM measured >48V (healthy). Truck starts on ether every time and runs/idles fine until shut off — then needs ether again. That signature ⇒ high-pressure oil (ICP) bleed-off during cranking — STC fitting / oil rail O-rings / HPOP-related. Compression, FICM, CMP/CKP, fuel supply all confirmed good.
  • 2026-06-30 desktop session: multi-agent PID research workflow corrected the Mode-22 table — the original 12xx guesses were wrong addresses, not a bus problem. Verified PID set now in obd_reader.py; reasoning + sources in pid-research.md. Added --dash (real-time gauges) and --crank (no-start monitor).
  • Pushed to git.jpaul.io/justin/ford-obd, branch main.

To resume with Claude from the cab

Mention: "6.0 Power Stroke no-start, using the ford-obd tool (git.jpaul.io/justin/ford-obd)". Then paste the tool's full output (codes + live values). Useful to also say: cranks vs. no-crank, hot vs. cold, what changed before it died, and FICM/ICP readings if you metered them.

To resume at the truck (2026-06-30 state)

The diagnosis stands: high-pressure oil (ICP) bleeds off during cranking; HPOP outruns the leak once running. The toolchain can now confirm this directly from the OBD port. Top actions, in order:

  1. python obd_reader.py --crank during a short crank. A healthy 6.0 builds ~500+ psi ICP in 12 seconds. If ours stalls below 500 psi or builds very slowly, that confirms the bleed-off and is the smoking gun.
  2. Probe the FICM PIDs that were outside the scan window to validate the documented 09xx family on this truck:
    • python obd_reader.py --pid 09D0 (FICM Main, expect ~48V)
    • --pid 09CF (Logic, ~12V), --pid 09CE (Vehicle V), --pid 09CD (Sync)
  3. Visual under the valve covers + STC fitting — the likely physical source of the leak. STC fitting is the #1 6.0 culprit for this pattern.
  4. Widen the brute scan to round out the verified set — python obd_reader.py --scan 0900-09FF --scan-log scan-09xx.txt and --scan 1600-16FF --scan-log scan-16xx.txt.

Open follow-ups

Detailed action list lives in pid-research.md §5. Highlights:

  • Validate the documented-but-untested PIDs (09D0/09CF/09CE/09CD, 16AD, 1434, 1172, 1672, 096D, 099F) by reading them on-vehicle.
  • Sanity-check IPR (1434) against expected ranges: KOEO ~1415 %, cranking ~3040 %, warm idle ~2530 %.
  • Calibrate 16C1 fuel-level scaling per-truck (published divisors misread).
  • FORScan via CyanLabs mirror — only path to ICP_DES and a labeled FICM Sync gauge.