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

In-cab diagnostic session using the `OBDash` 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.
