Download and install JMRI®
JMRI Setup and Installation
JMRI environments...
Release Notes
Supported Hardware
Devices, command stations, networks, and protocols:
Source Code

JMRI Help:

Contents Index
Glossary FAQ

Donate to JMRI Donate to

Release Notes for JMRI 2.10 release

Date: July 13, 2010

From: Bob Jacobsen

Subject: Production release 2.10 of JMRI/DecoderPro is available for download. We are very pleased to announce that the 2.9 series of JMRI test releases has resulted in a version that's good enough to be recommended for general use, including by new users. We're therefore making that version, "Production version 2.10" available for download today.

Among the enhancements since the last production release, JMRI 2.10, are:

JMRI is now only available under the GNU General Public License. For more information, please see our copyright and licensing page.

Warnings for this version:

Panel files written with JMRI 2.10 may not be readable by earlier versions of JMRI.

JMRI system names start with two capital letters, e.g. LT10 or NS23 or PLA5. Past versions have tried to cope when people enter lower cases letters, e.g. lt10 or Ns23 or pLA5, with various degrees of success. Unfortunately, this code isn't compatible with some new systems that are being working on, and we have to remove it. This version of JMRI requires that you enter consistent system names, including using the right case. If you use system names, and haven't been using consistent names, you'll probably have to practice a little to get in the habit. If you have any problems reading old files, etc, please post a note on the JMRI users group and somebody will help you.

The LocoTools application is no longer supported, and is being removed. Some parts of it are still present, but you should use e.g. PanelPro or DecoderPro instead. They can do everything that LocoTools can.

The preferences have been significantly reworked. In some cases, preferences to add a button or do an action at startup may have to be deleted and re-entered before they will work.

If you're using a Lenz XPressNet connection, please uncheck the "Check Buffer Status" box in the preference pane where you selected the Lenz protocol.

This version of JMRI uses the new communications libraries introduced in JMRI 2.9.3. On Windows, the installer should take care of all installation and deinstallation required. On Linux, you may have to install and/or uninstall various communications library parts, see the JMRI Linux pages for more info. On Mac, depending on which version you were previously using you may have to remove a communications library, see the JMRI Mac OS X page. The communications libraries for Mac OS X have been updated. We've tested these extensively, but there may be combinations of hardware and software versions that still aren't right. If the program can't see your layout connection, please post to the JMRI Users group with what type of Mac you're using (PowerBook, PowerMac, MacBook, etc), processor type (PPC G3, G4, G5 or Intel) and Mac OS X version (10.4, 10.5, etc; names like Leopard are OK) too. We've got several library versions and most likely have one that will work, we just have to figure out which. Finally, if you have scripts that directly access the serial or parallel port, you'll have to change references to "javax.comm" to "".

You may get some messages like:

WARNING:  RXTX Version mismatch
        Jar version = RXTX-2.2pre1
        native lib Version = RXTX-2.2pre2
For now, this should be considered normal. We'll try to get it removed before the next production release.

The JInput USB library was updated in JMRI 2.9.1, and again in JMRI 2.9.5, which (should) have fixed problems on Windows Vista, Intel Macs and some Linux machines. We don't have a way to check this with all possible input devices, so please check to make sure that your USB-attached devices still work.

When loading an older panel file containing signal head icons, you may get WARN messages about "did not locate lunar icon file" and "did not locate flashlunar icon file". To make these stop, just store the file again so that it's rewritten in the most recent format.

Download links:

Please use these links for downloading:

Mac OS X:



Changes since production version 2.8

Many decoder definition improvements:

Many improvements to throttle support:

Dan Boudreau many many improvements to operations support:

JMRI now contains support for more-prototypical signaling basic on "signal masts" and "aspects". The basic functions are in place, along with the start of some help pages. This is still being actively developed. There's a first set of signal definitions available for the AAR 1946 signaling system. We intend to have this fully available by the next JMRI production release in summer 2010.

Other changes:

Kevin Dickerson added a way for systems to perform specific actions when the program is shutting down.

