Files
obdash/diagnostics/2026-06-29-no-start/pid-research.md
T
justin 36b233f02c Correct Ford 6.0 Mode-22 PID table from workflow research
The old 12xx PIDs (1209/1228/120B/...) were wrong addresses -- that's why
they returned 'no response' on the truck, NOT a bus/gateway problem. The real
Ford-enhanced DIDs are in the 09xx/14xx/16xx families. Confirmed by the truck's
own brute-scan: 1446=ICP, 1445=EBP, 1440=MAP, 1442=BARO, 1310=EOT, 11B3=gear,
11B4=TSS all decode to sane on-vehicle values.

- Rewrite FORD_60_PIDS with corrected addresses + [VERIFIED]/[DOC]/[TENTATIVE] tags
- FICM voltages -> 09D0/09CF/09CE/09CD (09D0 Main = the ~48V no-start metric)
- ICP=1446 *0.57, IPR=1434, ICP_V=16AD; EOT scaling fixed to /100-40
- watch --ford now streams 09D0/09CF/1446/1434 (FICM main V + ICP during crank)
- Add diagnostics/2026-06-29-no-start/pid-research.md (full workflow findings)

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016yT89n4zR4qbrySoSiEyZs
2026-06-29 22:29:46 -04:00

14 KiB
Raw Blame History

Ford 6.0 Mode-22 PID research — workflow findings (2026-06-29)

Source: multi-agent deep web hunt (ford-60-pid-hunt workflow). Search done: 107 raw candidates from 8 finders; Dedup: 30 unique PIDs; verifying top 28; Verify done: 15/28 corroborated. Raw candidates: 107 | unique PIDs: 30 | verified: 28 | corroborated: 15.

Cross-verified across the canonical Torque "Ford 6.0L Diesel Extended PIDs" lineage, ScanGauge XGauge DB, diesel forums, and — critically — the truck's own brute-scan, which independently confirms every PID in the 0x1000-0x14FF window.


Ford 6.0L Power Stroke (2003-2007) — Enhanced PID Synthesis

Verdict-driven reconciliation of the tentative table against multi-source evidence plus the truck's own brute-scan. The headline: every PID the truck answered comes from one canonical community lineage (the "Ford 6.0L Diesel Extended PIDs" Torque list), and the empirical scan independently validates the ones that fall in the 0x10000x14FF window. The tentative table's 12xx numbers are simply wrong addresses, not a bus problem.


1. VERIFIED PID TABLE (safe for FORD_60_PIDS)

Request form is Mode 22: 22 XX XX → response 62 XX XX <data>. A = first data byte, B = second. Header where known is physical PCM addressing 7E0 (Torque "AUTO" works; ScanGauge encodes TXD 07E0…).

