DCC Advanced Topic / GlossaryService ModeThis is one of the most misunderstood, and poorly implemented and poorly documented functions in DCC.Service mode is a special command mode that allows reading and writing of registers/CVs/Configuration Variables in a decoder. This mode has been around since the inception of DCC.First, many people use the term: programming track, but it is not the track that enables Service Mode, but the Command Station with a special output mode. To make it worse, some systems do not have a dedicated, separate set of outputs for this mode, but share it with the normal track outputs.Writing CVs in normal DCC track mode, called POM, or Programming On the Main cannot read back. There are other situations, like where the locomotive address has been lost that require Service Mode.Issues with Service Mode:The most common issues are:People not understanding what output is for Service mode, and where it is directedNot having a properly isolated track for programming:in Service modeDecoders that require more programming currentDecoders that require more programming voltageHaving too much track connected when in service modeHaving more than a single loco/decoder on the track in service modeHaving too much wire length between the programming track and the command station.Any and all of the above can cause issues. More on Service ModeMost systems are not very forthcoming how Service Mode is supported.Service mode actually has up to 4 different programming modes, and very few manufacturers indicate which they use and even fewer allow you toUnfortunately, most systems do not tell you want modes they use, or the voltage or current, or the "procedure" (often a better system will try one mode, and if that fails, it will "fall back" to an older/slower protocol. The 4 Service Mode programming methods are:Address mode(Physical) Register modePaged modeDirect modeNot all systems support all 4, and there is little need for anything other than Direct Mode in MODERN decoders. Unfortunately, MODERN means design, not recently purchased!!! Notably many older European decoders, also accessory decoders need older modes, and even non standard "tricks" (noted later).In addition, many "new" designs that are quasi-DCC, that support DCC decoders with a proprietary "receiver" or other front end hardware can do weird stuff. One popular Bluetooth wireless system uses programming on the main for writing a CV, but enters Service Mode with "Direct" protocol to read, CONSTANTLY switching between normal track power and service mode... really asking for trouble. This switching involves a reset packet followed by a service mode packet to enter service mode, and then another reset packet to exit... Address Mode Obsolete mode, probably only found in very old LGB systems. Allows programming of only 1 register, CV1, locomotive short address.(Physical) Register ModeAnother obsolete mode, but some old decoders may require this. It expands the Address Mode to 7 registers, 1-4 and 7 are straightforward. 6 is a special reserved register, reserved for compatability with Paged Mode (below). Register 5 parallels use of NMRA standard CV29, RegisterAssociated CVPurpose1CV1short address2CV2start "voltage"3CV3acceleration4CV4deceleration5CV29speed steps, direction of travel (note not all bits in modern CV29 may be supported)6 noneoffset, reserved for paged mode7CV7 firmware version8CV8 manufacturer ID Paged Mode Eventually registers were expanded to 1024 in number. Paged mode is pretty common. The DCC Wiki says it is most common and preferred... I want to research this statement.When using Paged Mode register 6 is the offset. register 6 = 1 means no offset, programming registers 1-4 indeed programs registers 1-4. With offset 2, then registers 5-8 are programming, and so on. (The Wiki goes on to say not all decoders support this after it claims it is the most used mode... take note of the "quality" of the DCC Wiki !!!)Reading is very rudimentary, it involves a series of "questions" to which the "answer" is yes or no.Basically the read command asks "does register X = Y?". and keeps incrementing Y until it gets a "yes" answer. So the time to read can take a while, especially if the register value is high. Direct (bit) Mode Direct Mode allow writing of individual bits in a register.Basically it reads like the paged mode, but it reads each of the 8 bits in the register, rather than the 255 different values... so a maximum of 16 reads as opposed to 255 reads.