Kevin Dickerson made various changes in the eCos support to handle turnout events better and potentially reduce CPU overhead. Also handles double slip and three way points better.

Kevin Dickerson updated the storage code so that Signalheads in panel files are saved using the new namedBeanHandle. This means that they will be remembered by their system name or user name, whichever you specified.

Paul Bender added a new sample script.

Dan Boudreau provided double-crossover and slip-switch track icons.

You can now display the log messages in a window by selecting "Display Message Log" in the "Debug" menu.

Added more information to the context window and the emailed problem report.

Andrew Crosland updated the CBUS support: Added bootloader, including support for extended frames. You can now set the adapter ID when using MERG CAN adapters.

Pete Cressman improved the route-finding logic in the Warrant support.

Kevin Dickerson made a number of improvements:

Kevin Dickerson fixed a problem with displaying existing sensor groups.

A number of internal methods that were deprecated in JMRI 2.5.1 have now been removed.

The included jmdns.jar (Zeroconf/Bonjour networking) library has been updated to version 3.0 to solve a problem with the program hanging at shutdown. This required no code changes.

Pete Cressman fixed a problem with integer comparisons in Conditionals.

Dan Boudreau and Pete Cressman fixed a problem with the order of saved PanelEditor items.

Pete Cressman made it so Conditional action items can be specified from a memory value using the syntax "@IMemory" for the device name - i.e. the name of the internal memory variable preceded by the "@" character. Note the particular value being referenced is not verified by Logix. It is the user's responsibility to have the correct value in the memory location when the Conditional's actions are executed. Errors encountered at Conditional execution time are reported on the console screen.

Simple Signal Logic treats a flashing-red signal head (e.g. if set that way by a Logix) as if it was red when computing the proper color for a protecting signal.

Nelson Allison improved the scripts for running the Roco 46800 and 46902 cranes.

Pete Cressman fixed a problem that was preventing Reporter icons from loading in Layout Editor windows.

Andrew Crosland updated the CBUS support for power-on events, improved handling of the handling of throttle errors, and added a warning dialog if a throttle user tries to select an address that's already in use.

Robert Coleman got initial support working for the Smart Home 2412s Insteon interface. It can be used to turn both Insteon and X10 adapters on and off.

Matt Harris updated the Windows installer to NSIS 2.46 to ensure complete compatibility with Windows 7 (addition of compatibility manifest entries)

Bob Bucklew provided an icon for the knock-out that fills unused positions in a USS CTC panel, now at resources/icons/USSpanels/Panels/knockout.gif.

Dan Boudreau fixed a subtle and nasty bug that was preventing the Turnout Operations configuration window from displaying properly under certain circumstances.

Paul Bender made a technical change to the XPressnet code to pass the message listener for the sending thread to the handleTimeout method in AbstractMRTrafficController. This allows subclasses to notify listeners if a message that they sent received a timeout message. The XPressNetTrafficController passes this information on to an XPressNetListener. This is currently used to fix a minor bug which caused the throttle to lock up if a message it sent did not receive a reply message (this happens occasionally with the Hornby Elite). Updated XNetMessage to allow setting the default values for the number of retries and the length of time before a timeout. Updated the sample script to include the notifyTimeout message routine.

David Duchamp added colors to the Layout Editor track.

David Duchamp added Dispatcher options.

Pete Cressman added Learn-Mode recording from read throttles to the Warrant auto-run system.

The JInput USB library was updated to the current version, which (should) fix problems on Intel Macs and some Linux machines.

The error handling when reading files has been improved. Now, you'll get notified by a dialog box popping up with some details if e.g. something can't be created due to an error. Much more work is needed on explanations, etc, to make this complete.

Dan Boudreau made some improvements to the tooltips in the NCE Macro editor.

Paul Bender fixed a timeout issue in the XPressNet support that mostly effected the Elite.

Dan Boudreau made some improvements to programmer error messages, and to operations build messages.

Alfredo Sola updated the Spanish translation.

Removed the warning message when the program starts up if no roster entries have been stored yet.