PID Name Units Formula Header Sources Empirically confirmed on this truck
1446 ICP — Injection Control Pressure (actual, HPOP) psi (A*256+B)*0.57 7E0 2+ indep. lineages + scan Yes00 16=22 → 12.5 psi (sane KOEO)
1445 EBP — Exhaust Back Pressure psi abs (subtract BARO for gauge) (A*256+B)*0.03625; gauge = … - [1442] 7E0 3 indep. + scan Yes01 8F=399 → 14.46 psia (atm)
1440 MAP — Manifold Absolute Pressure psi abs (A*256+B)*0.03625 7E0 (C410F1 functional) 5 indep. + scan Yes01 89=393 → 14.25 psia (atm)
1442 BARO — Barometric Pressure psi abs (A*256+B)*0.03625 7E0 3 indep. + scan Yes01 88=392 → 14.21 psia
(14401442) MGP / Boost psi gauge [1440 psi] - [1442 psi] 4 indep. + scan Yes — ≈0 psi boost at KOEO
11B3 Current Gear (5R110W TorqShift) gear int A/2 7E0 (or TCM) 3 indep. + scan Yes02 → gear 1
11B4 TSS/ISS — Turbine/Input Shaft Speed RPM (A*256+B)/4 7E0 2 indep. + scan Yes00 00 → 0 RPM (stopped). Scaling single-lineage but standard Ford RPM /4
09D0 FICM Main Power (FMP) — the ~48 V injector rail; cranking V is the no-start metric volts (A*256+B)/256 (i.e. *0.00390625; 0x3000→48 V) 7E0 3 indep. (incl. ScanGauge) Not tested — below the 0x10000x14FF scan window
09CF FICM Logic Power (FLP, ~12 V) volts (A*256+B)/256 7E0 3 indep. (ScanGauge XGauge) Not tested (below window)
09CE FICM Vehicle Power (FVP, ~1214 V batt) volts (A*256+B)/256 7E0 2 indep. Not tested (below window)
09CD FICM Sync (cam/crank sync status) boolean bit 1 of A (1=sync, 0=no); plain A = combined status byte 7E0 4 indep. (ScanGauge) Not tested (below window)
096D VGT Duty Cycle % (A*256+B)*100/32767 7E0 2 indep. (ScanGauge MTH 0064 7FFF 0000) Not tested
099F Fan Speed Sensor RPM (A*256+B)/4 (display ceiling 1000 is too low; real ~3500) 7E0 2 indep. (ScanGauge) Not tested

Mode 01 (generic SAE J1979 — NOT Mode 22) — these answer on any OBD-II tool and are the reliable engine basics on a 6.0. Request 01 XX41 XX:

PID Name Formula Units
010C Engine RPM (A*256+B)/4 rpm
0105 ECT — Coolant Temp A-40 °C
010F IAT — Intake Air Temp A-40 °C

Corroborated 5 indep. sources (CSS Electronics J1979, x-engineer, Wikipedia, etc.). Do not put these in the Mode-22 table — they are Mode 01.

Note on the FICM/VGT/Fan/ICP-V rows: documentarily corroborated but never queried on this truck because 09xx is below and 16xx is above the brute-scan window. They are safe to add but flag as re-probe to confirm on-vehicle.


2. TENTATIVE / SINGLE-SOURCE (needs a meter or FORScan check)

PID Name Formula Why tentative
1310 EOT — Engine Oil Temp °C = (A*256+B)/100 - 40; °F = *9/5+32 Number corroborated + truck-hit (1C 92=7314 → 33 °C / 92 °F, sane), but the canonical Torque list's +40 offset is a propagated transcription error. Use 40 (standard SAE/Ford encoding; physics confirms). The "changing between reads" is oil-temp drift, not a counter.
16AD ICP sensor voltage (A*256+B)*0.000072 V Single canonical lineage; never tested (outside 0x100x14FF window). Scaling physically plausible for a 05 V sensor. Tentative table's 1430 for ICP_V is wrong.
1434 IPR — Injection Pressure Regulator duty (A*13.53)/35 (= A*0.38657) canonical; variant A*100/256 (A*0.39063) ~1% higher Single Torque-list lineage; scaling conflict (the two forms are NOT exactly equal). Diagnostically negligible (<1% in the 860% operating band). Replaces tentative 120B. Not in the truck's no-response set; adjacent 14xx all answered.
1172 Battery Voltage (VPWR/B+) A/16 (0.0625 V/bit) Single Torque-list lineage; signal exists in Ford IDS list but no OEM hex/scaling. Plausible. Not truck-tested.
1672 Fuel Pump Duty (HFCM lift pump) A*100/128 (A*0.78125) Single lineage on the number; scaling uncontested + behavior well-known (sits 100%, drops on high EOT). Not truck-tested.
09CC Injection Timing BTDC (A*256+B)*10/64 (*0.15625) — use this 10× scaling conflict: ScanGauge XGauge (000A0040…) gives *10/64; Torque list adds a stray /10. Torque thread itself flagged this PID as "needs work." Trust ScanGauge form.
16C1 Fuel Level (A*256+B)*100/328 vs *1/328 Number corroborated (Torque + ScanGauge) but scaling genuinely conflicting and uncalibrated — users report ~17,000% or ~2× high. Needs per-truck full/empty calibration.
1411 MFDES — Mass Fuel Desired (no trustworthy formula) Single-source Torque CSV; published GPH formula is dimensionally broken and mislabeled. Real parameter is mg/stroke mass (~10 idle / 20 cruise / 40 WOT). Treat raw u16 as an internal count; do not ship the GPH equation. Was NOT in the scan responders.

