Release Notes for JMRI 2.6 release

Date: July 1, 2009

From: Bob Jacobsen

Subject: Production release 2.6 of JMRI/DecoderPro is available for download.

JMRI 2.6 has been superseded by JMRI 2.6.1. JMRI 2.6 had a bug that would occasionally cause the program to freeze when editing Routes, Logix or Lights. This is fixed in JMRI 2.6.1. This release note for JMRI 2.6 is being kept available for historical purposes.

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

The Panel Editor has been greatly improved, but it might take a little while for you to get used to it. If you have trouble figuring out how it works, please see the help pages.

JMRI version 2.5.5 introduced reorganized definitions for SoundTraxx Tsunami Diesel definitions. Several definition files have been removed, and are replaced by one common file. If you haven't modified your Tsunami XML files, you don't have to read the rest of this paragraph. If you have modified or replaced the Tsunami definitions in the program directory in a previous copy of JMRI, you should back up the modified files before installing JMRI 2.5.5. This version removes the old files, so if you have modifications, you'll have to put them back manually afterwards. In general, it's better to put local modifications in the preferences directory, not the program directory, so you won't have to do this in the future.

If you're using a MERG CAN-RS or CAN-USB unit to talk to a MERG CBUS, you should check that your preferences are set properly.

Starting with version 2.5.3, JMRI uses a new version of the Log4J library, and several additional libraries. If you've written your own Java code using JMRI, or have your own startup scripts, you might have to make some changes to adapt to these new libraries. If you don't get messages about missing or deprecated methods, you don't have to worry about this.

The XSLT location was moved back to the web in JMRI 2.5.3.

Starting in JMRI 2.5.2, Logix support has a lot of new capabilities, but panel files that use these capabilities can't be read by previous versions of the program. Please keep backup copies of your panel files in case you want to move back to a previous version.

Starting in JMRI 2.5.2, there have been extensive changes to the way JMRI installs and starts on Windows. If you have custom shortcuts (ones you made), you may have to update them. The JMRI-created ones will be updated automatically. Users of Mac OS X and Linux will not be affected by this change.

The downloads are significantly larger due to more text and images in the help pages, especially the updated manual.

JMRI now requires Java 5 or later. (Java 5 is also called Java 1.5) If you are using an older version of Java, please upgrade your Java installation. To see JMRI's future plans for this and other compatibility issues, please see the JMRI technology roadmap.

Starting in JMRI 2.5.1, the way you drag things in the Layout Editor has changed if you are using a Linux computer.

Changes since production version 2.4

JMRI 2.6 contains all the changes in the JMRI 2.5.* series of releases; the following is a list of the accumulated changes from those release notes)

Fixed an error with the Digitrax SoundLoader if you cancelled before opening a file.

Reformatted the DecoderPro speed table to fit better on narrow screens.

Update Throttle "Edit Throttle Frame" so user is less likely to enter a new frame title and not have it appear.

Several technical updates were made. These shouldn't affect users, but things don't always go perfectly...

Dan Boudreau added several new features to the operations code:

A duplicate definition for the Hornby 8215 was removed.

Much internal work on handling multiple types of programmers. The first indication of this at the user level is in the "Single CV programmer", which now will let you pick a programmer if more than one is present.

Ken Cameron updated his DebounceSensor.py sample scripts to make it more reliable.

Simon Ginsburg updated some of the German translation.

Fixed a problem when importing a decoder definition for the first time.

Updated the port-selection in the preferences to only show serial ports. This will mostly affect Windows machines, where the "LPT1:" choice would occasionally be shown whether or not it would work.

The RXTX communication libraries are now packaged with the Mac OS X version so a separate installer is no longer needed.

Paul Bender arranged for the Lenz support to automatically retransmit turnout messages when certain errors are received.

Fixed a crash when loading panel files that contained certain types of SignalHeads with comments.

Matt Harris updated the Windows application launcher so that the "DOS" log window is minimized (not shown full size).

David Duchamp changed the Layout Editor drag gesture on Linux.

Michael Mosher updated the ESU LokSound 3.5 definitions.

Robert Coleman updated the CTI Acela connection to have blink and pulse support, activate the "invert" option in the Turnout table, adjusted the timeout settings to shorter waits, and updated format of the configuration file.

Fixed a problem in the TCS BEMF decoder definition that prevented showing the "BEMF Enable" option.

Fixed a bug that was preventing the tooltips on DecoderPro radiobuttons from showing on some platforms.