A history of the panel files loaded and stored by JMRI is now kept. You can look at the current history from the Panel menu. The display is still in a very preliminary stage, we'll improve that later, but we put the feature in now to start accumulating the history in the file.

The DecoderPro manual in the help pages has been extensively updated.

Paul Bender added a set of signal definitions for the SLSF (Frisco) system .

David Duchamp fixed two bugs in the Maple interface

Kevin Dickerson added a page title to the roster print out that will either be "DecoderPro Roster All Entries" or "DecoderPro Roster Group 'GroupName' Entries", so you can see if you're printing the entire roster or just one of the roster groups.

Kevin Dickerson fixes the order in which the MERG SD2 signal head sequences.

Matt Harris added protection against trying to use a Digitrax MS100 on Windows Vista and Windows 7.

Kevin Dickerson added a new "single output" signal type. This allows you to have a signal that only has two states controlled by one turnout, e.g. one that only shows a single color and dark, or two specific colors.

Andrew Berridge improved the SPROG serial communications

Kevin Dickerson added check-boxes for disabling various reminder prompts, along with a way to remember those during the next time the program runs, and a tool for resetting them if you change your mind.

Matt Harris fixed a spurious warning about "Insets" when running under Gnome-based Linux.

Several updates to the Lionel TMCC support to fix multiple bugs. The TMCC support was badly broken in JMRI 2.4, and only with this version should be considered working.

David Duchamp updated Simple Signal Logic to use up to five sensors, which allows more complicated trackwork to be handled by Layout Editor.

David Duchamp made Dispatcher enhancements for both manual running and future automatic running of trains.

Kevin Dickerson fixed how Signal Mast icons rotate in the Panel and Layout Editors.

Kevin Dickerson added a custom power on/off control to the SPROG menu.

Fixed a problem with the DecoderPro function map when using more than 12 function definitions.

Andrew Crosland updated the configuration files for building and running JMRI under NetBeans.

Harald Barth improved the SRCP implementation.

Dick Bronson provided a set of SP 1960 signal definitions

Dan Boudreau added a "Copy Route" to operations

Kevin Dickerson added a new feature added to a turnout on the layout panel, that prevents the turnout from being changed on the panel if the blocks on the connecting path through the turnout are occupied, thus helping to prevent accidental changing of turnouts when they are occupied. Feature is disabled by default.

Kevin Dickerson added a "signal group" feature, still in development.

Many decoder definitions where changed over to use "XML Schema" instead of "DTDs" for their syntax checking. This is a technical, internal change that will allow some other updates later. Many decoder files got small fixes so that they were entirely in the proper format.

Paul Bender add support for the Power manager to the Lenz XPressNet simulator.

Kevin Dickerson updated the preferences manager to show icons in warning/info dialogs, and to give more options to suppressing messages permanently or just this session.

Dan Boudreau fixed a problem in the "Apps" infrastructure that caused it to initialize twice.

Update of the SRCP server.

By suggestion of Jim Betz, the roster now includes the date and time that the entry was last saved, as reported by the computer on which it was saved. No checking of this value is done.

Kevin Dickerson made a number of changes to the way that JMRI works with the eCos, mainly in the handling of roster entries and the ecos database.

The panel editor and layout editor code has been extensively reworked. It's not intended that this cause any changes in how it appears to look to the user, but please let us know if you see any.

Bob Coleman updated the Powerline Insteon 2412s support to catch reply message 50 (echo from a repeater) and clean up console output a bit. Via an Insteon 2412s an X10 device or a registered Insteon device should turn on or off, but dim and sensors are not yet available. Sometimes first commands to an Insteon device fail -- once they have been retried they work. Note that Insteon devices must be registered with the adapter to work.

A problem that would occasionally cause a LocoNet-connected Double Output or Triple Output signal head to not show the most recent appearance has been fixed. The fix doesn't effect SE8c or non-LocoNet signal heads, so any problems with those should still be reported.

David Zuhn updated the Linux start-up scripts.

Fixed a bug in the way the roster populates the various selected combo boxes.

