Release Notes for JMRI 2.8 release

Date: December 18, 2009

From: Bob Jacobsen

Subject: Production release 2.8 of JMRI/DecoderPro is available for download. We are very pleased to announce that the 2.7 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.8" available for download today.

Among the enhancements since the last production release, JMRI 2.6, 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:

XML input processing was reworked in JMRI 2.7.8. This shouldn't have any impact on users, but might effect people who have written scripts to read or write XML files. See the XmlFile JavaDoc for more information.

If you want to use the "Function Label" or "Roster Image" panes with the DecoderPro "Comprehensive" programmer format, you should change to using the "Advanced" format. You select this at the bottom of the window when opening a locomotive for editing, or via the JMRI Preferences window.

Changes in JMRI 2.7.7 to the internal structure of the classes for the throttle windows (not the throttle classes themselves) may cause trouble for scripts that were using them.

JMRI 2.7.7 uses a different set of libraries for processing the XML panel files. In turn, this means that if you've created your own startup scripts, you may need to adjust them.

The new audio support in JMRI 2.7.5 requires some new libraries. Those libraries are included in the JMRI downloads. They, in turn, require that the startup scripts include the new libraries, so these have also been modified. The 2.7.4 and earlier scripts will not work with 2.7.5 and later. In particular, if you've created your own copies of startup scripts, you'll have to update those:

If your roster contains locomotives with Soundtraxx Steam Tsunami decoders, you should migrate those roster entries to the new decoder definition names. We've created a tool to make that easier. For information on how to use that tool, please see the separate note.

JMRI 2.7.4 changed the way filenames for icons, etc, are stored in XML files by JMRI. The advantage is that this new method will make it much easier to move panel files from one computer to another, even of a different type. So long as you keep all your files in the JMRI preferences directory on both machines, the files should just move over without trouble. The warning is that files written in this format will not be properly read by JMRI versions before 2.7.4. This includes files from earlier versions that are read by JMRI 2.7.4 or later and then written out again, as the program will update them to the new format upon storing them.

Download links:

Please use these links for downloading:

Mac OS X:



Changes since production version 2.6

Ken Cameron updated the decoder definition for the Team Digital SMC4.

Fixed a problem when using the invert option on LocoNet sensors.

Pete Cressman added the capability to edit (change) the icons used by a particular item on a Panel Editor panel from the popup menu.

Paul Bender added "invert" capability to XPressNet turnouts.

Even more help page updates.

Panel Editor icons can be edited directly from the Panel by selecting the "edit" item from the popup menu of the icon.

Mark Fournier updated the Comprehensive programmer to handle more consisting options.

Peter Ulvestad updated the MRC Sound Brilliance 1806 decoder definition.

Marc Founier added and updated MRC Athearn decoder definitions.

Peter Ulvestad updated the Bachmann EZDCC decoder definition to put a max value on CV2.

Mark Waters updated several Zimo decoder definitions to include the right number of outputs and their controlling CVs.

Manually add Rautenhaus Digital Vertrieb to the list of decoder manufacturers, which is unfortunately no longer being maintained online by the NMRA.

Pete Cressman fixed some problems when defining and deleting icons for a Panel Editor MultiSensor icon.

Paul Bender added initial support for connecting to a Lenz LI-USB via the Lenz server.

Nigel Cliffe added a script to allow MERG RFID equipment to be read into JMRI.

Pete Cressman made several improvements to the Panel Editor:

Pete Cressman improved Logix Conditionals by

Internal Lights (IL1, etc) now support variable intensity.

The bug causing the program to hang when editing a Logix, Route or Light has been fixed. (This fix was in JMRI 2.6.1, but not in JMRI 2.7.1)

Added a new Panel Editor icon for Memory objects that lets you set and modify numeric values. This is a simple initial implementation for values that range from 0 to 100, with more customization, etc, to follow if people are interested in this.

Fix the script input window so that large scripts can be entered. Once the initial text window is full, scroll-bars will appear. Also, fixed a bug that could cause the "Execute" button to disappear.

Support for "Lunar" appearance has been added to signals.

A new "Four Output Signal Head" is available. It uses a 4th lamp (bulb or LED) to show a Lunar or Flashing Lunar aspect. The Logix/Conditional support has been updated to work with this.

