Decoder Programming Lock

DCCWiki, a community DCC encyclopedia.
Jump to: navigation, search

Summary: An optional feature that permits a decoder to be locked, preventing programming.

Decoder Lock

Configuration Variables 15 and 16.

As the complexity of multifunction decoders has increased, the need to install function or sound decoders to supplement the multifunction decoder has diminished.

Digital Command Control users may install additional function or sound decoders in a single locomotive in addition to its primary multifunction decoder. These decoders share a single address. Any commands sent to that address will be acted on by all the decoders.

Common uses of the decoder lock feature are for programming separate decoders for motor control and sound, and/or additional function only decoders. This process is also used with a RailCom transmitter installed in the vehicle. Decoder Lock can also be used to prevent accidental programming or reset of a decoder.

Since decoders sharing the same address will need to have their CVs adjusted separately, a method to communicate with only one of multiple decoders installed in a vehicle was needed. One method was to give the decoders differing addresses, but that can be difficult in service mode programming.

You should be able to:

  • Use service mode read and write from a specific decoder, with no need to disconnect other decoders electrically.
  • Discover the type of decoder(s) present inside a locomotive without disassembly, despite multiple decoders being present.

How Does the Programming Lock Work?

The keys to decoder locking are CVs 15 and 16.


CV 15 is the unlock number, set to a value from zero to seven. It is used to select the decoder that will respond to NMRA standard programming commands.


CV 16 carries the value that defines the decoder as suggested below. It is referred to as the locking number. It must have a unique ID, as it identifies a specific decoder in a multiple decoder installation.

As is, the decoder should have a value of 0 (zero) in CV16, as that is the as-shipped reset value, or 255, Broadcast ID, so all decoders can be programmed at the same time.

Recommended values for CV 16:

  1. Motor decoder
  2. Sound decoder
  3. Function only decoder
  4. or Higher: Other applications as chosen by the user.

Lock Rule

  • If CV15 equals CV16, all configuration values can be written.
  • If CV15 does not equal CV16, only CV15 may be written to.
    • If CV15 ≠ CV16, the decoder is locked and no CVs (except CV15) can be changed or read.

It was proposed that some manufacturers may wish to include an extra read only bit in certain CVs to protect their contents. This would be manufacturer specific. The NMRA may include this feature by defining a CV bit for this purpose at a later time.

The reset command will be ignored unless the rules are met, to prevent an accidental reset of all the decoders in an install.

Decoder Configuration

A proposed method of configuring the decoders is as follows:

  1. Connect the decoder to the programming track before installation.
  2. Write a value of 8 to CV8 to reset the decoder and insure CV 15 and 16 are set to zero. Decoder reset varies by manufacturer, so read the documentation, as CV8 is the standard.
  3. If you wish, check the value of CV15 to ensure it is zero.
  4. Write the desired identification number to CV16, such as those suggested above. Be consistent!
  5. Write the identification number to CV15 to enable writing to the decoder. CV15 must match CV16.
  6. Configure the decoder's functions.
  7. Install the decoder.
  8. Repeat as necessary. If you are only installing a single decoder in a locomotive, setting up CV15 and 16 is not required.

Accessing the Decoder

  1. Write the identification number defined earlier (in CV16) to CV15
  2. Write the other CVs. This will work when CV15 equals CV16.
  3. When programming is complete, set CV15 to 0 (zero) to lock the decoder.
Identification of the Decoders Installed

To identify a decoder, write 0 to CV15. Then attempt to read a 0 in CV16. If no acknowledgement is received, no decoder with CV16 equalling zero exists. The second step is to change the value in CV15, from 1 through 7, then read CV16 until an acknowledgement is received from the decoder.

Lockable and Non-Lockable Decoders

An older non-locking decoder can be programmed in an install with a lockable decoder by simply locking the decoder, then writing the values to the older, non-lockable decoder.

ESU LokSound Variation

ESU implements the Decoder Lock with a slight difference.

CVs 15 and 16 are used, with a range of values from 0-255. To activate the Decoder Lock feature, the Extended Configuration Variable, CV124, must have bit 2 set to ON (a value of 1).

As with CV29, read the values in this CV before attempting to write any changes. This CV also controls features such as the Prime Mover Delay, Bi-Directional Bit, SUSI, Enable Wheel Sensor, Motor Overload Protection, and EMK (Auto Parking Brake). Its default value is 21 for a retail decoder, which may be different for an OEM decoder.



TCS decoders may accept a 0 (zero) value in CV15 which acts as a skeleton key.

Lock Enable

Other decoders may implement a Lock Enable which is controlled by another CV

Further Reading

Multifunction Decoders

Additional Background Information

See the proposal made to the NMRA here: Topic 0305051 - Decoder Lock Proposal