Kevin Dickerson added "invert" to SPROG-driven turnouts.

Matt Harris updated the Windows launch script to properly handle mixed systems with 32-bit Java on 64-bit Windows.

Many improvements to the built-in mini web server, including improvements to iPhone support and allowing more browser types to display JMRI panel files. The server now advertises itself via Bonjour/Zeroconf, so you can easily find it in a suitable web browser without having to know the IP address or name. The server is now multithreaded to improve performance. The server can now display more types of information, including directory listings, and better show the contents of JMRI XML files. Fixed a problem that prevented clicking on panels in the mini web server.

Bill Robinson provided two examples of setting turnouts from a web page using the mini-webserver. One, "web/turnoutPanel.html" shows a schematic control panel with turnouts you can click to control LT1 through LT4. The other, "web/turnoutMonitor.html", provides a table of all defined turnouts with buttons you can click to close or throw them.

The XML IO package has been updated. To see a demonstration, start the JMRI mini web server, and try these two URLs: http://localhost:12080/web/request.html and http://localhost:12080/web/monitor.html. Web browsers can now access layout power via XMLIO.

The help system can now directly print help pages. See the new icons at the top of any help screen. Also, you can know mark a page as a "favorite" and easily come back to it later.

David Duchamp updated the instructions for building with XCode.

Improved how Conditionals convert Memory contents so they can be compared, etc.

Added default exception handlers so that uncaught exceptions will now put information into the log file.

Kevin Dickerson improved how you set the protocol in the preferences. Now, you first pick a system manufacturer from a list, and then pick which connection type to use from another list. This makes it easier to find the right one. For example, if you pick "NCE" as the manufacturer, you can then pick from "Serial Interface", "Network Interface" and "NCE USB".

Kevin Dickerson improved the synchronization of turnouts between JMRI and an eCos command station.

A new "virtual" connection has been added, so you can try the programs without selecting any particular type of layout hardware.

Printing of tables has been reworked. This fixes the ordering problems, etc, but also changes the appearance of the printout. That will probably require some additional tweaking.

The buttons inside tables have been made smaller so that tables will fit better on smaller screens.

Dan Boudreau added a simulated connection to the NCE protocols, so you can work on an NCE-based panel without the actual layout connected.

Andrew Crosland added support for the Bachrus electronic speedometer.

Dan Boudreau improved the appearance of the Turnout Control.

Fixed a bug preventing playing sounds in Logix Conditional Actions.

Harald Barth improved the CV programming in the SRCP support.

The way the program version number is stored in the program and output files has been made easier to parse.

Andrew Berridge added an optional "speed limit", which can be set by locomotive in the roster, when using JMRI throttles. Great for running with grand kids!

Pete Cressman fixed a small problem with the pop-up menu on locomotive icons.

Lionel Jeanson updated and added several Jynstruments:

Dan Boudreau fixed a problem that prevented icons with blinking .gif images from blinking.

While adding Sensors, Turnouts, etc, from their tables, the program used to just fail silently if you entered an address or system name that couldn't be used. Now, it will pop a dialog box to tell you that it's not creating the object and suggesting what's wrong. Technical note which most people can ignore: To do this, the various managers have been modified to throw a IllegalArgumentException if they can't process the input properly. If you encounter this in your own code, you can catch it and display an error, or just get a new name and try again.

As a technical improvement, Pete Cressman improved several of the JUnit tests so they don't leave windows lying around after then complete.

You "click" on things in the editor windows to have sensors change state, turnouts move, etc. This code has been improved to use the proper definition of "click" for each kind of computer that JMRI runs on.

Dan Boudreau improved how polling works when system connections get very busy.

Paul Bender fixed a crash when configuring connections over TCP/IP.

Matt Harris added a "(No Panels Available)" message to the Windows menu when there are no selections otherwise visible.

Pete Cressman added an edit menu to Memory icons in the editors.

Rodolphe Braud updated the French translation with help from Dan Boudreau and Marc Fournier.

