Ignition Coils and Misfire Detection Explained: Dwell Control, Crank-Speed Monitoring and P0300 Diagnostics

Misfire codes are among the most common faults a workshop sees, and nearly all of them trace back to how the ECU drives the ignition and how it judges combustion afterwards. This technician-focused guide explains ignition coil construction, dwell control, spark advance, crank-speed misfire monitoring and a practical routine for P0300–P0312, P0351–P0362 and the P2300 coil codes, with notes for motorcycles, CNG trucks and small machine engines.

Ignition hardware in a modern engine

The distributor is long gone from most engines. Wasted-spark coil packs, which fire two cylinders together, survive on some older designs, but the standard today is one coil per cylinder mounted straight on the spark plug: coil-on-plug, also called pencil or stick coils.

Inside the coil are two windings around an iron core. The low-voltage primary receives battery voltage and is switched to ground by a power transistor (usually an IGBT). The secondary, with far more turns, steps the collapse of the magnetic field up to the high voltage needed to bridge the plug gap. On “passive” coils the IGBT lives in the ECU; on “active” or smart coils it is built into the coil and the ECU only sends a low-current logic trigger. That difference matters when you scope the circuit, because the waveforms you see are completely different.

Schematic of a coil-on-plug ignition circuit: battery feed, ECU timing and dwell calculation, IGBT driver, primary and secondary windings and spark plug
Coil-on-plug ignition circuit (simplified diagram)

Dwell control explained

Dwell is the time the primary is switched on and current is building. Energy stored in the coil depends on that current, so the ECU has to switch on early enough to reach the target, but not so early that the coil and driver overheat. The dwell map is usually indexed by battery voltage and rpm: low supply voltage during cranking needs longer dwell, and high engine speed squeezes the time window. Some ECUs also monitor primary current and trim dwell in closed loop. Specific values belong to each calibration and coil design, so use manufacturer data instead of rules of thumb.

Spark advance and its corrections

The moment dwell ends is the moment of ignition. The ECU schedules it at a crank angle before TDC taken from a base advance map (rpm against load), then corrects it for:

  • coolant and intake air temperature,
  • knock control, which retards individual cylinders when knock is detected,
  • idle-speed stabilisation and torque interventions (gear shifts, traction control),
  • catalyst heating, which uses deliberately late timing after a cold start.

All of this depends on accurate crank and cam signals. The CKP gives angle and speed, the CMP identifies the compression stroke, and losing either can mean no spark at all or a fallback to wasted-spark mode on some systems.

Crank-speed misfire monitoring

Every combustion event gives the crankshaft a small push. The ECU divides the reluctor wheel into segments, one per firing cylinder, and times each segment. When a cylinder fails to burn its charge, the crank decelerates and that segment time grows. The ECU attributes the slow segment to a cylinder using the firing order and counts misfires over a test window, typically a few hundred or a thousand revolutions.

Bar chart concept of crankshaft segment times where one cylinder shows longer segment time, illustrating ECU misfire detection
Misfire detection from crankshaft speed (simplified diagram)

Two limits are applied. An emissions-level misfire rate stores a pending code and turns the MIL on once confirmed. A catalyst-damage rate makes the MIL flash and often triggers injector shut-off on that cylinder to protect the converter. To avoid false alarms, the ECU learns the mechanical tolerance of the trigger wheel (crank variation learn, see P0315) and suspends monitoring on rough roads, during fuel cut or under large torque transients. Certain manufacturers add ionisation sensing through the plug to confirm combustion.

A practical diagnostic routine

  1. Freeze frame first. Load, rpm, temperature and fuel trims tell you if it is an ignition-under-load problem or a mixture problem at idle.
  2. Live misfire counters. Watch per-cylinder counts while reproducing the condition. A single cylinder points to a local part; several random cylinders point to shared systems such as fuel pressure, intake leaks, air metering or timing chain stretch.
  3. Move parts. Swap the coil to another cylinder, then the plug. A misfire that follows the part is solved; one that stays requires injector, compression and leak-down checks.
  4. Check plugs, boots and wells. Excessive gap, oil in the well and cracked boots allow the spark to track to the head, especially on boosted engines.
  5. Circuit faults. For P0351–P0362 and P2300–P2329, verify supply, ground and trigger with a scope or multimeter, and inspect connectors before suspecting the ECU driver.

Beyond passenger cars

High-revving motorcycle engines are sensitive to plug wear and dwell at the top of the rev range, and many use twin plugs per cylinder. Natural-gas trucks rely on high-energy spark ignition because methane is harder to ignite than petrol. Small petrol engines on utility vehicles and agricultural or garden equipment may still run magneto ignition with no misfire monitoring. Diesels have no spark plugs, yet many diesel ECUs use crank-speed analysis for cylinder balance and can still log misfire codes.

Related fault codes (DTCs)

Generic SAE J2012 codes. Coil lettering and cylinder numbering follow the manufacturer’s convention; always check service information.

CodeMeaningTypical causes
P0300Random/Multiple Cylinder Misfire DetectedIntake leak, low fuel pressure, air-mass error, worn plugs, low compression on several cylinders
P0301–P0312Cylinder 1–12 Misfire DetectedCoil, plug or injector on the named cylinder, compression or valve fault
P0313Misfire Detected with Low FuelRunning low on fuel, pump pickup starvation
P0314Single Cylinder Misfire (Cylinder Not Specified)Single-cylinder fault the ECU could not locate
P0315Crankshaft Position System Variation Not LearnedMissing relearn after ECU, CKP or flywheel work
P0316Engine Misfire Detected on Startup (First 1000 Revolutions)Fouled plugs, weak coil at cranking voltage, cold-start fuelling
P0320Ignition/Distributor Engine Speed Input CircuitSpeed input wiring or sensor fault, electrical noise
P0335Crankshaft Position Sensor “A” CircuitCKP sensor, harness or reluctor damage
P0350Ignition Coil Primary/Secondary CircuitGeneral coil supply or control circuit fault
P0351–P0362Ignition Coil “A”–”L” Primary/Secondary CircuitOpen/short coil winding, broken trigger wire, corroded connector
P2300 / P2301Ignition Coil “A” Primary Control Circuit Low / HighTrigger shorted to ground / to supply, failed smart coil
P2302Ignition Coil “A” Secondary CircuitCarbon tracking, damaged boot, open secondary

P2303 onward repeats the control-low, control-high and secondary pattern for coils B to J (up to P2329).

Tuning implications

Raising cylinder pressure raises the voltage needed to fire the plug, so a tune exposes tired coils and worn plugs quickly. Fix misfire history, set correct plug gap and heat range, and verify coil boots before flashing a Stage 1 or Stage 2 file. Keep misfire detection and knock control active, and set advance by logging knock retard per cylinder rather than adding degrees blindly.

Need a file with sensible ignition timing and all protections intact? Browse tuning files at ECUFlashFiles.