128 vs 28 speed steps (and why it's really 126)
Jerky throttle response and flickering lights mean the decoder and command station disagree about speed steps. Here's the fix.
If a locomotive lurches between a few coarse speeds instead of accelerating smoothly, or its lights flicker or switch off as you change speed, the decoder and the command station are disagreeing about how many speed steps are in use.
It is a five-second fix once you know what you’re looking at.
The three modes
DCC defines three speed step modes:
- 14 steps — the original. Coarse, and it uses a bit in the speed packet for the headlight, which matters in a moment.
- 28 steps — the long-standing default. Smooth enough for most purposes.
- 128 steps — the finest. Uses a different, longer packet format.
More steps means finer throttle resolution. At 14 steps each notch is a noticeable jump; at 128 the movement between adjacent steps is barely perceptible.
Why 128 is actually 126
The 128-step packet has a byte with 128 possible values, but two of them are reserved:
- 0 — stop
- 1 — emergency stop
That leaves 2–127, which is 126 usable speed values. So a throttle advertising “128 speed steps” gives you 126 actual speeds plus two ways of stopping.
This is why you will see the mode called 128 in some places and 126 in others. They are the same thing described from different ends — 128 counts the encoding, 126 counts the speeds you can select. Nothing is wrong and there is nothing to configure differently.
The mismatch, and what it looks like
14/28 selection lives in bit 1 of CV29 on the decoder:
- Bit 1 off — decoder expects 14 speed steps
- Bit 1 on (value 2) — decoder expects 28 speed steps
128-step mode is different: it uses its own packet format, and decoders that support it recognise it automatically. There is no CV setting for 128.
The trouble comes from the fact that a 14-step and a 28-step packet look identical on the wire. The decoder cannot tell them apart — it just interprets whatever arrives according to what CV29 told it to expect. Get that wrong and:
Command station sending 28, decoder expecting 14. The loco responds to roughly every other step, so half the throttle range does nothing and the other half jumps. The headlight flickers or toggles as you change speed, because in 14-step mode one bit of the speed byte is the headlight — and in 28-step mode that same bit is part of the speed value.
Command station sending 14, decoder expecting 28. Broadly the same mess in reverse: coarse, lurching movement, roughly half the expected top speed.
That symptom is close to diagnostic. If the headlight changes state as you move the speed control, you have a 14-versus-28 mismatch, not a wiring fault.
Fixing it
The reliable direction is to put everything in 28/128 mode, which is what modern equipment expects.
- Put the loco on the programming track.
- Read CV29.
- If bit 1 is clear — that is, if the value is even below 2, or more precisely if
CV29 & 2 == 0— add 2 to the value and write it back.
Worked example: CV29 reads 32 (long address enabled, 14 steps). 32 has bit 1 clear, so write 34.
Then set the throttle side to 28 or 128. In DCC-EX, 128-step mode is the default and generally the one to leave alone.
If it is still wrong afterwards
- Check you changed the right loco. On the main track you are programming by address, and a typo means you configured something else entirely.
- Confirm the write took. Read CV29 back. If reads fail on your programming track, that is a separate problem — see EX-MotorShield8874 vs the L298N.
- Check the decoder supports 128. Almost everything current does. Genuinely old decoders may not, and will need the command station set to 28 for that loco.
- Rule out mechanics. If movement is lumpy but the lights behave, you are probably looking at a dirty commutator or dirty track, not a speed step problem.
Where to go next
- Decoder programming that actually matters — CV29 in full
- CV reference table