Some HP touch-panel displays don't properly general "mouse clicked" events, but only "more pressed" and "mouse released". To let them be used, a configuration option has been added on the GUI preferences pane to "use non-standard mouse events".

Matt Harris set the default backup option in the Windows installer.

Paul Bender fixed an error when starting with the LIUSBServer option configured. The LIUSBServer option works again after several releases where it did not.

Many improvements to the preferences window to make it more usable. The "tabbed" form is now the default.

If you have multiple connections defined, the Power Control tool now lets you select which one you want to operate under a "Connection" menu.

Nigel Cliffe provided, a script for setting Zimo function options.

JMRI now has initial support for home automation devices that use the xAP protocol. Input sensors are available as JMRI sensors, and output devices as JMRI turnouts. We're very interested in finding more people to test this with their xAP home automation systems.

JMRI can now provide two LocoNet connections at the same time. You can configure two in the preferences, and the second one will have system names that start with "L2" instead of "L", e.g. "L2T1", "L2S1", etc. Note that you'll still get a warning about "duplicate connections" when saving the preferences, but you can ignore this. We'll make this part of the code smarter eventually.

Walter Thompson improved many help pages. Walt Thompson updated the help pages for adding Blocks, the speedometer, and the main DecoderPro in-program pages.

Kevin Dickerson did a huge amount of work on the preferences to improve their usability and completeness. The throttle and notification preferences are now available via the common preferences dialog under the "Edit" menu.

A problem when inverting LocoNet turnouts that are used for signal drivers was fixed.

First support for internationalization of decoder definitions is in place. In future releases, we expect to be able to provide DecoderPro in multiple languages, but we'll need a lot of help doing the needed translations.

David Duchamp updated Sections, Transits and related classes for automated running.

LocoNet/Intellibox connections can now also work at 115200 baud, though we continue to recommend lower speeds due to issues in the Intellibox flow control.

You can now invert EasyDCC turnouts.

Kevin Dickerson improved the way you add Turnouts and Sensors from their tables. When adding turnouts and sensors simply select the system that the turnout or sensor is connected to from the drop down list and then enter in the hardware address. There is no longer the requirement to enter in the system name prefix. There is also the ability to add a number of sensors/turnouts in one go (only some systems support this as of now). The format for entering in Sensor hardware addresses has been extended so that the user can now simply enter in the board address followed by input on that board, separated by a ":". This saves having to calculate the sensor id for some systems, however this method is still supported. Users should reference the help file in the add sensor window, for the correct format for their specific system. For more information, see the sensor add/edit help page.

Giorgio Terdina's AutoDispatcher script is now distributed with JMRI.

Joan Carranc� updated the JInput library for better access to RailDriver units on Windows.

Bob Milhaupt fixed a bug in transponder messages in the LocoNet monitor.

Matt Harris updated the Windows launch tool to allow more customization.

Pete Cressman fixed a threading problem in warrants.

Fixed a threading problem when invoking sensor listeners from a waiting script.

Pete Cressman implemented following signal mast and head indications.

Pete Cressman updated the warrant support.

Kevin Dickerson fixed an occasional problem when deleting a signal head icon.

Fixed a problem where buttons created at startup don't have the right labels.

Pete Cressman added a "Warrant Throttle Adjustment Factor" to Logix and added delayed reaction to inputs to Warrants

Paul Bender reduced the timeout before the first turnout off message in the XPressNet protocol.

