Files
obdash/diagnostics/2026-06-29-no-start/README.md
T
justin e15e22a825 Add --watch/--ford/--pid/--scan modes + 2026-06-29 session diagnostics
obd_reader.py:
- Mode 22 plumbing: ELM.mode22() sends a 16-bit PID request, parses both
  positive (62 ..) and negative (7F 22 NRC) responses.
- --ford runs a small TENTATIVE table of community-sourced Ford 6.0 PIDs
  (ICP/IPR/FICM/EBP/EOT). All printed with raw bytes for verification.
- --pid XXXX probes a single PID and prints multiple candidate decodings
  (u8, u16, mV, temp, duty) so we can eyeball the right scaling.
- --watch [N] streams ATRV + module voltage (PID 0142) for N seconds.
  Designed for capturing voltage sag during cranking.
- --scan AAAA-BBBB brute-force scans Mode-22 PIDs with --scan-log PATH
  for output. Uses fast ELM timing (ATAT2, ATST19) for ~3.5 PIDs/sec.

diagnostics/2026-06-29-no-start/:
- Captured cranking voltage trace, full Mode-22 scan (1000-14FF -> 46
  hits), and a session writeup. Working hypothesis: not batteries, not
  fuel -- ICP / FICM / CMP. FICM meter test still owed.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-29 21:49:18 -04:00

4.9 KiB
Raw Blame History

2026-06-29 — 6.0 Power Stroke no-start session

In-cab diagnostic session using the ford-obd tool on the truck. Charger on "12V Hi" was attached for most of the session.

Symptoms

  • Cranks fast (starter spins the engine normally)
  • Zero combustion event — no sputter, no cough, no kickback
  • HFCM lift pump heard priming on key-RUN and shutting off normally
  • Battery at OBD port: 11.2 12.7V key-RUN (varied with charger state)

Codes pulled (multiple reads, slight variation between reads)

Mode Code Description
Stored (03) C0300 (chassis — not engine, not in our DB)
Pending (07) C0700 / C0701 (chassis — alternated between reads)
Pending (07) P0113 IAT circuit HIGH — sensor wiring, not a no-start
Permanent (0A) C3F0A (chassis — not engine)

No engine P-codes, no FICM codes, no injector codes, no CMP/CKP codes.

What we ruled out

  • Batteries as primary cause — cranks fast and voltage held adequately (see watch-cranking.log). Bus sagged to 10.811.2V during ~11s crank, borderline-low but not catastrophic. Healthy starter spin means batteries have current to give.
  • Fuel supply — HFCM lift pump audibly primes and shuts off correctly on key-RUN.
  • Compression / mechanical — fast even cranking, would feel different with a low-compression cylinder.

Working hypothesis (in order of suspicion)

  1. ICP / high-pressure oil leak — STC fitting is the classic 6.0 culprit for "cranks great, won't fire, no codes". Need ≥500 psi ICP to fire even one injector.
  2. FICM weakness — should boost to ~48V. Sometimes doesn't throw a code even when failing. Not yet measured — see open items.
  3. CMP sensor — would usually throw P0340/P0341 but not always.

What we did with the tool this session

  • Pulled DTCs across all 3 modes (multiple times).
  • Captured cranking voltage with --watch 30 (see watch-cranking.log):
    • Pre-crank: bus 11.7→12.1V, VPCM 12.39→12.71V
    • Cranking (~11s): bus 10.811.2V, VPCM 11.3211.70V
    • Recovery: bus 11.812.2V, VPCM stopped responding (?) — possible PCM brief recovery state after the dip.
  • Ran first attempt at Mode-22 probes (--ford) with community-sourced PIDs (ICP=1209, FICM=1228/1229/122A, IPR=120B, etc.). All returned "no response." Either the PCM uses different PID numbers, or these values live on Ford's SCP bus and aren't gatewayed to OBD-CAN.
  • Brute-force scanned PIDs 0x1000-0x14FF (1280 PIDs, ~6 min, 46 hits). See mode22-scan-hits.txt. Data is noisy because multiple modules on the bus answer the same query — positive responses from PCM mixed with negative-response bytes (7F 22 12, 7F 22 31) from other modules.

Interesting PIDs from the scan to verify next session

Cleanest-looking PCM-side responses worth re-probing individually (with normal timing, python obd_reader.py --pid XXXX):

1310  2  1C 92         (was 1C 69 earlier — value changes; maybe a counter?)
1440  2  01 89  =  393
1442  2  01 88  =  392     ← three closely-spaced ~390 values
1445  2  01 8F  =  399        suggests a related sensor cluster
1446  2  00 16  =  22
1447  2  00 34  =  52
1448  2  00 11  =  17
11B3  1  02
11B4  2  00 00
11BA  2  FF 5C

Likely scaling guesses:

  • raw / 100 → fits if these are voltage-tenths or pressure-tenths
  • raw / 1000 → if mV (0.393V plausible for sensor outputs)
  • raw - some offset → temperature

To know what each one is, compare against a known measurement:

  • Run --pid 1440 with engine off, write down value.
  • Get engine running (eventually), write down value.
  • Change condition, watch which PIDs move.

Open items / what's next

  1. FICM meter test was started but no readings reported back yet. Measure M / S / L on the FICM body, key-ON and during a (short) crank:
    • M (Main) target ~48V cranking, <45V suspect, <40V dead
    • S (Sync) target ~48V cranking
    • L (Logic) target ~12V (mirrors battery)
  2. Visual under-engine check for STC-fitting oil leak (wet/oily mess at the rear of the engine, around the turbo / bell housing).
  3. Verify scan-hit PIDs. Re-probe the clean ones above with --pid XXXX to get uncontaminated readings, log them against known conditions.
  4. Try addressing other modules with ATSH — particularly the FICM on its CAN address if it has one (uncertain on 6.0 — likely on SCP).
  5. Try FORScan when forscan.org / CyanLabs mirror is back, on the same CH340 adapter, to capture FORScan's actual PID requests for ICP/FICM/IPR. That gives us the ground truth.

Tool state at end of session

obd_reader.py now has:

  • --ford — try the (tentative) Ford 6.0 Mode-22 PID table
  • --pid XXXX — one-shot probe of any 16-bit Mode-22 PID
  • --watch [N] — stream ATRV + VPCM for N seconds (default 20)
  • --scan AAAA-BBBB + --scan-log PATH — brute-force scan a PID range

All work on the CH340 ELM327 v1.5 clone at 38400 baud, HS-CAN switch.