← Owner's Log
Workshop Reference
Aston Martin DB9 · VH Platform · First-Hand Knowledge
2009 DB9 Coupé · 5.9L V12
Source: first-hand diagnosis, April 2026

Everything on this page came out of real diagnostic work on this car — much of it is not documented in the official workshop manual. The full story is in the misfire diagnostic report.

01 / V12 Cylinder Numbering & Twin-ECU Mapping

⚠ This mapping is not documented in the official workshop manual. It was confirmed directly with an Aston Martin master technician. It applies to both LHD and RHD cars.

The AML V12 is managed as two independent six-cylinder engines, each with its own Powertrain Control Module. Each ECU numbers its own cylinders 1–6 internally, front to rear. Global OBD-II DTC codes (P030x) use the full 1–12 scheme.

ECULabelBankGlobal cyl numbersPhysical location
Primary PCMEMS-PDriver (RH)1 – 6Numbered front to rear
Secondary PCMEMS-SPassenger (LH)7 – 12Numbered front to rear
Global cylinder map (viewed from above, front of car at top):

  PASSENGER SIDE (EMS-S)                    DRIVER SIDE (EMS-P)
  Cyl 7  · EMS-S Inj 1  ←— front ——→  Cyl 1  · EMS-P Inj 1
  Cyl 8  · EMS-S Inj 2                 Cyl 2  · EMS-P Inj 2
  Cyl 9  · EMS-S Inj 3                 Cyl 3  · EMS-P Inj 3
  Cyl 10 · EMS-S Inj 4                 Cyl 4  · EMS-P Inj 4
  Cyl 11 · EMS-S Inj 5                 Cyl 5  · EMS-P Inj 5
  Cyl 12 · EMS-S Inj 6  ←— rear  ——→  Cyl 6  · EMS-P Inj 6

02 / ThinkDiag Numbering Caveats

ThinkDiag exposes two different numbering schemes that must not be confused, and it can only read one ECU at a time.

Live data PIDs — INJ_FAULT[0]–[5]

ECU-relative. Always 1–6, relative to whichever ECU is active in the current session. INJ_FAULT[0] = Injector 1 on the active ECU — not global Cylinder 1.

Stored DTC misfire codes — P030x

Global SAE J1979 numbering, 1–12 spanning both banks. These appear in whichever ECU session is open but reference the global scheme.

ℹ A session connected to EMS-S may return stored codes referencing global cylinder 5 — which physically lives on EMS-P. This is not a contradiction: it is a global DTC stored by the crankshaft position sensor misfire algorithm, which operates across both banks.

03 / Fault Code Log — Real, Ghost & Derived

Codes present during the April 2026 misfire diagnosis. The practical rule: a single confirmed dead cylinder on one bank of this V12 can generate 1–2 ghost misfire codes on adjacent or cross-bank cylinders. Identify and fix the true dead cylinder first — the sympathy codes clear on their own.

CodeDescriptionVerdictResolution
P0307 Cylinder 7 misfire detected Real EMS-S Inj 1 blocked — injector cleaned and refitted
P0305 Cylinder 5 misfire detected Ghost Sympathy/compensation code — cleared when Cyl 7 restored
P0300 Random/multiple misfire Derived Consequence of P0307 — cleared automatically
P1656 Misfire on startup (first 1,000 rev) Derived Cleared automatically
P1000 System check not completed since memory clear Expected Self-clears after full drive cycle (~few days)

Why a ghost misfire code appears

The VH V12 uses a Ford-derived neural network misfire detection system (JPL/NASA-origin technology, first production use on the DB9 in 2004), inferring misfires from crankshaft deceleration pulses. A consistently dead cylinder creates a large rotational irregularity that can be misread as a misfire on an adjacent firing-order position. On top of that, unburnt fuel and excess oxygen pumped through the dead cylinder corrupts the O2 sensor readings for the bank — the ECU leans the whole bank in compensation, which can push borderline cylinders into misfiring at idle. Some ECUs also retard timing across the bank to protect the catalysts, which can itself tip a marginal cylinder over.

04 / Differential Diagnosis — Post-Reassembly Dead Cylinder

When a single cylinder presents as dead immediately after manifold/injector work, work through this order before committing to a ~3-hour manifold stripdown. The stripdown is only justified if steps 1–4 yield nothing.

  1. Injector unplug test  — engine idling, unplug injector connectors one at a time. A contributing cylinder causes a noticeable idle change when unplugged; a dead cylinder causes no change. This tests physical cylinder contribution directly — a blocked injector, cracked plug, or internally failed coilpack all look electrically normal to the ECU.
  2. Vacuum leak test  — spray brake cleaner along the manifold-to-head joint at idle. Any change in idle quality (even briefly) = vacuum leak at that point. Note: the DB9 lower inlet manifold uses individual port gaskets, so a single-port failure is possible without affecting adjacent cylinders.
  3. Pull and bench-test the injector  — 12V pulse tester plus flow/spray test. A blocked injector throws no electrical fault code: the ECU monitors the primary circuit, not fuel flow.
  4. Check coilpack connector seating  — these connectors can feel home without full contact. A connected-but-unreliable coilpack won't throw a hard circuit fault; it produces an intermittent or dead spark.
  5. Cracked plug  — invisible to the ECU, only detectable by inspection or substitution. Plugs can crack during installation torquing.

05 / Ultrasonic Injector Cleaning Protocol

Learned the hard way: ultrasonic cleaning dislodged a deposit inside an injector, and without active flushing the debris resettled onto the pintle seat, creating a complete blockage. The solenoid still operated perfectly — no fault code, no fuel.

  1. Ultrasonically clean the injector with a 12V pulse tester connected and active throughout — pulsing during the clean prevents dislodged debris from resettling on the pintle.
  2. Immediately after cleaning, flush with clean solvent under pressure while still pulsing, before the injector is set down.
  3. Verify: injector ticks audibly (solenoid firing) and produces a correct, even spray cone pattern on the bench.
  4. Never ultrasonically clean and refit without bench-testing flow and spray pattern.

06 / Misfire Correction Factor Relearn (Coast-Down)

Required after replacing plugs and/or coilpacks — the neural-net misfire system learned its baseline from the old ignition components. Also known as the flywheel learning or adaptive learning procedure. Same procedure for all DB9 model years (confirmed on 2005, 2007, 2008, 2010 and 2013 MY).

Pre-conditions — all must be met

Procedure

  1. Accelerate smoothly to 70 mph in Drive. Cruise briefly to stabilise.
  2. Lift off the throttle completely. Coast in gear to 20 mph with zero brake or throttle input — any input aborts the run; start again.
  3. Re-accelerate to 70 mph and repeat.
  4. Perform 5 complete coast-downs, or monitor live data and stop when learned (see below).

Verification with ThinkDiag / Foxwell NT530

In live data, watch 36-1 Profile Correction Learned (item 209 on the Foxwell NT530). It changes from Not Learned to Programmed when complete. In practice this has been observed after as few as one coast-down on a healthy engine — connect the tool and watch live rather than doing all five blindly.

⚠ A P1000 code after clearing memory is normal and not an indication the relearn failed. It self-clears after a few days of normal driving as the full OBD-II drive cycle completes.

07 / Sources

Aston Martin DB9 · Workshop reference · first-hand knowledge Owner's log