Giorgio Terdina updated XtrkCadReader to version 2.0. (Not really part of JMRI 2.9.6, but we'll record it here anyway) The main changes are:

Kevin Dickerson updated the port interface structure to improve its structure and error handling.

Paul Bender improved the way that turnout control timing is done for the Lenz protocol.

The Ant javadoc-uml target now generates Javadoc pages with UML class diagrams. To show the diagram, click the "Show UML class diagram" link at the top of each page. Note that the process of generating these is quite resource-intensive, and requires a Java 1.6 runtime be present. We make the Javadocs for the most recent release available in the developer section of the JMRI website.

David Duchamp updated the Dispatcher documentation.

David Duchamp made a minor update to the Section table.

Kevin Dickerson fixed a bug that would sometimes prevent the complete preferences from being stored.

David Duchamp added automated running to the Dispatcher.

David Duchamp added Lights for connections with NCE systems.

Much more work on the infrastructure for internationalizing (translating) decoder definitions into other languages, in the process reducing the size and redundancy. The ESU LocSound V3.5 decoder has been (mostly) translated into French as a proof of concept. If you've got your JMRI locale set to French, you should see the results.

New and improved operations features from Dan Boudreau: export cars and engines to a file using comma separated values (*.csv). Improved csv file import, now accepts import strings with commas as long as they are in quotes. Improved save operations. Now locations and trains are also saved if a car or engine type is modified by the user. Fix minor bug when replacing an engine type: The location and tracks didn't properly accept the new engine type.

Giorgio Terdina updated the AutoDispatcher script.

David Duchamp make a major revision of Lights, including multiple controls and a new user interface for adding and editing.

Key/value properties added to the various NamedBean types are now persisted in panel files.

Brett Hoffman added the ability to control Turnouts and Routes remotely.

Pete Cressman added an option to use local or global flag for positioning & control of items in the panel editor(s).

Dan Boudreau added a "reset operations databases to default" feature to the operations support.

The LocoNet ID tool now displays multiple received IDs, so you can tell if all your UR90/UR91 receivers are set properly.

Lionel Jeanson added a work-around so that jynstrument customizations would work even if the file was dropped instead of properly dropping the folder, and fixed a bug in finding the proper folders.

When using multiple LocoNet connections, there's now a preference that lets you pick which one will be used for CV programming.

Lionel Jeanson added a table in the DecoderPro "Roster Media" pane for updating roster attributes.

Pete Cressman improved the Warrant Table and OBlock Table

Pete Cressman fixed an occasional error message from Logix when using the clock.

Pete Cressman updated the panel editors to keep background locked when using global positionable flag.

Improved how LocoNet Slot Monitor uses screen space.

Paul Bender made some changes to make the XPressNet support compatible with OpenDCC command stations.

Allow the user to specify the default preferences and jython script directory locations. This helps to get around an issue reported with windows 7 directory/file permissions. It also allows the user to set where they wish to save panel/throttle/etc files without having to modify the launcher. Feature is handy where multiple Windows user profiles have to access a common set of panel and roster files.

Paul Bender made improvements to the XPressNet communications internals.

Lionel Jeanson added support for lockable/non lockable functions from roster entry into USB Throttle Jynstrument.

Kevin Dickerson updated the editors to handle the setting of borders and margins better, by using a compounded border, the inner covering the margin, the outer covering the outline border. Fixes an issue seen by a user on the JMRI Users group.

Kevin Dickerson updated the editor icons so that they always save the justification position. He removed some inconsistencies from the hidden option. He also removed the "clear" colour from borders, as that didn't do anything.

Paul Bender improved the handling of unexpected XPressNet messages.

Kevin Dickerson fixed a bug that was causing preference settings to be saved even if the Save button hasn't been pressed.

Pete Cressman made a change to how backgrounds are handled in the editor.

Pete Cressman removed the "special mouse click" support from the control panel editor.

Dan Boudreau added two new devices to NCE show cabs: Cab06 and Mini-Panel.

Kevin Dickerson fixed an occasional bug while adding sensors.

Matt Harris fixed the "config-portable" tool for standalone running.

Matt Harris changes the Windows installer build

Dan Boudreau fixed an error when configuring the RPS system

Pete Cressman prevented false clicks on signal mast icons.

Fixed a problem that would cause changed preferences to be saved even though the save button wasn't pressed.

Kevin Dickerson fixed a problem when switching between Signal Mast signal system definitions. He also changed how icons are resized, which should help with resizing problems on rotation.

Fixed a problem in sample scripts that access serial or parallel ports.

Fixed problems with signal mast icons.

Fixed a problem with French translation of roster.

Kevin Dickerson fixed a problem with selecting certain layout editor icons.