Files
justin 03223dfd6c Rename project to OBDash + per-metric colored multi-axis
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-30 15:25:26 -04:00

123 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 ~1415 %,
cranking ~3040 %, warm idle ~2530 %.
- 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.