Add --watch/--ford/--pid/--scan modes + 2026-06-29 session diagnostics
obd_reader.py: - Mode 22 plumbing: ELM.mode22() sends a 16-bit PID request, parses both positive (62 ..) and negative (7F 22 NRC) responses. - --ford runs a small TENTATIVE table of community-sourced Ford 6.0 PIDs (ICP/IPR/FICM/EBP/EOT). All printed with raw bytes for verification. - --pid XXXX probes a single PID and prints multiple candidate decodings (u8, u16, mV, temp, duty) so we can eyeball the right scaling. - --watch [N] streams ATRV + module voltage (PID 0142) for N seconds. Designed for capturing voltage sag during cranking. - --scan AAAA-BBBB brute-force scans Mode-22 PIDs with --scan-log PATH for output. Uses fast ELM timing (ATAT2, ATST19) for ~3.5 PIDs/sec. diagnostics/2026-06-29-no-start/: - Captured cranking voltage trace, full Mode-22 scan (1000-14FF -> 46 hits), and a session writeup. Working hypothesis: not batteries, not fuel -- ICP / FICM / CMP. FICM meter test still owed. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
+32
-5
@@ -18,8 +18,14 @@ Pick-up notes for diagnosing the truck in the cab. Repo: `git.jpaul.io/justin/fo
|
||||
## What the tool does / doesn't
|
||||
- DOES: read stored/pending/permanent codes, decode them (6.0 codes flagged as
|
||||
no-start suspects), clear codes (`--clear`), show battery voltage + key live PIDs.
|
||||
- DOESN'T: Ford-enhanced diesel PIDs — **ICP, FICM main/sync voltage, IPR%**.
|
||||
Those need FORScan. For those numbers tonight, measure at the FICM with a meter.
|
||||
- EXPERIMENTAL (`--ford`): tries a small table of community-sourced Ford 6.0
|
||||
Mode-22 PIDs (ICP, IPR%, FICM main/sync/logic V, EBP, EOT). **PID numbers and
|
||||
scaling are TENTATIVE** — raw bytes are always printed; cross-check against a
|
||||
meter or FORScan before trusting a value.
|
||||
- `--pid XXXX`: one-shot probe of any 16-bit Mode-22 PID; prints raw bytes plus
|
||||
a few common decodings so you can eyeball the right scaling.
|
||||
- DOESN'T (yet): a verified Ford-enhanced PID set the way FORScan has. We're
|
||||
building toward that — see follow-ups below.
|
||||
|
||||
## 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.**
|
||||
@@ -42,14 +48,35 @@ The 6.0 needs, to fire: **good batteries → FICM ~48V → ICP ~500 psi → fuel
|
||||
- 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:** not batteries, not fuel — almost certainly ICP / FICM / CMP.
|
||||
**Unfinished:** FICM meter test on M/S/L was started but readings never logged.
|
||||
- Pushed to `git.jpaul.io/justin/ford-obd`, branch `main`. Files: `obd_reader.py`,
|
||||
`RUN_OBD.bat`, `README.md`, `README.txt`, `handoff.md`.
|
||||
`RUN_OBD.bat`, `README.md`, `README.txt`, `handoff.md`, `diagnostics/`.
|
||||
|
||||
## To resume with Claude from the cab
|
||||
Mention: "6.0 Power Stroke no-start, using the ford-obd tool (git.jpaul.io/justin/ford-obd)".
|
||||
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 from the desktop (after the 2026-06-29 session)
|
||||
Read [diagnostics/2026-06-29-no-start/README.md](diagnostics/2026-06-29-no-start/README.md)
|
||||
first — that's the full state. Top open items:
|
||||
1. Get FICM M/S/L meter readings (key-ON and during a short crank).
|
||||
2. Re-probe the clean scan hits (1310, 1440-1451, 11Bx) with `--pid XXXX`
|
||||
for uncontaminated data, then map them to known engine conditions.
|
||||
3. Look at FORScan via the CyanLabs mirror to capture ground-truth PIDs.
|
||||
|
||||
## Open follow-ups (when off the truck)
|
||||
- FORScan from the CyanLabs mirror once forscan.org is back, for ICP/FICM/IPR PIDs on the same adapter.
|
||||
- Optional: add a few known Ford Mode-22 enhanced PIDs to the tool (verify PID numbers first).
|
||||
- FORScan from the CyanLabs mirror once forscan.org is back — useful as the
|
||||
ground truth for verifying our Mode-22 PID table.
|
||||
- **Verify** every entry in `FORD_60_PIDS` (obd_reader.py) against either a
|
||||
meter reading or FORScan, one at a time. As each is confirmed, drop the
|
||||
"TENTATIVE" warning for that row.
|
||||
- **Option 3**: brute-force scan of the Mode-22 PID space (e.g. `0x1000`-
|
||||
`0x14FF`) and log which PIDs return data, so we can fingerprint what this
|
||||
PCM exposes without external references. Hook it in as `--scan`.
|
||||
- Add `--watch` mode that streams ATRV + PID 0142 (and the FICM PIDs once
|
||||
verified) at ~5 Hz so we can watch the voltage sag during cranking.
|
||||
|
||||
Reference in New Issue
Block a user