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.

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.

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
- 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.
- 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.
- 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.
- 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.
- 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.
| Code | Meaning | Typical causes |
|---|---|---|
| P0300 | Random/Multiple Cylinder Misfire Detected | Intake leak, low fuel pressure, air-mass error, worn plugs, low compression on several cylinders |
| P0301–P0312 | Cylinder 1–12 Misfire Detected | Coil, plug or injector on the named cylinder, compression or valve fault |
| P0313 | Misfire Detected with Low Fuel | Running low on fuel, pump pickup starvation |
| P0314 | Single Cylinder Misfire (Cylinder Not Specified) | Single-cylinder fault the ECU could not locate |
| P0315 | Crankshaft Position System Variation Not Learned | Missing relearn after ECU, CKP or flywheel work |
| P0316 | Engine Misfire Detected on Startup (First 1000 Revolutions) | Fouled plugs, weak coil at cranking voltage, cold-start fuelling |
| P0320 | Ignition/Distributor Engine Speed Input Circuit | Speed input wiring or sensor fault, electrical noise |
| P0335 | Crankshaft Position Sensor “A” Circuit | CKP sensor, harness or reluctor damage |
| P0350 | Ignition Coil Primary/Secondary Circuit | General coil supply or control circuit fault |
| P0351–P0362 | Ignition Coil “A”–”L” Primary/Secondary Circuit | Open/short coil winding, broken trigger wire, corroded connector |
| P2300 / P2301 | Ignition Coil “A” Primary Control Circuit Low / High | Trigger shorted to ground / to supply, failed smart coil |
| P2302 | Ignition Coil “A” Secondary Circuit | Carbon 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.