Files
obdash/profiles/ford-mustang-cobra-4.6-1996.json
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

602 lines
14 KiB
JSON

{
"schema": 1,
"meta": {
"name": "1996 Ford Mustang SVT Cobra 4.6L DOHC",
"make": "Ford",
"model": "Mustang SVT Cobra",
"years": "1996",
"engine": "4.6L DOHC 32-valve modular V8 (naturally aspirated, EEC-V, MAF-metered)",
"author": "OBDash project",
"version": "0.1.0",
"protocol": "SAE J1850 PWM",
"notes": "First OBD-II model year on early EEC-V; Ford SCP J1850 PWM at 41.6 kbps. MAF-based airflow (no MAP/speed-density). V8 with two banks: dual-bank fuel trims and pre/post-cat narrowband HO2S included. CAN-era PIDs (0142 module voltage, 0146 ambient, 0133 baro, 012F fuel level) not supported and omitted. No verifiable manufacturer-enhanced (mode 22) PIDs for this EEC-V SCP vehicle; generic ELM327 adapters widely reported to fail enhanced sessions on Ford SCP PWM. All reliable data is in the standard SAE J1979 mode-01 set. Validated: all formulas safe-evaluator-clean; fuel-trim vmax normalized to +-100."
},
"presets": {
"basic": [
"RPM",
"VSS",
"ECT",
"IAT",
"MAF",
"TPS",
"LOAD",
"TIMING",
"BATT"
],
"fuel": [
"FUEL_STATUS",
"STFT1",
"LTFT1",
"STFT2",
"LTFT2",
"O2_B1S1",
"O2_B1S2",
"O2_B2S1",
"O2_B2S2"
]
},
"pids": [
{
"key": "FUEL_STATUS",
"name": "Fuel System Status",
"mode": "01",
"pid": "03",
"nbytes": 2,
"formula": "A",
"unit": "",
"group": "fuel",
"vmin": 0,
"vmax": 255,
"confidence": "verified",
"notes": "Bitmask: 1=open loop(cold),2=closed loop. Bank1 in A, bank2 in B."
},
{
"key": "LOAD",
"name": "Calculated Engine Load",
"mode": "01",
"pid": "04",
"nbytes": 1,
"formula": "A*100/255",
"unit": "%",
"group": "engine",
"vmin": 0,
"vmax": 100,
"confidence": "verified",
"round": 0
},
{
"key": "ECT",
"name": "Engine Coolant Temp",
"mode": "01",
"pid": "05",
"nbytes": 1,
"formula": "A-40",
"unit": "C",
"group": "engine",
"vmin": -40,
"vmax": 150,
"confidence": "verified",
"round": 0
},
{
"key": "STFT1",
"name": "Short Term Fuel Trim B1",
"mode": "01",
"pid": "06",
"nbytes": 1,
"formula": "A*100/128-100",
"unit": "%",
"group": "fuel",
"vmin": -100,
"vmax": 100,
"confidence": "verified",
"round": 0
},
{
"key": "LTFT1",
"name": "Long Term Fuel Trim B1",
"mode": "01",
"pid": "07",
"nbytes": 1,
"formula": "A*100/128-100",
"unit": "%",
"group": "fuel",
"vmin": -100,
"vmax": 100,
"confidence": "verified",
"round": 0
},
{
"key": "STFT2",
"name": "Short Term Fuel Trim B2",
"mode": "01",
"pid": "08",
"nbytes": 1,
"formula": "A*100/128-100",
"unit": "%",
"group": "fuel",
"vmin": -100,
"vmax": 100,
"confidence": "verified",
"round": 0,
"notes": "V8 second bank"
},
{
"key": "LTFT2",
"name": "Long Term Fuel Trim B2",
"mode": "01",
"pid": "09",
"nbytes": 1,
"formula": "A*100/128-100",
"unit": "%",
"group": "fuel",
"vmin": -100,
"vmax": 100,
"confidence": "verified",
"round": 0,
"notes": "V8 second bank"
},
{
"key": "RPM",
"name": "Engine RPM",
"mode": "01",
"pid": "0C",
"nbytes": 2,
"formula": "(A*256+B)/4",
"unit": "rpm",
"group": "engine",
"vmin": 0,
"vmax": 8000,
"confidence": "verified",
"round": 0
},
{
"key": "VSS",
"name": "Vehicle Speed",
"mode": "01",
"pid": "0D",
"nbytes": 1,
"formula": "A",
"unit": "km/h",
"group": "driveline",
"vmin": 0,
"vmax": 255,
"confidence": "verified",
"round": 0
},
{
"key": "TIMING",
"name": "Ignition Timing Advance",
"mode": "01",
"pid": "0E",
"nbytes": 1,
"formula": "A/2-64",
"unit": "deg",
"group": "engine",
"vmin": -64,
"vmax": 64,
"confidence": "verified",
"round": 0
},
{
"key": "IAT",
"name": "Intake Air Temp",
"mode": "01",
"pid": "0F",
"nbytes": 1,
"formula": "A-40",
"unit": "C",
"group": "air",
"vmin": -40,
"vmax": 150,
"confidence": "verified",
"round": 0
},
{
"key": "MAF",
"name": "MAF Air Flow Rate",
"mode": "01",
"pid": "10",
"nbytes": 2,
"formula": "(A*256+B)/100",
"unit": "g/s",
"group": "air",
"vmin": 0,
"vmax": 300,
"confidence": "verified",
"round": 2,
"notes": "Cobra is MAF-metered; no MAP/speed-density"
},
{
"key": "TPS",
"name": "Throttle Position",
"mode": "01",
"pid": "11",
"nbytes": 1,
"formula": "A*100/255",
"unit": "%",
"group": "air",
"vmin": 0,
"vmax": 100,
"confidence": "verified",
"round": 0
},
{
"key": "O2_B1S1",
"name": "O2 Voltage B1S1 (upstream)",
"mode": "01",
"pid": "14",
"nbytes": 2,
"formula": "A/200",
"unit": "V",
"group": "fuel",
"vmin": 0,
"vmax": 1.275,
"confidence": "verified",
"round": 2,
"notes": "Narrowband HO2S; B = STFT (B*100/128-100)"
},
{
"key": "O2_B1S2",
"name": "O2 Voltage B1S2 (downstream)",
"mode": "01",
"pid": "15",
"nbytes": 2,
"formula": "A/200",
"unit": "V",
"group": "fuel",
"vmin": 0,
"vmax": 1.275,
"confidence": "verified",
"round": 2,
"notes": "Post-cat monitor sensor"
},
{
"key": "O2_B2S1",
"name": "O2 Voltage B2S1 (upstream)",
"mode": "01",
"pid": "18",
"nbytes": 2,
"formula": "A/200",
"unit": "V",
"group": "fuel",
"vmin": 0,
"vmax": 1.275,
"confidence": "verified",
"round": 2,
"notes": "V8 second bank upstream"
},
{
"key": "O2_B2S2",
"name": "O2 Voltage B2S2 (downstream)",
"mode": "01",
"pid": "19",
"nbytes": 2,
"formula": "A/200",
"unit": "V",
"group": "fuel",
"vmin": 0,
"vmax": 1.275,
"confidence": "verified",
"round": 2,
"notes": "V8 second bank post-cat"
},
{
"key": "OBD_STD",
"name": "OBD Standard Conformance",
"mode": "01",
"pid": "1C",
"nbytes": 1,
"formula": "A",
"unit": "",
"group": "misc",
"vmin": 0,
"vmax": 255,
"confidence": "verified",
"notes": "Reports OBD-II (US) conformance code"
},
{
"key": "RUNTIME",
"name": "Run Time Since Engine Start",
"mode": "01",
"pid": "1F",
"nbytes": 2,
"formula": "A*256+B",
"unit": "s",
"group": "engine",
"vmin": 0,
"vmax": 65535,
"confidence": "verified",
"round": 0
},
{
"key": "BATT",
"name": "Battery (OBD port)",
"mode": "atrv",
"unit": "V",
"group": "power",
"vmin": 0,
"vmax": 16,
"confidence": "verified",
"notes": "ELM327 ATRV pin voltage"
}
],
"dtcs": [
{
"code": "P1000",
"desc": "OBD-II monitor testing not complete (drive cycle not finished / battery recently disconnected)",
"system": "misc",
"no_start": false
},
{
"code": "P1100",
"desc": "Mass Air Flow (MAF) sensor circuit intermittent",
"system": "air",
"no_start": false
},
{
"code": "P1101",
"desc": "Mass Air Flow (MAF) sensor out of self-test range",
"system": "air",
"no_start": false
},
{
"code": "P1120",
"desc": "Throttle Position Sensor (TPS) out of range low",
"system": "air",
"no_start": false
},
{
"code": "P1121",
"desc": "Throttle Position Sensor (TPS) inconsistent with MAF sensor",
"system": "air",
"no_start": false
},
{
"code": "P1124",
"desc": "Throttle Position Sensor (TPS) out of self-test range",
"system": "air",
"no_start": false
},
{
"code": "P1131",
"desc": "HO2S-11 (bank 1 upstream) signal indicates lean / lacks switching",
"system": "fuel",
"no_start": false
},
{
"code": "P1132",
"desc": "HO2S-11 (bank 1 upstream) signal indicates rich / lacks switching",
"system": "fuel",
"no_start": false
},
{
"code": "P1150",
"desc": "HO2S-21 (bank 2 upstream) signal indicates lean / lacks switching",
"system": "fuel",
"no_start": false
},
{
"code": "P1151",
"desc": "HO2S-21 (bank 2 upstream) signal indicates rich / lacks switching",
"system": "fuel",
"no_start": false
},
{
"code": "P1233",
"desc": "Fuel pump driver module off-line (FPDM disabled or disconnected)",
"system": "fuel",
"no_start": true
},
{
"code": "P1235",
"desc": "Fuel pump control out of range",
"system": "fuel",
"no_start": true
},
{
"code": "P1237",
"desc": "Fuel pump secondary circuit fault",
"system": "fuel",
"no_start": false
},
{
"code": "P1260",
"desc": "THEFT detected - vehicle immobilized (PATS passive anti-theft, invalid key)",
"system": "misc",
"no_start": true
},
{
"code": "P1270",
"desc": "Engine RPM or vehicle speed limiter reached",
"system": "engine",
"no_start": false
},
{
"code": "P1351",
"desc": "Ignition Diagnostic Monitor (IDM) circuit input fault",
"system": "engine",
"no_start": false
},
{
"code": "P1364",
"desc": "Ignition coil primary circuit fault",
"system": "engine",
"no_start": false
},
{
"code": "P1400",
"desc": "DPFE (Differential Pressure Feedback EGR) sensor circuit low voltage",
"system": "air",
"no_start": false
},
{
"code": "P1401",
"desc": "DPFE (Differential Pressure Feedback EGR) sensor circuit high voltage",
"system": "air",
"no_start": false
},
{
"code": "P1405",
"desc": "DPFE sensor upstream hose off or plugged",
"system": "air",
"no_start": false
},
{
"code": "P1406",
"desc": "DPFE sensor downstream hose off or plugged",
"system": "air",
"no_start": false
},
{
"code": "P1409",
"desc": "EGR Vacuum Regulator (EVR) solenoid control circuit fault",
"system": "air",
"no_start": false
},
{
"code": "P1443",
"desc": "EVAP purge control valve / system fault",
"system": "air",
"no_start": false
},
{
"code": "P1451",
"desc": "EVAP canister vent solenoid circuit fault",
"system": "air",
"no_start": false
},
{
"code": "P1500",
"desc": "Vehicle Speed Sensor (VSS) intermittent",
"system": "driveline",
"no_start": false
},
{
"code": "P1504",
"desc": "Idle Air Control (IAC) circuit malfunction",
"system": "air",
"no_start": false
},
{
"code": "P1505",
"desc": "Idle Air Control (IAC) system at adaptive clip",
"system": "air",
"no_start": false
},
{
"code": "P1516",
"desc": "Intake Manifold Runner Control (IMRC) input error bank 1",
"system": "air",
"no_start": false
},
{
"code": "P1517",
"desc": "Intake Manifold Runner Control (IMRC) input error bank 2",
"system": "air",
"no_start": false
},
{
"code": "P1518",
"desc": "Intake Manifold Runner Control (IMRC) stuck open",
"system": "air",
"no_start": false
},
{
"code": "P1519",
"desc": "Intake Manifold Runner Control (IMRC) stuck closed",
"system": "air",
"no_start": false
},
{
"code": "P1520",
"desc": "Intake Manifold Runner Control (IMRC) circuit fault",
"system": "air",
"no_start": false
},
{
"code": "P0171",
"desc": "System too lean (bank 1)",
"system": "fuel",
"no_start": false
},
{
"code": "P0174",
"desc": "System too lean (bank 2)",
"system": "fuel",
"no_start": false
},
{
"code": "P0172",
"desc": "System too rich (bank 1)",
"system": "fuel",
"no_start": false
},
{
"code": "P0175",
"desc": "System too rich (bank 2)",
"system": "fuel",
"no_start": false
},
{
"code": "P0135",
"desc": "HO2S heater circuit malfunction (bank 1 sensor 1)",
"system": "fuel",
"no_start": false
},
{
"code": "P0300",
"desc": "Random / multiple cylinder misfire detected",
"system": "engine",
"no_start": false
},
{
"code": "P0301",
"desc": "Cylinder 1 misfire detected",
"system": "engine",
"no_start": false
},
{
"code": "P0302",
"desc": "Cylinder 2 misfire detected",
"system": "engine",
"no_start": false
},
{
"code": "P0305",
"desc": "Cylinder 5 misfire detected",
"system": "engine",
"no_start": false
},
{
"code": "P0308",
"desc": "Cylinder 8 misfire detected",
"system": "engine",
"no_start": false
},
{
"code": "P0420",
"desc": "Catalyst system efficiency below threshold (bank 1)",
"system": "air",
"no_start": false
},
{
"code": "P0430",
"desc": "Catalyst system efficiency below threshold (bank 2)",
"system": "air",
"no_start": false
},
{
"code": "P0340",
"desc": "Camshaft Position (CMP) sensor circuit malfunction",
"system": "engine",
"no_start": true
},
{
"code": "P0320",
"desc": "Ignition / Crankshaft Position (CKP) sensor circuit malfunction",
"system": "engine",
"no_start": true
}
]
}