3. BUS REALITY — the most important answer

Direct answer: on this truck, Mode 22 enhanced PIDs ARE reachable over the generic ELM327, and your "no response" results are wrong PID numbers — not an SCP-vs-CAN gateway wall.

The empirical proof is in your own scan. The truck returned live, physically-sensible Mode-22 data for 1446 (ICP), 1445 (EBP), 1440 (MAP), 1442 (BARO), 1310 (EOT), 11B3 (gear), 11B4 (TSS) — all members of the same canonical Ford-6.0 enhanced list. A bus that wasn't passing Mode 22 could not have produced 1446 → 12.5 psi or 1442 → 14.21 psia. So the request path works.

Therefore the dead PIDs — 1209, 121A, 120B, 1228, 1229, 122A, 1430, 121C — failed because those addresses are not the OBD Mode-22 DIDs for these parameters. The real ones live in the 09xx / 14xx / 16xx families: ICP=1446, EBP=1445, IPR=1434, ICP-V=16AD, FICM Main/Logic/Vehicle=09D0/09CF/09CE, FICM Sync=09CD, EOT=1310. The 12xx values look like Ford SCP/IDS-internal identifiers that simply aren't part of the generic enhanced request table.

The protocol caveat, stated honestly (a real disagreement in the evidence): Several sources correctly note that a 20032007 6.0L Super Duty/Excursion's legislated generic OBD-II bus is SAE J1850 PWM (Ford SCP, DLC pins 2 & 10) — Ford did not move Super Duty to ISO 15765 CAN until MY2008 (6.4L). Pure CAN-only ELM327 clones can't speak J1850 PWM and will NACK everything. This does not contradict your results — it just means your adapter negotiated J1850 PWM (auto-detect) and the 7E0/C410F1 headers in the ScanGauge/Torque definitions are protocol-agnostic notation, not proof of a CAN bus. Either way: the enhanced PIDs answered, so the practical bus question is settled — they're reachable with your generic adapter via Mode 22. If you ever swap to a cheap CAN-only dongle and everything goes dead, that's the J1850 issue, not the PID numbers.

Bottom line: ICP / IPR / FICM are reachable by your ELM327 via Mode 22 at the corrected addresses. FORScan is not the only path for the actual-value parameters (ICP, EBP, IPR, FICM rails). FORScan/IDS remains the only reliable path for the commanded/derived parameters — desired ICP (ICP_DES) and FICM Sync as a labeled gauge — which are not published as 22 XX XX DIDs anywhere (see §4).


4. SCAN-HIT MAPPING

