Rename: the app is vehicle-agnostic, so 'ford-obd' was wrong. Rebranded all code/docs/profile authors to OBDash; Gitea repo renamed justin/ford-obd -> justin/obdash (remote + description updated). Ford the make and the ford-6.0-powerstroke profile are unchanged (that vehicle really is a Ford). Multi-axis upgrade (per request): - MultiAxisPlot now gives each METRIC its own Y axis, each axis colored to match its line; the primary metric owns the LEFT axis, others stack right. - Click a line to promote it to the left axis (sigClicked -> set_primary). - Cleaner teardown (no removeItem warnings); axis label no longer doubles the unit; Normalize round-trips. Validated headless: colored per-metric axes, promote-to-left, gauge view, normalize toggle, profile switch; obdcore + diagnostics tests pass. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
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.
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:
- 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.
- High-pressure oil rail O-rings (under the valve covers) — same failure mode: leak at cranking pressure, mask at running pressure.
- HPOP discharge tube / O-rings — same family.
- IPR valve seat/seal worn or stuck — bleeds oil back to sump during cranking.
- HPOP itself worn — gears can't pressurize fast enough at cranking RPM. Less common than STC/rails.
- 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(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
Order is now: confirm the ICP-side leak source, then fix.
- 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.
- 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.
- Verify scan-hit PIDs. Re-probe the cleanest hits with
--pid XXXX(1310,1440-1451,11Bxcluster) for uncontaminated readings. The cluster around1440-1451looks like a related sensor group — could include ICP_V / IPR / ICP_DES if we're lucky. - 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).
- Optional cheap check: pull the IPR valve and inspect the seat for wear / debris / a stuck pintle. ~$0, takes 15 minutes.
- 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.