Supported Hardware

Devices, command stations, networks, and protocols:
  • Hm, when I installed my recently upgraded Sprog II ( to use the signed drivers) it loaded like this. At this stage I still had to install the FTDI drivers to get it to the COM port configuration via the signed drivers as per the main Sprog II/Win10 thread here.
  • Download the latest drivers, firmware, and software for your HP Color LaserJet Enterprise CP5525 Printer series.This is HP’s official website that will help automatically detect and download the correct drivers free of cost for your HP Computing and Printing products for Windows and Mac operating system.

Controlling model railroad operation increasingly uses DCC, and the SPROG family of DCC devices offers the ideal solution for programming and maintaining your fleet of DCC-equipped locomotives, in any scale from Z to G! With the industry's most comprehensive support for decoders from all the leading manufacturers.

  • WiFi Throttles


By the community of JMRI.org:


JMRI tools for working with your layout:
  • Common Tools:
  • Blocks:
  • Routing and Control:
  • Other:

Layout Automation

Use JMRI to automate parts of your layout and operations:

JMRI Help:
Contents/ Index
Glossary/ FAQ


DCC++ is an Open Source Arduino-based Do-it-Yourself DCC Command Station.

Note: DCC++ is a separate project from JMRI. If you have questions about building a DCC++ system, operating it, etc, you should get help via the DCC++ TrainBoard thread and the the DCC++ Documentation TrainBoard thread. There's also information on the DCC++ GitHub repository and associated documentation. There was also an older DCC++ Website and the DCC++ Trainboard discussion. The JMRI discussion groups can only provide limited support for DCC++ itself.

Features include:

  • Fully compliant with NMRA DCC standards
  • 2-byte and 4-byte locomotive addressing
  • Simultaneous control of multiple locomotives
  • 128-step speed control
  • Control all cab functions F0-F28
  • Activate/de-activate all accessory function addresses 0-2048
  • Programming on the Programming Track
    • Write configuration variable bytes
    • Set/clear specific configuration variable bits
    • Read configuration variable bytes
  • Programming on the Main Operations Track
    • Write configuration variable bytes
    • Set/clear specific configuration variable bits
  • Control DCC turnouts and sensors
  • Directly access and control Arduino IO pins for accessory functions and sensors

Supported Hardware

Sprog Dcc Port Devices Driver Download

Command Stations


Currently DCC++ Base Stations can be built from either the Arduino Uno or Arduino Mega platforms. JMRI should support either platform via USB or Network connection.

Computer Interfaces

Currently, four interfaces are supported:
  • Serial/USB: Direct connection to Arduino via a USB cable
  • Simulator: Simulated Base Station for off-line operation and testing.
  • Network: TCP/IP connection from JMRI to a Base Station with an Ethernet or WiFi Shield.
  • DCC++ Over TCP: Remote network connection to a local JMRI instance connected to a Base Station


To use the Simulator, simply choose that option in the JMRI Preferences. Note that some features do not work in the Simulator. For example, the Simulator does not (yet) support assigning, storing, and remembering Sensor and Turnout assignments. The Simulator interface is functional enough to keep JMRI 'happy' while working on offline projects such as Operations or Panel and Logix design, but is not intended to be a full-fledged Base Station Emulator.

DCC++ Over TCP

For the DCC++ Over TCP, a host computer must be connected to the Base Station over a Serial or Network connection (or a simulator). This host computer then runs the DCC++ Over TCP Server. A remote computer (or several remote computers) can then use the DCC++ Over TCP (Server) interface to remotely access and control the Base Station.



JMRI currently supports the V1.1 Base Station Interface. Some V1.0 commands may not work.


Configuring an Arduino for use as a DCC++ Base Station

In order to use an Arduino as a Base Station, you must first assemble the device and download the Base Station firmware to it. Please follow the instructional videos linked below under Other Info.

Connecting to a DCC++ Base Station via USB

  1. To connect your computer to a DCC++ Base Station, first install the appropriate drivers.
    • For the DCC++ Base Station with JMRI, you may need to install a device driver on your computer. Please refer to the Arduino Getting Started pages for instructions.
      • Windows (See Step 4)
      • Mac: No drivers should be required

    Note: If you have already installed the Arduino IDE software, the device drivers should already be installed.

    When the device drivers are installed, connect the Arduino Base Station to your computer using a standard USB cable.

  2. Once the drivers are installed, you are ready to configure JMRI. Start one of the JMRI-based programs, Then go to the preferences panel. This opens automatically the first time a program is run, or you can select it from the 'Edit' menu.
  3. Select 'DCC++' from the top selection box ('System Manufacturer').
  4. Select 'DCC++ Serial Port' from the second selection box ('System Connection')
  5. Select the appropriate USB/Serial port from the third selection box ('Serial Port')
  6. Click 'Save'. You'll be asked if it's OK for the program to quit, click 'Yes'.
  7. Restart the program. You should be up and running.

Connecting to a DCC++ System using Network

  1. First, connect the DCC++ Base Station to wired or WiFi network and record the IP Address and Port number. You may need to connect the Arduino to a host computer temporarily and use the Arduino Serial Monitor to get this information.
  2. Now you are ready to configure JMRI. Start one of the JMRI-based programs, then go to the Preferences panel. This opens automatically the first time a JMRI program is run, or you can select it from the 'Edit' menu (from the Application menu on OS X).
  3. Select 'DCC++' from the top selection box ('System Manufacturer').
  4. Select 'DCC++ Ethernet' from the second selection box ('System Connection').
  5. Input the IP Address and Port Number of the DCC++ Base Station.
  6. Click 'Save'. You'll be asked if it's OK for the program to quit, click 'Yes'.
  7. Restart the program. You should be up and running.

