DCC locomotive won’t hold an address
![A hand holds a Digital Command Control throttle near a black-and-orange HO scale diesel on a scenicked layout](https://www.trains.com/wp-content/uploads/2022/05/MRR-MQB0522_Programming-on-the-Main.jpg)
Q: I’ve just gotten back into HO scale trains after years in Lionel. My DCC locomotive won’t hold an address using my MRC Prodigy system. I follow the instructions, but it never changes from the default address 3. The new number is not recognized or remembered. It was easy in Lionel, but DCC hasn’t worked for me. – Sam Scheiderer
A: I’m going to get a little math-y on you. Decoders are just tiny computers. Like all computers, they store their data in bytes, each of which is made up of eight bits, which can have a value of 0 or 1. This means one byte of data can have a value from 0 to 255, depending on which bits are set. So in order to store a locomotive address higher than 255, it has to be stored in two separate bytes, which are represented in our decoders by CV17 and CV18. CV17 holds the first (high) part of the address, and CV18 the second (low) part. But it’s not as simple as dividing the address in two, such as programming 12 into CV17 and 34 into CV18 to represent locomotive address 1234. The address must be converted to binary (which for 1234 comes out to 0000010011010010), split that into a high byte and a low byte (00000100 and 11010010), turn on the two high bits on the high byte for some reason (making it 11000100), convert those two values back to regular decimal numbers (196 and 210), then program those into CV17 and CV18. Oh, and you also have to set bit 5 of CV29 high to let the decoder know you’re using long addressing so it doesn’t ignore CV17. This involves reading the value of CV29, adding 32, and programming the total back in. Phew!
Or at least that’s how we had to do it back in cave-man days. Today, DCC control systems handle all that splitting and converting and adding and bit-setting for you. Or rather, they do so in theory; if yours did, you wouldn’t be writing to me. So we’re going to try some experiments.
The first step is to make sure your locomotive’s decoder is receiving any commands. Put it on the track, select its cab number with your throttle, and see if you can run it back and forth, blow the horn, turn the headlights on and off, and the like. If you can, who knows how it got fixed, but great! Go run your train. But again, if that was going to work, you wouldn’t have written to me.
So the next step is to set your throttle to the default address, 3. Try running the locomotive again. If it responds to address 3, then we know the address has not been set. Skip to the next step. If it doesn’t respond to address 3, the address has been set, just not to what you wanted. Put it on the programming track, choose direct programming mode (make sure no other locomotives are on the track first), and program CV8 to 8. This will reset the decoder to factory specs. Try to run the locomotive on address 3 again. If it works, your decoder has been successfully reset, and we can move on to the next step. If it doesn’t, then try to run a different locomotive on the layout. If you can, then the decoder in the balky locomotive is probably burned out. If you can’t, the problem is either with your DCC base station or how your layout is wired.
Your locomotive should now respond to address 3. Time to try programming the address again. Put it on the program track and follow your DCC base station’s instructions for programming in a short address. Just as a test, we’re going to use an address that fits in one byte and doesn’t require setting bit 5 of CV29 or any of that jazz. Program your locomotive to address 127, then see if you can run it on that address. If so, that’s a good sign! At least programming a short address works. Now follow the instructions to try programming it to the cab number, which I presume will be a long address.
Did it work? If not, there’s one more thing to try: the old-fashioned, brute-force way. We’re going to program each CV separately, like our Neanderthal ancestors did. You’ll have to do this on a dedicated programming track, in direct mode, because setting CV29 requires being able to read the original value first, which some DCC systems can’t do in mainline programming mode. First, do a factory reset on the decoder again. Then read the value of CV29 from your decoder, add 32 to it, and write that number down. Look online for a long address CV calculator, like the one at Model Rail Forum. Put in your desired address and hit the button. Program CV17 and CV18 to the numbers the calculator gave you, then program the number you wrote down into CV29. Now cross your fingers and try addressing your locomotive with the new address.
If after all this, you still can’t get an address change to stick, try taking the locomotive to a hobby shop or a friend’s layout and program it on their system. That will at least let you know if the problem is with your base station or your decoder.
Send us your questions
Have a question about modeling, operation, or prototype railroads? Send it to us at AskTrains@Trains.com. Be sure to put “Ask MR” in the subject.