Nigel Cliffe added more details to the "uncoupling" features within CT DCX series decoders, mostly to the panel which displays the options for uncoupling movement controls. He also extended the version number range to 66 (he recently bought a DCX74 with v66 software). CT's use of version numbering remains a problem with JMRI, the version numbers in different types of DCC chips will overlap.

Michael Mosher updated the SoundTraxx Tsunami definition for the EMD 645 decoder.

Bill Chown and others added a decoder definition for the MRC Brilliance 1819 G scale decoder and updated the Sound Brilliance definition. He also updated the TCS BEMF decoders definition to complete BEMF and Decoder Lock support.

Bob Coleman fixed a bug in the CTI Acela support that sometimes resulted in reversed turnout operation.

Fixed some links within help pages.

Xavier Chazelle provided a new decoder definition for the Uhlenbrock 73400 mini decoder.

New NMRA manufacturer numbers:

Matt Harris improved the Windows startup scripts to put the messages.log log file and the Jython cache files in the JMRI preferences directory. This lets JMRI run cleanly on Windows 7.

Nigel Cliffe and Mark Waters provided new definitions for the Zimo MX620 decoder.

Dan Boudreau made several enhancements to the operations program. You can now specify car loads, and define the name of the load received or shipped for a siding by using the schedule feature. Schedules can now be accessed from the Locations menu under Tools. You can now also modify the default load names for empty and loaded. Edit frames now appear on top when launched from tables. He also fixed a print problem when a car with a FRED was printed in a switch list or manifest. Trains, Train, and Route windows now have print and preview tools. Also fixed a problem where some buttons were not visible on some operations windows.

Matt Harris fixed a problem launching JMRI on a Windows 64-bit machine with more than 2GB of memory installed.

Ken Cameron fixed a problem saving the Powerline CP290 configuration.

The Linux startup scripts should now have executable permission set automatically.

Bob Coleman added Acela Signalhead support. Double and Triple will now work, but they send individual on and off commands rather than more optimal Acela signal commands down to the hardware. So, added an Acela Aspect option that will do things efficiently for Acela and also correctly supports BiPolar and Wigwags.

Matt Harris made the startup scripts more reliable on Windows 98.

John Plocher updated the instructions for using Eclipse to build JMRI.

Andrew Crosland improved the CBUS and CAN utility tools.

David Duchamp added automatic setting of turnouts to Dispatcher

Bob Coleman did a lot of important work on improving the JUnit build tests for the operations feature.

Walter Thompson did a lot of work to improve sample scripts.

Jack Shall updated the "Lenz 54" decoder definition.

Tom Starbuck updated and organized the model numbers in the TCS BEMF decoder definitions.

A bunch more baud rates were added for CAN connections.

Paul Bender updated the XPressNet support to properly handle non-standard operations by the Hornby Elite. He also added a configuration tool for the Lenz LI-USB.

Andrew Crosland improved the CBUS support and added a new "Event Table" tool.

Marc Fournier improved the TCS BEMF decoder definition.

Peter Ulvestad improved the LnSendTool.py sample script.

Walt Thompson improved some web pages.

Mark Waters provided a new Zimo MX640 definition for version 1, 2, 3 and 4 decoders.

Jack Shall updated the Comprehensive programmer to add some lighting options.

Dan Boudreau and Mark Schutzer improved the reliability of ops-mode (on the main) programming when using an NCE system and certain non-NCE decoders

Ken Cameron updated the Team Digital Sic24 decoder, plus added the Sic24AD version.

Matt Harris added a decoder definition for versions 41 to 43 of the Lenz LE103XF.

Matt Harris updated the definition for the Digitrax TF4 and TF2 with information from Bob Grosh.

Jeff Schmaltz updated the Massoth decoder definitions.

Jeff Schmaltz added additional detail to the Zimo MX69 and MX690 definitions.

Jeff Schmaltz updated the version numbers for several ESU decoders.

Mark Waters fixed CV38 in the Zimo MX620 series of decoder definitions, updated the more recent versions to include additional CVs, and created a new definition for the MX620 decoder version 9.12.

David Duchamp updated Blocks to contain length and curvature information, and improved the associated help files.

David Duchamp added saving and restoring train setup information and the ability to select layout scale to Dispatcher.

Dan Boudreau added a tool to the NCE menu that provides a table of active NCE cabs addresses, loco speed, and function keys.