Scan hit Raw Best hypothesis Reasoning / confidence
13101C 92 7314 EOT — Engine Oil Temp Corroborated number. 7314/100 40 = 33.1 °C / 91.7 °F — sane warming oil. "Changes between reads" = temperature drift, not a counter. High confidence.
144001 89 393 MAP 393*0.03625 = 14.25 psia = atmospheric KOEO. High.
144201 88 392 BARO 392*0.03625 = 14.21 psia. High.
144501 8F 399 EBP 399*0.03625 = 14.46 psia = atmospheric (≈0 gauge) at rest. High.
144600 16 22 ICP (actual) 22*0.57 = 12.5 psi KOEO residual. High. (2003 trucks baseline ~0 psi; 2004+ ~50 psi.)
144700 34 52 No reference found — undocumented One address above real ICP (1446); classic brute-scan adjacency artifact. Zero sources name it. The tentative *0.03625 was a back-fit guess with no support. Reachable (answered) but meaning unknown.
144800 11 17 No reference found — undocumented Same as 1447; no source in 4 independent compilations names 1448.
11B302 2 Current Gear 2/2 = gear 1 (idle/standstill in Drive). Validates the whole scan method. High.
11B400 00 0 TSS/ISS — Turbine/Input Shaft Speed 0/4 = 0 RPM, engine stopped. Sits immediately after gear in the 5R110 trans block (11B3 gear → 11B4 input speed → 11B5 output speed). Identity solid (2 lists); /4 scaling moderate.
11BAFF 5C 65372 / 164 No reference found — undocumented In the 11Bx PCM/transmission-status block (neighbor 11B3 is gear), so likely a trans/status value, but unconfirmed. Not trans-fluid-temp (TFT=1674/1E1C). FF5C matches no clean temp/pressure scale. Do not assign meaning without truck validation.

5. NEXT ACTIONS for the tool

Replace these tentative-table entries (wrong numbers) outright:

  • 1209 ICP1446, (A*256+B)*0.57 psi
  • 121C EBP1445, (A*256+B)*0.03625 psi abs (subtract 1442 for gauge)
  • 120B IPR1434, (A*13.53)/35 %
  • 1430 ICP_V16AD, (A*256+B)*0.000072 V
  • 1228 FICM_MPWR09D0, (A*256+B)/256 V
  • 122A FICM_LPWR09CF, (A*256+B)/256 V
  • 1229 FICM_SYNC09CD, bit 1 of A (boolean)
  • Add 09CE FICM Vehicle Power, (A*256+B)/256 V
  • 121A ICP_DESremove / mark FORScan-only (no Mode-22 DID exists)

Add as new verified entries: 1440 MAP, 1442 BARO, MGP=14401442, 11B3 gear, 11B4 TSS, 096D VGT, 099F fan, plus Mode-01 010C/0105/010F for RPM/ECT/IAT.

Fix scaling already in evidence:

  • EOT 1310: use /100 40 (drop the canonical +40).
  • Injection timing 09CC: use *10/64 (drop the stray /10).

Re-probe on the truck (highest value — these were never queried; they're outside the 0x10000x14FF window):

  • 22 09 D0, 22 09 CF, 22 09 CE, 22 09 CDthe FICM trio + sync; 09D0 cranking voltage is your no-start metric (<45 V = failing FICM).
  • 22 16 AD (ICP voltage), 22 14 34 (IPR), 22 11 72 (battery), 22 16 72 (fuel pump), 22 09 6D (VGT), 22 09 9F (fan).
  • Widen the brute scan to 0x09000x09FF and 0x16000x16FF.
  • Sanity-check IPR against KOEO ~1415%, cranking ~3040%, warm idle ~2530%; FICM Main ~4548.5 V running.

Calibration / do-not-trust:

  • 16C1 fuel level: ship as raw, require per-truck full/empty calibration (both published divisors misread).
  • 1411 MFDES: do not ship the GPH formula; expose raw u16 only (real units mg/stroke).

Is FORScan still the only reliable path? No — for the actual-value parameters (ICP, EBP, IPR, MAP/MGP, FICM rail voltages, EOT) your ELM327 + Mode 22 at the corrected addresses is sufficient. FORScan/IDS remains the only source for desired ICP (ICP_DES) and a labeled FICM Sync Yes/No gauge — those are IDS-computed/SCP-side parameters with no published generic Mode-22 DID, which is exactly why 121A/1229 returned no response.

Confidence caveat to keep in the tool's comments: the documentary corroboration, however broad in count, is largely one community lineage (the JESTERxHEAD Torque list) plus ScanGauge's independent XGauge DB. The genuinely independent confirmation is the truck's own scan for the 0x10000x14FF members. Treat 16AD/1434/1172/1672 as community-sourced-but-unverified until you read them back on the vehicle.