Most people log one knock channel. Knock Retard, in degrees, one number per sample. It tells you the ECM pulled timing.
What it doesn't tell you is which cylinder made it do that — and that distinction decides whether you reach for the laptop or the socket set.
Two Faults, One Number
Say your log peaks at 11° of retard. Two very different engines produce that same number.
Engine A — all eight cylinders knocking together, each seeing 9–11°. That's a calibration problem. Too much timing for the fuel, the load, or the air temperature. The fix is in the spark table.
Engine B — seven cylinders at zero, one at 11°. That is not a calibration problem. Timing is fine on seven cylinders. Something is wrong with that one hole: the plug, the coil, the injector, or coolant flow past it.
Aggregate knock reports both as "11°."
And here's the part that costs power: if you treat Engine B like Engine A, you pull timing across the whole table. You give up power on seven healthy cylinders, the one bad cylinder still knocks because you never fixed what was actually wrong, and now the log looks better — because you masked it. The tune is worse and the fault is still there.
How to Log It
In VCM Scanner, add the per-cylinder knock PIDs alongside the aggregate channel. On GM Gen V LT and LS platforms they export as:
Knock Retard Cyl 1
Knock Retard Cyl 2
...
Knock Retard Cyl 8
Keep the aggregate Knock Retard channel too. You want both: the aggregate for the headline, the per-cylinder detail for the diagnosis.
That's it. No extra hardware, no special session — just channels most people don't think to add.
Worth knowing how uncommon this is. Across a corpus of 470 real HPTuners logs, only 14% carried per-cylinder knock channels at all. The other 83% logged the aggregate alone. Nobody is hiding this from you; it just isn't in the default channel list, so most logs simply never carry it.
What the Data Looks Like
Here's a healthy engine with normal scatter. Peak retard per cylinder, across one pull:
Cyl 1: 1.0° Cyl 5: 1.1°
Cyl 2: 1.4° Cyl 6: 1.6°
Cyl 3: 1.2° Cyl 7: 2.4°
Cyl 4: 2.0° Cyl 8: 1.3°
Cylinder 7 is the worst of the eight. It is also fine. Real engines are not perfectly even — chamber-to-chamber variation, sensor placement, and coolant distribution all produce spread. A cylinder being highest is not a finding.
Now a single-cylinder fault:
Cyl 1: 0.2° Cyl 5: 0.2°
Cyl 2: 0.1° Cyl 6: 0.1°
Cyl 3: 0.3° Cyl 7: 11.0°
Cyl 4: 0.0° Cyl 8: 0.2°
Same aggregate peak either way, if you only logged the one channel. Completely different job.
The Line Between Them
The question is where "worst cylinder" becomes "bad cylinder." Three conditions have to hold together:
It has to clear the noise floor. Sub-degree retard on a Gen V valvetrain is mechanical noise the sensors pick up, not detonation. A cylinder can be the worst of eight and still be measuring nothing.
It has to persist. One sample is not a fault. A single spike in a thousand rows is a bump in the road or an electrical transient.
It has to stand clear of its siblings. Compare against the median of the other cylinders, not the mean — with eight cylinders, one bad hole drags a mean upward and partly hides itself behind its own contribution. And the margin needs to be wider than the noise floor, because normal scatter is real. Calling normal scatter a fault would be worse than saying nothing.
TuneView uses 2° above the median of the other cylinders, with the noise-floor and persistence conditions on top. On the healthy example above, the spread from the median is 1.1° — silent, correctly. On the fault example it's 10.8° — flagged.
What to Do When One Cylinder Is Isolated
Don't touch the spark table yet.
Swap the plug and coil with a cylinder that's quiet, and re-log. This is the fastest diagnostic in the toolbox, and it splits the problem in half:
- The knock follows the parts → it's ignition. You've found it.
- The knock stays on the cylinder → it's not ignition. Look at that injector, and at coolant flow to that hole.
Either way you've spent one log and one plug swap to answer a question that pulling global timing would have buried.
Does This Actually Work on Real Data?
Fair question, and the honest answer matters more than a confident one.
We ran this over every log in our corpus that carries per-cylinder channels — 67 of them. It flagged an isolated cylinder on 23 and stayed quiet on the rest. Quiet is the correct answer most of the time; a check that fires constantly is noise wearing a lab coat.
One of the flagged logs belonged to an engine whose owner later confirmed, from the engine rather than from the data, that a spark plug connector had failed on exactly the cylinder the log pointed at. The reading was made from the datalog alone, before anyone knew what was physically wrong.
That's one confirmation, not a study, and we'd rather say so plainly than dress it up. But it's the shape of the thing: the fault was legible in data that most logs simply throw away.
The Short Version
Add the per-cylinder knock channels to your VCM Scanner config. Keep the aggregate channel too. It costs nothing and it's the difference between "the engine knocked" and "cylinder 7 knocked and the other seven didn't."
One of those tells you which table to open. The other tells you which plug to pull.
TuneView reads HPTuners VCM Scanner logs and returns evidence-backed revision priorities — including per-cylinder knock divergence when your log carries the channels. See what a full tune covers.