e15e22a825
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>
4.9 KiB
4.9 KiB
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.8–11.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)
- 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.
- FICM weakness — should boost to ~48V. Sometimes doesn't throw a code even when failing. Not yet measured — see open items.
- 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(seewatch-cranking.log):- Pre-crank: bus 11.7→12.1V, VPCM 12.39→12.71V
- Cranking (~11s): bus 10.8–11.2V, VPCM 11.32–11.70V
- Recovery: bus 11.8–12.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). Seemode22-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 1440with engine off, write down value. - Get engine running (eventually), write down value.
- Change condition, watch which PIDs move.
Open items / what's next
- 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)
- Visual under-engine check for STC-fitting oil leak (wet/oily mess at the rear of the engine, around the turbo / bell housing).
- Verify scan-hit PIDs. Re-probe the clean ones above with
--pid XXXXto get uncontaminated readings, log them against known conditions. - Try addressing other modules with
ATSH— particularly the FICM on its CAN address if it has one (uncertain on 6.0 — likely on SCP). - 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.