Matt Harris has created a new, much more professional Windows installer.

Bob Jacobsen updated the RPS support to handle large number of points better.

David Duchamp added a continuous running option to Dispatcher.

Fixed a problem with the function mapping in DecoderPro when a decoder has a large number of functions and outputs, which was causing trouble for the MRC Sound Brilliance 1644 decoder.

Pete Cressman and David Parks fixed a problem with a tiny active area for MultiSensors when the default inactive, etc, icons are still used.

Ken Cameron added methods so you can enable and disable polling of C/MRI, etc, nodes via scripts.

Peter Cressman provided a large update to Logix. In particular, the Conditionals in the Logix can now compute more complicated logical expressions; more than two actions can be attached to a conditional; the user interface is more flexible; and certain internal race conditions that resulted in inconsistent results have been fixed.

Richard Sauerbrun provided info for the TCS 1278 decoder model.

David Duchamp added a 3-way turnout tool and other additions to Layout Editor tools

Simon Ginsburg updated the German, Czech and Spanish translations.

Ken Cameron provided an example script for turning CMRI node polling on and off.

Fixed a bug in C/MRI error handling that would cause the wrong node to be reset if several polls were missed. (This only affected C/MRI, not other hardware types)

Matt Harris added scrolling options to the panel editor and layout editor windows.

Dan Boudreau fixed a problem a with the EPROM revision error message when using NCE and a TCP/IP connection.

Mark Waters updated the decoder definitions for the various versions of the Zimo MX640.

Mike Mosher updated the QSI Version 7 decoder definitions.

Nigel Cliffe updated the CT Elektronik DCX decoder definition.

Peter Cesaro updated the MRC Sound Brilliance 1663 and 1656 definitions.

Jim Thompson provided a new "PM42forCTC.py" sample script, and greatly improved the previous PM4Announce.py script.

Lou DeHayes provided a definition for the MRC Sound Brilliance 1806 decoder.

Pete Cressman improved the user interface for defining Sensor Groups. Also, Sensor Groups can now be migrated to become a Logix conditional by viewing the group and then pressing the 'make group' button. (This deletes the group as a series of routes and implements it as a Logix Conditional. This is a special type of Conditional for radio button type action and cannot be edited as a Conditional.) A Panel for the names of existing groups is added to the Sensor Group window. Editing of Sensor Groups is done from Sensor Group window - view the group, make changes, press make group.

Pete Cressman removed the limitation on the number of turnouts or sensors that can be set in a route.

Pete Cressman made it possible to export Routes to Logix conditionals - there, additional attributes can be added to the triggering controls or outputs by ordinary conditional editing. Pressing 'Add Route' still creates a traditional route in the Route Table. Existing Routes can be migrated to their equivalent implementation as Logix Conditionals by pressing the 'Export to Logix' button on the Route Editing window.

Marc Fornier added the K1D4 decoder to the TCS definitions.

Jim Betz added the Z2 TCS decoder

Ken Cameron added CmriNodeTool.py, a sample script that acts as an interactive tool to enable/disable polling of CMRI nodes.

Simon Ginsburg has updated the German translation.

Various improvements to help screens

Ian Birchenough provided a definition for the Bachmann 3 function decoder.

Dan Boudreau added more help pages on operations, and resized some figures so they take less screen and disk space.

Some pages in the help system link to pages on other web sites. The help viewer isn't a full-function web browser, so these pages don't always display well, PDF files can't be displayed, etc. Starting in JMRI 2.5.3, if you have Java 1.6 or later installed, your native web browser will be launched to display these pages.

If you run into a problem with JMRI, and the people trying to help you need more information, you can "send a problem report" (from the Help menu) that contains information about your JMRI and Java versions, configuration, error messages, etc. Developers can then look at that to get the information they need to help find a solution. This feature is still in development, and might not work with all email systems yet.

David Duchamp fixed a problem with Block initialization at startup.

The Log4J library used by JMRI has been updated to the current version. This won't change the user experience, but helps us handle errors in a cleaner way. Dan Boudreau did 1300+ updates to use this!

Pete Cressman improved error handling in the sensor group GUI.

More help files. Also, some help pages were reformatted to be more readable, and image files were reformatted to save some space.

Fixed a problem that was making some buttons disappear when editing Digitrax SPJ sound projects. Fixed a problem when editing the SDF control sequence in SPJ projects that used certain looping options. Added more editing capabilities for SDF instructions.