Pete Cressman improved the memory spinner icon.

In preparation for new Signal Mast support, we've changed the interface to talk about Signal Heads instead of just Signals.

Fix a problem with PowerLine initialization that would prevent certain Light configurations from working.

Pete Cressman improved the Memory spinner icon support, allowed the Light icon to be edited, and added methods for better control of the icon editor.

Fixed a problem that prevented TwoOutput and ThreeOutput signal heads from being edited from the Signal Head Table.

Sakae Akanuma provided a Japanese translation.

Fixed a problem that prevented panel files from JMRI 2.7.3 from properly showing certain icons. (More detail: If the file specified an icon location that started with "resource:resource", JMRI 2.7.3 would not locate the icon)

Pete Cressman fixed a problem that prevented the format of panel editor Sensor Icon text from being properly stored and reloaded.

Pete Cressman added a "Memory Input Icon" to the panel editor.

Pete Cressman fixed a problem where a panel editor sensor icon would be triggered when you opened its popup menu.

Pete Cressman fixed a problem storing and loading the new Memory Spinner Icon, improved some labeling in the icon selector, and added more controls to the memory icon popup menu.

When storing references to files, e.g. custom icons in panel files if the file is stored in your home directory, JMRI will store a relative "home:" reference, in addition to the already-present detection for files in the JMRI program and preferences directory. This makes it easier to move panel files from computer to computer; just make sure you have the icons, etc, in the same relative place on the two machines.

Ken Cameron added sensor support for X10 Powerline devices. Once you have manually created a sensor using the Sensor Table, changed heard on the powerline will adjust the corresponding sensor's state.

Pete Cressman made some improvement to Panel Editor icon handling.

Pete Cressman added group icon capture and move in the Panel Editor. When a panel in put in "repositioned" mode, a click and drag that begins in an open area will draw a red rectangle. All the non-fixed icons captured within this "fence" can be moved as a group by dragging any one of the captured icons. "Non-fixed" means the icons that do not have their "fixed" or "locked" items checked in their popup menus. A group of icons captured by the "red fence" can be aligned by their upper left corners horizontally or vertically by selecting the "Align Vertically", or "Align Horizontally" items in one of the captured icon's popup menu. These items appear only when the icon is captured. This alignment will only occur to the unfixed and unlocked icons.

Paul Bender fixed a problem with XPressNet throttle setup that was particularly problematic for Hornby users.

Paul Bender corrected a bug in XPressNet LI100 programmer which made it difficult to read multiple values from a decoder (single reads were ok).

Paul Bender added some additional error messages to the DCC programmer.

Sakae Akanuma added a Japanese translation.

Pete Cressman fixed a bug in the memory compare in Logix

Ken Cameron updated his DebounceSensor script.

Pete Cressman improved rotations of icons to the panel editor, and added scaling and repositioning. A new "Rotate (degrees)" item was added to the popup menu. The former "Rotation" item is now labeled "Rotate (Orthogonal)". "Rotate (degrees)" will rotate an icon an arbitrary number of degrees. Each "Rotation" item resets the other. The "Scale (percentage)" popup item enlarges or shrinks the icon by the percentage input. To scale and rotate, use "Rotate (degrees)". A "Shift-Drag" feature allows repositioning of the icons in a layer beneath an icon, while holding the top icon in place.

Ken Cameron fixed the problem that would cause startup errors if you configure a clock (analog, digital or Nixie) to open at startup.

Matt Harris fixed the way the preferences store the GUI selection to avoid occasional problems.

Matt Harris added great new Audio support, including a demo script that shows off many of the features.

Peter Ulvestad added a definition for the DN163K1D decoder and updated 'maxMotorCurrents' on the DN163K1A,B,C.

Jack Shall reworked the Soundtraxx Bachmann OEM decoder definition.

Mike Mosher updated the ESU XL V3.5 decoder definition to fix acc/dec on motor tab and incorporate latest changes from LS V3.5 file.

Mike Mosher updated the QSI Gas Turbine decoder definition to add "Code Horn for Gas Turbine Startup".

Jack Shall and Mike Mosher updated the SoundTraxx Tsunami Diesel definition to add CVs, correct a couple bugs, and add tooltips.

