LEGO DCC Implementation

Updated 16 April 2020

LDCC Equipment
Mimimum LDCC equipment
LDCC with LACC Booster
LDCC with one LACC Booster
LDCC with LACC Booster and LACC Accessory Decoder
LDCC with one LACC Booster and
one LACC Accessory Decoder


I originally used a third party commercial DCC system, however Mark Riley developed DCC firmware for the LEGO RCX brick called LEGO Digital Command Control, or LDCC. Additionally Mark made a beta version of LDCC and LACC available which allows the use of Boosters and Accessory Decoders (among other enhancements). I have since switched over to using the beta LDCC and LACC exclusively ( Since Mark's website is no longer active, Jeremy Seibel has collected all the information an provided it on his website (House Of Seibz). This allows a more "pure" LEGO solution, as only the LEGO train motor needs to be modified (nothing non-LEGO or modified is visible). Therefore, the explanations that follow assume an understanding of LDCC and LACC (see above link) with one or more LEGO RCXs. However, when discussing specific points relevant to the differences between LDCC/LACC and commercial systems, I have attempted to highlight them below.

Table of Contents:

What is DCC
Disadvantages and Advantages of DCC with LEGO Trains
Disadvantages and Advantages of LDCC versus commercial systems
Equipment required for DCC
   Command Station
   Power Supply
   Accessory Decoders
Decoder Installation
Programming Decoders
Parts Lists
Operation (Lessons Learned)

What is DCC

Digital Command Control (DCC) is a system where power and communication signals are transmitted through the track to decoders installed in locomotives (or any device connected to the track). The decoders translate these signals into speed, direction, and on/off commands (e.g., headlights). DCC can also be used to control accessories, such as sound effects and switch-machines.

Disadvantages and Advantages of DCC with LEGO Trains



Disadvantages and Advantages of LDCC versus commercial systems



Equipment required for DCC

DCC systems employ a few components such as:

Decoder Installation

First I had to overcome the horror of cutting the tabs off the train motor as I am typically a purist. After that, I used an X-acto knife, wire strippers, soldering iron, solder, flux, and the steps below to install the decoders:

  1. Using a sharp X-acto knife, carefully slice all eight tabs flush with the bottom of the train motor. Now pull the bottom off from the main unit. Rocking the axles helps break it loose.
    Knife cutting tabs Bottom with all tabs cut off Housing with bottom removed

  2. Remove the wheelsets, the motor, the metal wipers, and the small conductive disk. Nothing but the LEGO cable metal connector and the intermediary gears are still attached.
    Housing with all original parts Wheelsets removed Housing with wheelsets removed Motor removed Housing with motor removed Metal wipers removed Housing with metal wipers removed Housing with disk Disk removed Housing with disk removed All necessary parts removed

  3. Remove the two metal plates and diode which are attached to the motor. These can be removed as one unit by using a knife blade to carefully pry the metal plates off the motor connectors. This will isolate the motor from the electrical pickup wipers. Now everything is separated and ready for DCC implementation.
    Motor with metal plates Metal plates and diode removed Metal plates and diode Motor with metal plates and diode removed All necessary parts removed and separated All parts separated

  4. Cut the green and violet accessory wires of the decoder to about 1/4 inch to get them out of the way, unless you will be using them for some accessory.
    Digitrax DN140 decoder out of bag Digitrax DN140 decoder body Green and violet wires cut short

  5. Cut the red and black wires (track pickup) of the decoder to about 1 1/2 inches long and the orange and gray wires (motor drive) to about 1 3/4 inches long. Also cut the headlight wires, blue, white, and yellow, to about 1 3/4 inches long. Then cut a 1 inch piece of white wire from the leftover scrape. This will be used for the headlight. Strip and tin all the wires, except the green and violet ones.
    Red and black wires cut to length Orange and gray wires cut to length Blue, white, and yellow wires cut to length 1 inch white wire All wires cut to length

  6. Wipe the lubricant from the wiping surface of the metal wipers for better conductivity (hobby shops sell a conductive lubricant that could be used instead).
    Metal wiping surface wiped clean

  7. Assuming the LEGO cable connector is on the FRONT of the LEGO train motor, solder the red wire to what will be the LEFT hand metal wiper and the black wire to what will be the RIGHT hand metal wiper.
    Red and black wires soldered to metal wipers

  8. Carefully so as not to melt the plastic, tin and solder the 1 inch white wire (from Step 5) to the inside of one of the LEGO cable connector plates.
    1 inch white wire soldered to LEGO connector

  9. Bend the lower motor connector to the side so it will not accidentally touch the metal wiper when installed. Then solder the orange wire to the lower motor connector and gray wire to the upper motor connector.
    Motor with tab bent Orange and gray wires soldered to motor

  10. To get the headlight to stay on in both forward and reverse, solder the white and yellow wires together and then solder them to a 75 - 82 Ohm 1/4 Watt resistor. When using a commercial DCC system this drops the voltage of the headlight circuit down to about 9V for use with LEGO 9V lamps. Then solder the other end of the resistor to the 1 inch piece of white wire (from Step 8). If LDCC is the only DCC system to be used, the resistor can be omitted.
    Resistor soldered to headlight wires Resistor soldered to 1 inch white wire Motor, metal wipers, and resistor soldered in place

  11. Now the only wire left is the blue headlight common. Tin the remaining LEGO cable connector plate and solder the blue wire to it.
    Blue wire (headlight common) soldered to LEGO connector All connections soldered

  12. (OPTIONAL) There is a noise reducing circuit to help keep the motor quiet at slow speeds. This circuit is not required for DCC to work, and therefore is optional. The circuit evolved from a discussion within the National Model Railroad Association (NMRA) ( DCC Special Interest Group (SIG). I used five 22 micro Farad capacitors. I did this because single 100 micro Farad capacitor will not fit inside the LEGO train motor and the five individual capacitors will. I followed the following steps to install this circuit.
    a. Cut two 2 3/4 inch pieces of wire from the leftover scrap, one orange and one gray, since they will be connected to the motor. Strip and tin these wires.
    Gray and orange wires for noise reduction circuit
    b. Solder the 2.2 Ohm 1/2 Watt resistor to the lower motor connector and the orange wire to the other end of the resistor.
    c. Solder the gray wire to the upper motor connector.
    Noise reduction resistor and gray and orange wires soldered
    d. Solder the five capacitors in parallel. It is very important to solder the capacitors very neatly and to keep the leads as flat and narrow as possible in order to allow the capacitor array to fit inside the LEGO train motor.
    Two capacitors soldered together Three capacitors soldered together All five capacitors soldered together
    e. Solder the gray wire to one lead and the orange wire to the other lead of the capacitor array.
    Gray and orange wires soldered to capacitor array

  13. Everything is now soldered in place and ready to be installed. Isolate the metal wipers from the inside of the LEGO cable connector with tape or a small piece of cardstock. You could cut off the tabs, but I chose not to, so as to minimize "damage" to the original LEGO train motor.
    Everything soldered and ready for installation Cardstock to isolate LEGO connector

  14. Again, assuming the LEGO cable connector is on the FRONT of the motor, insert the metal wiper with the red wire attached, into the LEFT side of the motor housing. Then insert the metal wiper with the black wire into the RIGHT side of the motor housing. It really does not matter which wire goes to which side, I just do this for consistency.
    Metal wipers installed

  15. Replace the two wheelsets.
    Wheelsets installed

  16. Place the motor into the housing.
    Motor installed

  17. Place the decoder on edge and insert it into the FRONT of the LEGO train motor housing. Carefully tuck the headlight (blue, white, and yellow) wires between the decoder and the outer edge of the LEGO train motor housing, with the resistor on top.
    Decoder installed Decoder installed, closeup

  18. (OPTIONAL) Place the capacitors in a similar manner in the other end of the LEGO train motor housing. I placed a small piece of card stock between the metal wiper tabs and the capacitor array so the capacitors could not accidentally cause a short circuit between the two metal wiper tabs.
    Cardstock to isolate capacitors from metal wiper tabs Capacitor array installed Capacitor array installed, closeup

  19. Reattach the bottom plate onto the housing being careful to route the wires so they not to get pinched. I have not done anything to "hold" the bottom plate on yet. I have run these modified motors for hours without any problems, therefore I probably will not do anything until a problem presents itself.
    Bottom plate re-attached

  20. The modified LEGO train motor is now ready to be programmed.

Programming Decoders

I originally used a commercial programming product, Digitrax PR-1 computer programmer. Digitrax PR-1 with plug and alligator clips installed This device plugs into a standard RS-232 serial port and comes with software to program decoders.

However, it is quite simple to program the decoder with LDCC. Several Configuration Variables (CVs) can be programmed within each decoder (reverse direction, min and max speed, headlight function, etc.), but since decoders come pre-programmed with a basic configuration that works with LDCC, all that is necessary is to program each locomotive with a unique address, CV 1. I typically use addresses 1, 2, and 3 since these are the most accessible addresses to control via the LEGO Remote Control.

Since any and all locomotive on the layout will be receive the programming information, make sure only the desired locomotive is on the track when programming or set aside an isolated section of track for programming and disconnect (or switch) track power from the layout to this programming track, and then reconnect (or switch back) track power when finished.

An alternative method would be to use a separate RCX with LDCC loaded as a dedicated programmer with a dedicated isolated section of track. However, take special care when using the Remote Control so only the programming RCX receives the signals, otherwise both RCXs will receive and react to the signals causing possible undesired effects. Additionally, this could be a good use for an RCX 2.0 (battery only version), since the programming RCX will not be used to power trains.

Once you have only the desired DCC motor (If you have a locomotive with two DCC motors, both can be programmed together to ensure that all the same settings are sent to both motors) on the track to be programmed, follow the steps at on Jeremy's website (linked above) or below to set the address:

  1. Press the "View" button repeatedly until "PHYS" is display. rcx_phys.jpg
  2. rcx_1_c.jpg Confirm CV 1 is selected (default). The "A" arrow keys change the hundreds digit; the "B" arrow keys change the tens digit; and the "C" arrow keys change the ones digit.
  3. Press the "Prgm" or "P3" buttons to continue.
  4. Enter the Address value (1-127). rcx_h_h.jpg
  5. Press the "P3" button to write the Address to the decoder.
  6. Press the "Run" for "Stop" buttons repeatedly to exit programming mode.
Assuming you programmed your locomotive to address 2, now place the locomotive on the track powered by the LDCC RCX and use the "B" Up and Down buttons to control the speed forwards and backwards. Press both the Up and Down buttons together for full stop.

Parts Lists

The following chart lists all the equipment I used to implement LDCC:

Quantity Item Picture Manufacturer Possible Source Source Part No. Unit Price
1 for Command Station
(Optional: 1 additional for each Booster or Accessory Decoder)
RCX 1.0 RCX 1.0 LEGO Bricklink 884a ~$9
1 for each RCX 1.0 Wall Transformer Wall Wart LEGO Bricklink 70931 ~$18
1 or more Remote Control RCX Remote Control LEGO Bricklink 9738 ~$12
1 per Booster or Accessory Decoder (optional) LEGO cable Electrical Cable LEGO Bricklink Wire with Brick ~$5
1 pair per Booster or Accessory Decoder (optional) LEGO Lamp Brick, 2x Lamp Brick LEGO Bricklink Light Brick ~$2
1 (Optional: 1 additional for each Booster) LEGO track connector Track Connector LEGO Bricklink 10078 ~$19
1 (although at least two are required to take advantage of LDCC) LEGO train motor Train Motor LEGO Bricklink 10153 ~$47
1 for each motor Decoder DZ123 or similar Decoder Digitrax Digitrax DZ123 $19.99
1 for each motor with headlight (optional if using LDCC) Resistor, 1/4 W, 78.7 Ω Resistor for Headlight Any Digi-Key 78.7XBK-ND $0.10
1 for each motor (optional for noise suppression circuit) Resistor, 1/2 W, 2.2 Ω Resistor for Noise Suppresion Circuit Any Digi-Key 2.2H-ND $0.13
5 for each motor (optional for noise suppression circuit) Capacitor, 22 mF, 25 V, bi-polar Capacitor for Noise Suppression Circuit Any Digi-Key P1177-ND $0.29

Operation (Lessons Learned)

Trains Throttles Layout


Thanks to Mark Riley and Jeremy Seibel, DCC operation for LEGO trains is quite affordable, assuming you already own an RCX and Remote Control (decoders can be purchased for around $20) and does not require learning how to operate a commercial DCC system (i.e., it is a simple to use system with plenty of features). For those who have not experimented with DCC and LEGO trains, I highly recommend taking the plunge with LDCC - after all, if you are not satisfied, all you have lost is the cost of a decoder.

I hope this information was useful to you. Please feel free to contact me with any questions or comments at