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>
116 lines
4.9 KiB
Markdown
116 lines
4.9 KiB
Markdown
# 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)
|
||
|
||
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.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).
|
||
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.
|