Connecting to a DCC++ System using DCC++ Over TCP

  1. First, connect the DCC++ Base Station to the host computer via the Serial or Network interface as described above.
  2. On the host computer select 'Load DCC++ Over TCP Server' from the DCC++ Menu. Check the settings, then press the 'Start Server' button. If you want the server to automatically start when JMRI is launched, click the checkbox provided.
  3. The Host computer must be running with the DCC++ Server active before launching the Client computer.
  4. On the client computer, launch JMRI on the Client computer.
  5. In the Connection Preferences, select DCC++ as the System Manufacturer.
  6. Select 'DCC++ Server' as the System Connection Type.
  7. Enter the network name or IP address of the host computer and verify that the port number is the same as on the host computer.
  8. Save your Preferences and restart.

Once both the Host and Client instances of JMRI are configured, you can use the Client JMRI just the same as if it were directly connected to the Base Station. The client JMRI instance can be on the same computer, in the same house, or across the country from the host.

Connecting to the DCC++ Simulator

  1. Start one of the JMRI-based programs, Then go to the preferences panel. This opens automatically the first time a program is run, or you can select it from the 'Edit' menu.
  2. Select 'DCC++ Simulator' from the top selection box. There are no additional configuration steps required to use the DCC++ Simulator.
  3. Click 'Save'. You'll be asked if it's OK for the program to quit, click 'Yes'.
  4. Restart the program. You should be up and running.

JMRI DCC++ Tools

The DCC++ menu contains 5 tools:

Sprog Dcc Port Devices Driver

  • DCC++ Traffic Monitor
  • Send DCC++ Command
  • Track Current Meter
  • Configure Sensors and Turnouts
  • Load DCC++ over TCP Server



Additional documentation will be provided on other pages linked here:

Third Party info

For more information on how to construct and program a DCC++ Base Station, refer to the following:
  • DCC++ GitHub Repository
  • Sparkfun - one of many places to acquire hardware

Hey Guys:

We have a DCC - JMRI with SPROG 3 system, with Kato Unitrack layout operated by a Windows 10 PC & cell phone throttles. There are no physical Command Station or throttles.
We are thinking of a stand-alone LocoNet for integrating LocoNet compatible accessories (we already have 4 DS64's & 2 BD4's working on the layout) & would like to know which products available with you would work with our existing system.
I understand that Digitrax PR4 and RR-CirKits LocoBuffer no more provide the 'termination' needed.
Would RR-CirKits SSB Gateway plus a LocoBuffer-USB do the job? How would the RailSync lines provide the DCC information required by the Digitrax detector devices?
Thanks, Shailesh

Hi Shailesh:

Actually, if you are running trains with the SPROG3, the SPROG3 is acting as the command station and booster for the layout.

Both the SSB Gateway and LocoBuffer USB do essentially the same thing: both units allow you to interface a computer USB port to the LocoNet. The SSB Gateway does provide the required LocoNet termination, the LocoBuffer does not. Of course, the USB port must then be controlled by JMRI (or similar) software. The problem is that you must tell the JMRI software what device to use to control the layout. You will only be able to use either the SPROG3 or the LocoNet. Essentially, the USB port controlled by JMRI is the cab bus and either the SPROG3 or the LocoNet interface is the command station. You are only allowed one command station on a layout, and JMRI follows this rule.

You could have two separate computers running two instances of JMRI (I am not sure JMRI will let you run 2 instances on one computer), one controlling the SPROG3 and one controlling the LocoNet. There would be no cross control. The SPPROG3 would control train movement/control and the LocoNet would control accessories connected to LocoNet. This might be useful if you operate using a dispatcher.


Sprog Dcc Windows 10

The LocoBuffer is expecting to connect to an existing LocoNet, so the Railsync is provided by the command station, not by LocoBuffer. Thus, if you use the LocoBuffer, you will also need a Digitrax command station if you want the Railsync signal (see below). The SSB gateway DOES NOT provide Railsync signals. It simply provides DC power on the Railsync lines. In a Digitrax system, the command station provides the Railsync signal which is then rectified by LocoNet clients to provide operating power. The SSB Gateway simply provides DC power on the Railsync lines for client power, but there are no data provided.

If you want to use LocoNet to provide control/feedback of accessories while controlling the layout with SPROG3, you probably want to use the SSB Gateway as the LocoNet controller. I think you will need a separate instance (as mentioned above) of JMRI to control this LocoNet, and its commands and data will be separate from the SPROG3 control commands and data. Basically two independent control systems (which could be a dispatcher for one and engineer for the other).

If you want to control both LocoNet and train operation through the same device (i.e. all data are available to all units on the layout), then you will need to replace the SPROG3 with a Digitrax command station (the SPROG3 will still function nicely as a programming interface - its primary design function). In this case, you would use the LocoBuffer to interface the command station LocoNet to JMRI via the LocoBuffer USB port to your computer. My personal feeling is that this is the better choice of the two. Your opinion may vary!

Sprog Dcc Port Devices Drivers

Hope this helps you move forward.

Coments are closed
Scroll to top