Dan Boudreau updated the operations feature to allow users to place and resize the Settings, Edit Location, Trains, and Edit Trains windows.

We have again changed the references to the XLST transform in newly written panel files, trying to get the browser display to work by default.

The LocoNet Monitor now displays information on several more messages.

Pete Cressman added tests for Logix, which resulted in several updates to the JUnit test structure.

The XSLT location was moved back to the web.

The Digitrax SDF editor can better handle complicated sound instructions.

A problem with decoder definitions requiring 28 functions was fixed. For earlier versions, the workaround is to claim that the decoder has only 27 functions.

Pete Cressman arranged for edit windows to open in front of tables.

David Duchamp fixed a problem in how the Layout Editor creates signal Logix.

Matt Harris updated the Windows installer to fix a bug when reinstalling or uninstalling from a non-default location, and to make the selections for program location and start menu setup visible in all installation types.

Pete Cressman added "Change level" to the popup menus on Panel Editor icons. 'Set x & y' was changed to 'Set Location', whose dialog window now also allows setting the display level of the icon.

Ken Cameron fixed a problem in the DebounceSensor sample script.

Pete Cressman made some updates to Logix. A copy Logix and Conditional function was added by turning the 'Edit Logix' button into a drop down 'Select' menu list for 'Edit', 'Copy', or 'Delete' operations. Edit and Delete act as before. Copy allows a duplicate Logix to be created or it can copy Conditionals into an existing Logix. Also, a 'Toggle' option is added for Conditional actions that have only two action settings. The Logix behavior after an 'Export to Logix' function in the Edit Route window now more closely matches the behavior of regular Routes.

Pete Cressman added an 'LRoutes Table' that uses pick lists for Sensors, Turnouts, Lights and Signals to make Logix(es) similar to Routes, but somewhat more generalized in that an unlimited number of items can be included for both input and output, and Lights and Signals are also included.

Jon Miller provided info for the new BLI Paragon steam and diesel decoder definitions. Note that these require features that are only present in JMRI 2.5.3.

Our internal testing now uses JFCUnit for GUI testing, in addition to JUnit.

JMRI now allows you to select any of the baud rates supported by C/MRI hardware, including 115,200 bits per second. Note that not all installations (software/hardware/wiring) can operate at this speed, but some can, so we provide the option.

Team Digital updated the decoder definition for their SIC24AD to allow ops-mode (on the main) programming.

Andrew Crosland sorted out a problem with the GridConnect connections to CAN and CBUS. This fixes a problem sending frames that was present in JMRI 2.5.1 and 2.5.2. Note that if you're using a MERG CAN-RS or CAN-USB unit, you should check that your preferences are set properly.

Dan Boudreau made some operations updates. The "show route" location box as grayed out if train can't service that location. The location print/preview now includes which car types and roads are serviced by each location and track.

Dan Boudreau improved reporting and printing in the operations tools. You can now see and print what type of cars and engines can be serviced by a location. You can also request that all of the info provided by the edit location be printed.

Paul Bender added support for F13-F28 on Lenz systems upgraded to XPressNet version 3.6.

Paul Bender updated the XPressNet support for the Hornby Elite: Do not send the "OFF" XPressNet message (The Elite appears to react in the same manner to both the "ON" messages and the "OFF" messages).

Dick Bronson improved the USS CTC panel background images in icons/USS/background to remove the appearance of repetitive blotches in the track background area. He also added some new 850 pixel high background slices sized to fit the new 1440 x 900 pixel wide screen monitors.

A number of JMRI implementation classes have been moved to clean up the code organization. This only effects you if you've written somehat low-level Java or Python code to e.g. implement a new system. If you've done that, and you encouter compilation problems, look in the jmri.managers and jmri.implementation packages.

Jeff Schmaltz updated the Massoth LBG, eMotion motor and sound decoders, and LGB 55027 decoder definition.

Nigel Cliffe fixed a bug found earlier CT DCX decoder definition (actually a bug in the decoders). CVs 152/153 take different values if the decoder is v27-59 or v66. Splitting the decoder file on the version number of the decoder seems easiest, so there are now two definitions.

Paul Bender has added initial support for an "XPressNet Simulator" connection type. It currently handles only certain basic message types.

Dan Boudreau added an operations control for whether car lengths and car colors are printed on manifests and switch lists.

Jack Shall updated the Comprehensive programmer format to look better with complex sound decoders.