Peter Ulvestad updated the Bachmann EZDCC 4fn definition to add a max value for CV2, changed the Lenz tab name to Bachmann, updated dimensions and default values as per decoder manual and added factory reset menu items.

Paul Bender fixed an error when parsing an "unsupported command" XPressNet response message.

Paul Bender changed the XPressNet code: instead of sending emergency stop to a MultiMaus (which doesn't support the emergency stop command?) send speed 0.

Peter Ulvestad updated the Bachmann EZ DCC, and EZ DCC 1 function decoder definitions to change the model name, added decoder dimensions, update defaults and cleaned up the formatting.

Peter Ulvestad updated the ESU Bachmann 3 function to add CV17 - Extended address, corrected CV4 max value and CV5 default value.

Paul Fraker contributed a decoder definition for the MRC diesel 1829 decoder.

Jack Shall updated and combined the SoundTraxx Tsunami Steam decoder definitions.

Paul Fraker contributed a decoder definition for the MRC Athearn Genesis SD45-2.

Peter Ulvestad created a definition for the MRC 1820 Athearn RS3 Dropin Decoder.

Peter Ulvestad updated the definition for the MRC 1806 decoder to correct CV67-94 (speed table), moved consist info to consist tab

Michael Mosher updated the QSI Version 7 decoder definitions to add new models and CV 55.21.0,CV53.15.0 thru CV53.30.0, CV55.154.SI CV56.9 CV55.3.5 CV55.84.SI CV55.70.12 CV55.76.6,11,12,13 CV51.2

Nigel Cliffe provided a new decoder definition for the ZTC 471 sound decoder.

Nigel Cliffe provided a new decoder definition for the CT ElektroniK SL series (post v40) sound decoders. He also improved the CT Elektronik DCX decoder definitions.

Ilidio Serra provided a decoder definition for the Rapido TurboTrain.

Pete Cressman fixed a problem with italic text in the panel editor.

Pete Cressman fixed a bug in Logix support for Memories

Ken Cameron updated the RobotThrottle2 script to solve the 'waiting for throttle' problem, to add a horn button, and to provide smoother stops.

Matt Harris updated the build.xml file so that JMRI can be built with Java 1.7 (1.5 is still the default)

Ken Cameron added Jython command support to Logix.

There is now a IMCURRENTTIME memory variable that contains the current fast time.

Matt Harris provided a new "SoundPro" application.

Peter Ulvestad updated the Comprehensive programmer format to display built-in speed table information better.

Peter Ulvestad updated the MRC Sound Brilliance 1820 definition to better display CV 6. He also provided new MRC 1637 and 1665 definitions, and updated the MRC Diesel 1829.

Paul Fraker updated the MRC Athearn Genesis SD45-2 definition and updated the MRC Diesel 1829 definition.

Elmer McKay provided a nice help file describing how to start putting signals on your layout.

Jack Shall updated the SoundTraxx Diesel Tsunami definition to include the new ALCO 539 models.

Micheal Dunn and Peter Ulvestad provided a new definition for the MRC 1658 Sound Brilliance decoder.

The DecoderPro programmer definition files (in the xml/programmer directory) can now control whether the "Function Label" and "Roster Media" panes are shown. By default, the Basic programmer and the Comprehensive don't show them. If you want those two panes, start using the new Advanced programmer format. "Advanced" is be the default programmer format, if you don't pick any other one.

David Duchamp fixed a problem with processing continuing sense when editing turnouts in Layout Editor

David Duchamp extended the Maple interface so JMRI can run multiuple Maple input touchpanels.

David Duchamp added "Special Actions" to Transits. These are actions that can be initiated automatically as a train running in automatic mode traverses the layout.

Fixed a problem loading SE8c signal head definitions that include comments.

Simple Signal Logic now remembers whether you entered a user name or system name, and will use that same information in the future. Previously, it converted whatever you entered into a system name and remembered that.

Update XML parsing routines to use Xerces-J library instead of Crimson. This may require users who have created their own startup scripts to reference the xercesImpl.jar file instead of crimson.jar.

David Duchamp fixed signal head placement problems in Layout Editor signal setup tool.

JMRI SignalHeads are supposed to start up DARK, so that whatever controls them can then set their initial appearance. SE8c SignalHeads were not doing that properly. Both the internal appearance (e.g. what shows on icons), and the actual signal, should now properly start at DARK.

Signal heads and Simple Signal Logic now remember whichever user name or system name you provide. Previously, names would be converted to system names before being stored. This is the first step in a general overhaul to get this behavior.

Paul Bender added a javadoc-uml build target to the Ant build. This uses UmlGraph and GraphViz to build UML class diagrams to include in the Javadoc. UmlGraph is included as a jar in lib, GraphViz will need to be installed. This requires Java 1.6. You can check out the results via the UML diagram listing on the JMRI web page.

Andrew Crosland updated the SPROG programmer to log an error if no programmer listener has been provided to the programmer, for example in a script.

Andrew Crosland added support for the CBUS DCC command station, CV programmer and layout power manager.

Peter Ulvestad provided a decoder definition for the MRC 1827. He also updated the MRC 1630, 1631, 1637, 1806, and 1819 definitions.

Nigel Cliffe added a definition for the Lenz Silver 21 Pin decoder.

Marc Fournier updated the Kato EM13 decoder definition file.

The default memory limit on Mac OS X has been increased.

Randy McKenzie contributed some additional background images for CTC panels.

XML input processing has been reworked. This shouldn't have any impact on users, but might effect people who have written scripts to read or write XML files. See the XmlFile JavaDoc for more information.

Nigel Cliffe contributed an update for the CT Elektronik SL version 40 decoder definition

Nigel Cliffe contributed an update for the ZTC 471 decoder definition

Paul Bender improved error handling and reporting for the XPressNet ops-mode programmer

Giorgio Terdina added an Entry column to the Entry Point table in the Add/Edit Section window of the Section table to make it easier to set entry point direction.

Paul Bender added ops mode programming for the Hornby command station.

John Plocher improved the DS54 help page.

Peter Ulvestad added the Digitrax DZ123MO decoder.

Peter Ulvestad updated the Atlas Dual Mode and four function (342 and 345) decoder definitions to add the factory reset and update some limits and defaults.

The "Send Problem Report" option in the main Help menu now works. The messages are filed in a dedicated Google group.

Pete Cressman modified the create/edit dialogs for state variables and actions in Logix to organize them according to item type (e.g. Senors, turnouts, etc.). The column expandability has been somewhat improved.

Pete Cressman added new sub-menu under "Tools - Tables" called "Occupancy Blocks". This is a sub-system for defining elements needed to run trains with automated commands through "Warrants". Some of the features of Warrants are:

  1. Routes can be determined by merely choosing the start and end points.
  2. Throttle commands are recorded in a "Learn Mode" that are then played back for automated running.
  3. Turnout and Signals are set automatically for automated running.
Warrants need to have the layout decribed in terms of the elements defined by the Occupancy Block Table. Although intended to operate with block detection, warrants can run trains without it, however in this case, there is no protection against misaligned turnouts or cornfield meets. Detailed information can be found in the Help files on the Occupancy Block Table menu.

Giorgio Terdina provided screen icons for German signals.

Tjeerd Verhage provided an icon for our page

SE8c Signal Heads can now work with non-Digitrax layout connections. There have been a number of changes to make this possible. In particular, the convention for system names for SE8c signal heads has changed. Existing ones (from saved layout files) will stay the same, but newly-added signal heads will have the new names.

Added a sample script to run the Heljan container crane from the screen.

Brett Hoffman added support for mobile devices to control throttles through a wi-fi connection. The first use of this is the WiThrottle for iPhone and iPod Touch.

Peter Ulvestad provided a decoder definition for the MRC Rapido Turbotrain.

Andrew Crosland changed the standard/extended address boundary in the SPROG throttle software to match the SPROG hardware.

Peter Ulvestad improved the decoder definition for the MRC 1663 Atlas S2/S4 decoder.

Kevin Dickerson made several bug fixes and enhancements:

Kevin Dickerson made several bug fixes and enhancements to the Layout and Panel Editors:

Lionel Jeanson improved rosters:

Lionel Jeanson improved Throttles:

Dan Boudreau made several enhancements and bug fixes:

Dan Boudreau made many improvements and bug fixes to the operations code.

New features:

Operation improvements:

Operation bug fixes: