03223dfd6c
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
123 lines
7.1 KiB
Markdown
123 lines
7.1 KiB
Markdown
# Handoff — OBDash / 6.0 Power Stroke no-start
|
||
|
||
Pick-up notes for diagnosing the truck in the cab. Repo: `git.jpaul.io/justin/obdash` (private).
|
||
|
||
## TL;DR — what to do at the truck
|
||
1. CH340 ELM327 adapter → OBD port (under dash, driver side).
|
||
2. Key to **RUN** (not ACC). Engine off is fine for reading codes.
|
||
3. On the Windows laptop, in the repo folder: **double-click `RUN_OBD.bat`**
|
||
(or `python obd_reader.py`). If no port found: `python obd_reader.py COM5`.
|
||
4. Read the codes + the no-start triage it prints. Write the codes down.
|
||
5. To erase codes after reading: `python obd_reader.py COM5 --clear` (it asks you to type `CLEAR`).
|
||
|
||
## Hardware confirmed
|
||
- Adapter chip: **QinHeng CH340** (`USB 1a86:7523`), ELM327 **v1.5** clone.
|
||
- Working **baud: 38400** (default in the tool). If you get garbage, try `9600`.
|
||
- It's an `AT@2 = ?` clone (no stored serial) — normal, works fine for generic OBD-II.
|
||
|
||
## What the tool does
|
||
- **DTCs**: stored / pending / permanent (modes 03/07/0A), with 6.0-relevant
|
||
codes flagged as no-start suspects. `--clear` erases (mode 04).
|
||
- **Generic live PIDs**: RPM, ECT, IAT, MAP, engine load, module voltage, ATRV.
|
||
- **`--ford`**: Mode-22 read of the **VERIFIED** Ford 6.0 PID set — ICP, EBP,
|
||
MAP, BARO, MGP (boost), EOT, gear, TSS, plus the documented FICM trio
|
||
(`09D0` Main, `09CF` Logic, `09CE` Vehicle V) and `09CD` Sync. Full PID
|
||
research + sources in
|
||
[diagnostics/2026-06-29-no-start/pid-research.md](diagnostics/2026-06-29-no-start/pid-research.md).
|
||
- **`--crank`**: dedicated cranking monitor — large ICP readout + trace of ICP,
|
||
FICM Main, battery, RPM. **This is the no-start mode.**
|
||
- **`--dash`**: real-time gauge dashboard. Presets: `--dash crank` (cranking),
|
||
`--dash full` (everything). Add `--dash-log run.csv` to capture a CSV trace.
|
||
- **`--pid XXXX`**: one-shot probe of any 16-bit Mode-22 PID; prints raw bytes
|
||
plus a few candidate decodings.
|
||
- **`--scan AAAA-BBBB`** (with optional `--scan-log PATH`): brute-force a PID
|
||
range. Use for hunting new PIDs.
|
||
|
||
What still needs FORScan: **desired ICP** (`ICP_DES`) and a labeled FICM-Sync
|
||
yes/no gauge — neither has a published Mode-22 DID. Everything else for
|
||
no-start diagnosis is reachable through this tool now.
|
||
|
||
## 6.0 no-start priority checklist (from the triage)
|
||
The 6.0 needs, to fire: **good batteries → FICM ~48V → ICP ~500 psi → fuel → cam/crank signal.**
|
||
1. **Batteries** — both. Weak battery → FICM won't boost → no injector fire. Load test;
|
||
~12.5V+ at rest, watch it while cranking.
|
||
2. **FICM voltage** while cranking (~48V). #1 6.0 cold no-start cause. <45V is suspect.
|
||
3. **ICP** (injection control pressure) ~500 psi to fire. Leaks: STC fitting, oil rail
|
||
O-rings, high-pressure oil hoses, IPR/HPOP.
|
||
4. **Fuel** — HFCM lift pump priming, fuel filters, water-in-fuel.
|
||
5. **CMP/CKP sensors** — failed cam sensor = crank, no-start (codes P0340/P0341, P0335/P0336).
|
||
6. **Glow plugs/relay** if cold (won't stop start, but hard start).
|
||
|
||
## Code-driven branches the tool will hint at
|
||
- `P0335/P0336/P0340/P0341/P0344` → cam/crank sensor path.
|
||
- `P0611/P1316` or `P02xx`/`P026x` injector codes → FICM / injector path.
|
||
- `P0087/P0148/P0191` → fuel pressure (low-side + high-side oil).
|
||
- `U0100/U0073/P0606` → module comms / PCM.
|
||
|
||
## Status of this session's work
|
||
- Tool built + tested against the real adapter (init, all 3 DTC modes, live PIDs, clear flow).
|
||
- DTC parser unit-tested incl. a fixed bug: legacy ISO/PWM multi-frame responses repeat the
|
||
`43` header (was producing phantom codes) — fixed + regression-tested.
|
||
- **2026-06-29 in-cab session:** added `--watch`, `--ford`, `--pid`, and `--scan`
|
||
modes. Captured cranking voltages + ran a Mode-22 brute scan (46 PIDs hit).
|
||
Full session writeup + raw data in [diagnostics/2026-06-29-no-start/](diagnostics/2026-06-29-no-start/README.md).
|
||
**Headline:** FICM measured >48V (healthy). Truck **starts on ether every
|
||
time** and runs/idles fine until shut off — then needs ether again. That
|
||
signature ⇒ **high-pressure oil (ICP) bleed-off during cranking** — STC
|
||
fitting / oil rail O-rings / HPOP-related. Compression, FICM, CMP/CKP,
|
||
fuel supply all confirmed good.
|
||
- **2026-06-30 desktop session:** multi-agent PID research workflow corrected
|
||
the Mode-22 table — the original 12xx guesses were wrong addresses, not a
|
||
bus problem. Verified PID set now in `obd_reader.py`; reasoning + sources
|
||
in [pid-research.md](diagnostics/2026-06-29-no-start/pid-research.md).
|
||
Added `--dash` (real-time gauges) and `--crank` (no-start monitor).
|
||
- **2026-06-30 ICP crank test:** ran `--crank` on the truck — **peak ICP
|
||
376 psi, below the 500 psi firing threshold**. Direct empirical
|
||
confirmation of the high-pressure oil bleed hypothesis. FICM min 48.0 V
|
||
(healthy), battery min 10.3 V (adequate). Output captured in
|
||
[crank-test-2026-06-30.txt](diagnostics/2026-06-29-no-start/crank-test-2026-06-30.txt).
|
||
Next: physical inspection (IPR valve first, then STC fitting, then
|
||
oil rail O-rings).
|
||
- Pushed to `git.jpaul.io/justin/obdash`, branch `main`.
|
||
|
||
## To resume with Claude from the cab
|
||
Mention: "6.0 Power Stroke no-start, using the OBDash tool (git.jpaul.io/justin/obdash)".
|
||
Then **paste the tool's full output** (codes + live values). Useful to also say: cranks vs.
|
||
no-crank, hot vs. cold, what changed before it died, and FICM/ICP readings if you metered them.
|
||
|
||
## To resume at the truck (2026-06-30 state)
|
||
|
||
The diagnosis is now **empirically confirmed** — `--crank` measured peak
|
||
ICP 376 psi (need ~500 psi to fire). High-pressure oil bleeds off during
|
||
cranking; HPOP outruns the leak once running. The 376 psi reading suggests
|
||
a **partial** leak rather than a fully blown STC fitting. Physical
|
||
inspection, cheap-and-easy first:
|
||
|
||
1. **Pull the IPR valve** (~15 min, ~$0). Bolted into the back of the
|
||
HPOP, top-rear of engine under the turbo. Inspect screen for debris,
|
||
pintle/seat for wear, O-rings for cuts. A leaky IPR seat causes
|
||
exactly this "partial pressure" symptom.
|
||
2. **STC fitting visual** — between the heads under the turbo. Look for
|
||
wet/oily film at the fitting joint. Ford TSB; classic 6.0 wear item.
|
||
3. **Pull valve covers** and inspect high-pressure oil rail O-rings on
|
||
each head. Bigger job but common 6.0 leak path.
|
||
4. (Once a repair is attempted, re-run `--crank` — peak ICP should jump
|
||
to 500+ if the fix worked.)
|
||
|
||
OBD-side follow-ups (lower priority now that we have the answer):
|
||
- Probe the FICM 09xx family: `--pid 09D0` (Main, ~48V), `--pid 09CF`
|
||
(Logic, ~12V), `--pid 09CE` (Vehicle V), `--pid 09CD` (Sync).
|
||
- Widen brute scan: `--scan 0900-09FF --scan-log scan-09xx.txt`
|
||
and `--scan 1600-16FF --scan-log scan-16xx.txt`.
|
||
|
||
## Open follow-ups
|
||
Detailed action list lives in
|
||
[pid-research.md §5](diagnostics/2026-06-29-no-start/pid-research.md). Highlights:
|
||
- Validate the documented-but-untested PIDs (`09D0/09CF/09CE/09CD`, `16AD`,
|
||
`1434`, `1172`, `1672`, `096D`, `099F`) by reading them on-vehicle.
|
||
- Sanity-check IPR (`1434`) against expected ranges: KOEO ~14–15 %,
|
||
cranking ~30–40 %, warm idle ~25–30 %.
|
||
- Calibrate `16C1` fuel-level scaling per-truck (published divisors misread).
|
||
- FORScan via CyanLabs mirror — only path to `ICP_DES` and a labeled FICM
|
||
Sync gauge.
|