Dave Duchamp has updated the dispatcher support to fix some bugs, and to add tools to Section Table to automatically add direction sensors to signal logic for simple APB signaling.

Dan Boudreau changed the Panel Editor info message when closing a panel. You can now decide to hide or delete the panel when closing.

Ken Cameron fixed an error in the RobotThrottle demo script that happened when items didn't have user names.

Dan Boudreau improved printing in operations: When printing locations, tracks now only show which rolling stock types are accepted; provide users the option to only print cars that have a valid location.

Paul Bender fixed a problem when XPressNet simulator is starting up.

Dan Boudreau updated some internal deprecated references.

Fixed a problem preventing the "exclude" option in decoder definitions from working when "include" was also in use.

Simon White added support for FindBugs to our software build process.

Dan Boudreau updated the code to remove some Java 1.5 generics warnings.

Paul Bender improved the consisting performance and added code to handle certain kinds of I/O errors.

Jack Shall has updated the SoundTraxx Tsunami diesel definitions so that they now live in a single file, and share definitions of most CVs.

Matt Harris fixed a bug in the startup code that could prevent JMRI applications from starting up on Windows.

Paul Bender improved how the connection configuration dialog works.

Peter Cressman fixed a problem with Conditional names.

In the JMRI 2.5 series, the values of Memory objects are stored in panel files and restored when the file is reloaded. This version fixes a problem with replacing "empty" (null) values with a space character; in JMRI 2.5.5, empty values are restored as empty, not as a space character.

You can now use "Internal" lights with more setups.

Dick Bronson updated the signal icons for USS CTC machine schematic panels.

Ken Cameron added a new "FileLogging.py" script, which logs sensor changes to a comma-separated-variable (CSV) for later examination.

Paul Bender made two improvements to the XPressNet (Lenz) throttle:

  1. When doing a version check, compare to the BCD version sent from the command station, rather than the float value calculated in the program (fixes a bug with functions F13-F28).
  2. Instead of dropping messages when they are outgoing, queue the messsages for in-order delivery.

Ken Cameron added some initial code for "extended commands" in the Powerline (X10) support

Dan Boudreau updated the operations tools to remove any train icon(s) from the panel(s) when a train is reset.

Fix an off-by-one error when doing manual reads and writes with the DecoderPro indexed-CV pane.

Pete Cressman made some significant improvements to the Panel Editor. The textfields that required users to type in the system name of a JMRI entity, e.g. a turnout, sensor, etc, and then press an 'Change Icon' button to open a window to assign icons to it, have been replaced by a dropdown menu. Selecting an item from this comboBox opens a window similar to the previous version. These new versions of the Add.. window have several new features:

  1. A picklist table is displayed for the JMRI entities that have creation tools. Selecting a row from the table activates an 'Add' button that adds icons for the seletion to the Panel.
  2. There is a similar panel containing trees for changing icons. The new version displays all the icons contained in a node of the tree and icons are changed by dragging the image from the preview panel to the entity's icons and dropping it there.
  3. There are menu items for help and file system searches
  4. Any directory accessible from the computer can be searched for images and then added to the trees that provide icons for importing to the Panel
  5. An Image Index can be created and a permanent copy saved to organize the icons for import to the Panel. This index is usable globally (i.e. not confined to the Panel under construction)
  6. Panel Editor users may now change the default icons to be icons of their own choosing.
  7. Icons can be edited directly from the Panel by using the dropdown popup item "edit".
See also the Image Index help page.

Dan Boudreau improved the operations help and updated the images. He also fixed a bug: When terminating a train, the train's engine(s) were not always sent to the destination track if the free track space was less than the engine(s) length. He also added minor GUI improvements for locations and tracks, and updated it to allow users to enter similar location names in operations by using a hyphen and a number in the name. Hyphen and number are no longer printed in manifests and switch lists.

Peter Ulvestad added a BackAndForthWithMidStop.py sample script that uses two different detectors for the stop because of the location of the station and detection blocks. This allows the RDCs to stop exactly if front of the station in both directions. You can change it to one detector if that works for your situation.

Chris Zurek updated the version number and number of functions for the Digitrax DH123 decoder.

Marc Fournier updated the TCS BEMF decoder tooltips.

Dan Boudreau added a user prompt if something goes wrong when loading a panel file. This will remind people to check their preferences, so they don't lose any contents of the file.

Added "lights" alias for scripting

Improvements to the Hornby DCC support.