JMRI software

There is a freeware software package called JMRI that is quite a boon to DCC users.

(Java Model Railroad Interface - Java is a programming language)

The main program runs on Windows, Linux, or Mac (which is Unix).

It has a lot of functions:

  • it can program CVs, in both POM (program on the main) and Service Mode (programming track)
  • It has a database for your cars and locos
  • It can run "throttles" in windows on your computer screen, with speed and function buttons
  • it also includes a "server" that allows wireless control

The software supports many command stations, usually via serial or USB.


This is menu driven, with many pre-made templates for hundreds of decoders. The menus are organized by function, such that you really don't need to know the CV number.

Also, you can write one CV, or a group, or all for the decoder.

You can save your CV settings to a file to be able to restore them later

This is quite a boon, especially for high function decoders that have hundreds of CV's


I have not explored this a lot, but lots of functionality to store notes and other things about your rolling stock, and of course tie in your CV settings

Local Throttles:

You can control your command station in either Service Mode, or in POM mode. When you have the main power on, you can create windows that are throttles with speed, direction, and function control.

Nice for testing out locos, without changing setup.

Wireless server:

The wireless control consists servers that support a "web" interface that can be used from most computers with an Internet browser (but not really good on phones), and a server that supports apps on a smartphone, specifically Android and iPhone.

These apps are available separately, the Android one is free, the iPhone one has a free limited one, and a $$ one with more features. (go android).

Usage Tips:

With TCS decoders, go to Preferences->Roster->Programmer and turn off Index CV Caching and Confirm Writes with a Read. These aren't compatible with TCS WOW decoders.

note to self: investigate index CV caching... probably does not issue index cv every time, but need to understand

Install notes:

Download from

Run decoder pro and select your interface. I connected this to an NCE USB interface, which is connected to an NCE PowerCab system.

The software supports many different DCC systems.

Updating Decoder definition files

(under construction)

(thanks to Dave Heap for all the help!)


I have a number of the QSI Titan LS decoders and the latest firmware that has many new features not supported in JMRI, so I am going to attempt to customize JMRI to add these in, if for no other reason to be able to archive and restore custom settings.

First, you do not want to directly edit the files in the Program location, but create- Use DecoderPro's Actions->Recreate Decoder Index option to create a custom "decoders" folder (and associated decoderIndex.xml file) in User Files Location. (this can take a while)



Directly editing any files in the Program Location is a recipe for problems. In the case of decoder XML files, the way to edit in place is:

- Use DecoderPro's Actions->Recreate Decoder Index option to create a custom "decoders" folder (and associated decoderIndex.xml file) in User Files Location.

- Put your Work-In-Progress files in that new "decoders" folder.

- Rerun Recreate Decoder Index to pick up your WIP files and override existing ones in Program Location. Rerun as needed to pick up changes outside the main <variables> element.

- Under Preferences -> Start Up you can Add a "Validate XML File..."  button to the main window. Use it frequently as you work!

- Delete the custom "decoders" folder (and associated decoderIndex.xml file) in User Files Location when you've finished or they'll bite you later.


If you choose to simply edit files with a text editor, you need to be aware of the following:

- All non-binary files must be in Mac/UNIX format with LF terminators, not Windows CRLF format. Your text editor must be aware of this and not save in the wrong format (see the GitFAQ).

- The last line of a text file must have an LF terminator

- Case sensitivity of filenames matters and there are conventions, follow from examples. Things get messy for other developers if a file is merged with one particular case combination and a subsequent PR is merged to simply change the case.

- No tabs. Indenting by spaces only.