6eb449f354
Direct on-truck measurement with the verified 1446 ICP PID: peak cranking ICP 376 psi vs the ~500 psi firing threshold. FICM Main min 48.0 V (healthy), battery min 10.3 V (adequate). Diagnosis empirically confirmed: high-pressure oil bleeds off during cranking. 376 psi is "almost there" not zero, which fits a partial leak (IPR seat / oil rail O-rings / partial STC crack) rather than a fully blown STC fitting. - Capture the --crank output in crank-test-2026-06-30.txt - Add EMPIRICAL CONFIRMATION section to diagnostics README - Update handoff "resume at the truck" to lead with physical inspection (IPR -> STC -> oil rail O-rings), since the OBD-side diagnosis is done Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
193 lines
9.0 KiB
Markdown
193 lines
9.0 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 (low-pressure)** — HFCM lift pump audibly primes and shuts
|
||
off correctly on key-RUN. And the truck runs fine once started, so the
|
||
whole fuel-supply chain delivers under load.
|
||
- **Compression / mechanical** — fast even cranking, would feel different
|
||
with a low-compression cylinder. Ether ignition (see below) confirms
|
||
good compression and valve timing.
|
||
- **FICM** — meter showed **>48V on cranking AND key-ON**. FICM is healthy.
|
||
- **Injector electrical / CMP / CKP** — truck runs fine once started, so
|
||
injector drive, cam/crank sync, and the FICM-to-injector path are all
|
||
good when the engine is turning at running RPM.
|
||
|
||
## ⭐ EMPIRICAL CONFIRMATION (2026-06-30 crank test)
|
||
|
||
Direct measurement with `--crank` and the verified `1446` ICP PID:
|
||
|
||
**Peak cranking ICP = 376 psi** — below the ~500 psi firing threshold.
|
||
Full output in [crank-test-2026-06-30.txt](crank-test-2026-06-30.txt).
|
||
|
||
This is the smoking gun. Truck cannot generate enough ICP during cranking
|
||
to open injectors → cannot fire on its own fuel → needs ether every time.
|
||
Matches the symptom-set perfectly.
|
||
|
||
Side data from the same test:
|
||
- **FICM Main min: 48.0 V** — healthy, corroborates the meter.
|
||
- **Battery min: 10.3 V** — sag but adequate.
|
||
- 376 psi is "almost there" not zero → suggests a **partial** leak
|
||
(IPR seat / oil rail O-rings / partial STC crack) rather than a
|
||
fully blown STC fitting (which would typically show sub-100 psi).
|
||
|
||
## ⭐ Key diagnostic finding: ether starts it every time
|
||
|
||
Spraying starting fluid (ether) into the intake **gets the truck to fire,
|
||
catch, and run normally** — and it then **idles and runs fine until shut
|
||
off**. Then it needs ether *again* to restart, even when warm.
|
||
|
||
This is a near-textbook signature on a 6.0:
|
||
|
||
- Ether ignites at much lower temperature and pressure than diesel. If
|
||
the engine fires and runs on ether, **compression, timing, and valves
|
||
are fine**.
|
||
- If it runs cleanly once started, **injectors are firing correctly at
|
||
running ICP** and the high-pressure oil system is making enough
|
||
pressure *at running RPM* to drive the injectors.
|
||
- Needing ether **every** time — even after warm-up — means the failure
|
||
is in the **starting-pressure window**, not a cold-soak / temperature
|
||
issue.
|
||
|
||
Mechanism: at cranking RPM the HPOP can only generate ICP so fast.
|
||
Anything that bleeds high-pressure oil at cranking speeds will starve
|
||
ICP below the ~500 psi firing threshold. Once the engine catches (on
|
||
ether) and gets to idle RPM, the HPOP can outpace the leak and ICP
|
||
holds normal — so it runs fine. Shut it off, oil pressure drops to
|
||
zero, the leak path is still there next crank.
|
||
|
||
## Working hypothesis (in order of suspicion)
|
||
|
||
The new symptom set narrows the field hard. **It is almost certainly
|
||
in the high-pressure oil (ICP) path that feeds the injectors:**
|
||
|
||
1. **STC fitting** — the high-pressure oil branch tube where it joins
|
||
the oil rails. Classic 6.0 wear item. Cracks at the fitting let oil
|
||
bleed off during cranking when the HPOP can't keep up; pressure
|
||
recovers at running RPM. Ford TSB exists. **#1 suspect.**
|
||
2. **High-pressure oil rail O-rings** (under the valve covers) — same
|
||
failure mode: leak at cranking pressure, mask at running pressure.
|
||
3. **HPOP discharge tube / O-rings** — same family.
|
||
4. **IPR valve** seat/seal worn or stuck — bleeds oil back to sump
|
||
during cranking.
|
||
5. **HPOP itself worn** — gears can't pressurize fast enough at
|
||
cranking RPM. Less common than STC/rails.
|
||
6. **Sticky injector spool valves** — some 6.0 injectors won't open at
|
||
marginal ICP but work fine once pressure is up. Less likely if it
|
||
needs ether *every* time, more likely if it's "some cold starts."
|
||
|
||
What this is **NOT** (given runs-fine-once-started + needs-ether-even-warm):
|
||
- ❌ FICM (measured >48V; also injectors fire fine when running)
|
||
- ❌ CMP/CKP (sync is good when running)
|
||
- ❌ Glow plugs / glow plug control (needing ether when *warm* rules
|
||
this out — warm engine doesn't need glow assist)
|
||
- ❌ Fuel filters / HFCM / lift pump (runs fine = fuel delivery works)
|
||
- ❌ Compression / valve seal (ether fires and engine runs cleanly)
|
||
|
||
## 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
|
||
|
||
Order is now: confirm the ICP-side leak source, then fix.
|
||
|
||
1. **Visual inspection under valve covers / around STC fitting.**
|
||
Pull both valve covers and look for oil flooding, weeping at the
|
||
STC fitting (high-pressure oil branch tube), and the condition of
|
||
the high-pressure oil rail O-rings on each head.
|
||
2. **Crank and watch ICP build** (once we have a verified ICP PID, or
|
||
with FORScan / IDS). A healthy 6.0 builds ~500+ psi in 1–2 seconds
|
||
of cranking. If ours stalls below 500 psi or builds very slowly,
|
||
that confirms the high-pressure leak.
|
||
3. **Verify scan-hit PIDs.** Re-probe the cleanest hits with
|
||
`--pid XXXX` (`1310`, `1440-1451`, `11Bx` cluster) for uncontaminated
|
||
readings. The cluster around `1440-1451` looks like a related sensor
|
||
group — could include ICP_V / IPR / ICP_DES if we're lucky.
|
||
4. **FORScan** via CyanLabs mirror when it's back, on the same CH340.
|
||
With ICP and IPR live data in front of us, the leak source is much
|
||
easier to nail down (e.g., IPR commanded high but ICP stays low =
|
||
leak; IPR low and ICP low = control side).
|
||
5. **Optional cheap check**: pull the IPR valve and inspect the seat
|
||
for wear / debris / a stuck pintle. ~$0, takes 15 minutes.
|
||
6. **Address other modules with `ATSH`** — particularly trying the FICM
|
||
on its CAN address if it has one (uncertain on 6.0 — FICM likely on
|
||
SCP, not directly reachable from OBD-CAN). Lower priority now that
|
||
FICM is confirmed healthy by meter.
|
||
|
||
## 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.
|