Release Notes for JMRI 1.7.7 test release

Date: June 8, 2007

From: Bob Jacobsen

Subject: Test version 1.7.7 of JMRI/DecoderPro is available for download.


This is a test release. Please post a note if you encounter any new or old bugs! And please back up your JMRI files before installing this, in case you want to go back to an earlier version.

This is the next in a series of test versions that contains many new features, including:

  • numerous decoder updates,
  • improvements to support for the new NCE EPROM, including a send macro tool and turnout readback,
  • improvements to signaling logic, Routes and the new Logix capability,
  • a complete revamp of help system (including help information for most windows)
  • greatly improved support for the Digitrax PR2 programmer and it's sound files,
along with lots of other changes. See the complete list below.

Some of the changes involved are quite extensive, and may require a certain amount of experience before they are working well. Therefore, this test version should be considered experimental.

New warnings for this test version:

The Route interface has had significant changes. New member functions have been provided for configuring the Turnouts and Sensors that are changed with the Route fires. The old methods are deprecated. If you've written your own code that uses Routes directly, you should update it. The deprecated methods will be removed after the next production release.

On using system vs user names: System names are fixed when they are created, and refer to a specific item such as an input pin, output device, etc. You can also attach a user name to any of these, and change it after the fact. By convention, when you put a name in a form, we try to remember that name for the next time you reload that configuration. You can provide either a system name or a user name. If you don't change the user name once you've set it, it doesn't matter which you provide. But changing user names can have both good and bad effects:

  • You can use them to name "functional" items, like "east entrance turnout". A particular turnout, like LT12, could be given that user name, and then "east entrance turnout" could be entered in a route or signaling definition. Then, later, if you wanted to use a different output to control the "east entrance turnout", e.g. CT21, you could move the user name to the other turnout in the turnout table, store the configuration, and reload it (to connect up the various uses of the devices) and everything would still work.
  • On the other hand, if you just edit the user name for LT12 to "East Entrance TO" (note change to capitalization & abbreviation), store and load the configuration, the route will not reload properly and you'll get an error message saying that "east entrance turnout" is not defined.
It's up to you to decide how you want to use user names when filling out forms, and whether you might be better off using system names.

Older warnings from this series of test versions:

The "LocoNet Hexfile" protocol name in the preferences has always been a poor name. This is changed to "LocoNet Simulator" in release 1.7.3 to better reflect it's purpose. Some documentation may still contain the old name.

On Mac OS X, JMRI 1.7.3 and later uses Java 1.4 if it's available. This may result in some small cosmetic changes, but should resolve several bugs in the user interface. Also, Mac OS X is now being distributed as a disk image (DMG) file. To install it, double click on the file to mount it, and then drag the resulting JMRI folder to the Applications folder.

For Lenz users: There are now separate choices for each of the serial-based Lenz Computer Interfaces (i.e. the LI100,LI100F,LI101F). Since release 1.7.3, to aid in backwards compatibility, all the interfaces currently have the same options as far as port speed is concerned. Eventually, the port speeds which are not supported by each interface WILL be removed. If you're using one of the interfaces listed above with this release, please check your configuration and select the correct device-specific option. There is no impact for LIUSB users with this change.

We have added additional information to the roster files in this version to help properly handle short/long addressing in systems that allow low addresses (e.g. 65) to be either short or long addresses. The only current system we support that has this capability is NCE. If you have an NCE system, and you have locomotives with addresses of 127 or less, you should open their roster entries in DecoderPro, check that the proper short or long address is selected, and save them again.

Indexed CVs will not be included in any printouts for this release.

QSI CV 56.129 Engine ID Access is not supported in this release.

While programming QSI decoders in Ops mode, it is necessary to disable CV 62 QSI Control (Verbal Acknowledgement), otherwise the writes will fail.

QSI CV 64 CV Numeric Verbal Readout currently does not work for indexed CVs.

Download links:

Please use these links for downloading, including the "?download" at the end. That adds to SourceForge's advertising statistics, which makes them happy to host our stuff.

Mac OS X:



For technical reasons, it's unlikely that there will be a MacOS 8/9 "Classic" version for this release.

Changes since test version 1.7.6:

Routes have received a number of updates.

  • They can now set Sensors, in addition to changing Turnouts.
  • A route can play a sound file or run a script file when it fires. This is started before the sensors and turnouts are set, and can therefore run in parallel.
  • A bug that effected operation when a sensor appeared more than once in the input list has been fixed. Previously, if a sensor appeared more than once as "On Active" or "On Inactive", only the first would work. Now if both are present, the route will fire when either transition takes place.
  • Input sensors can fire the route if they change ("On Change"), in addition to if they go specifically to active or inactive ("On Active", "On Inactive"). Note that only changes to active or inactive fire; changes to an unknown or inconsistent state won't fire the route until it goes back to active or inactive.
  • The control turnout can now fire the route on a change to either thrown or closed ("On Change")
  • The control turnout can now act as a veto ("Veto Thrown", "Veto Closed") much like sensors can
  • Routes now have an "enabled" parameter that controls whether they will fire.

The route table now has a "Edit" button next to each entry that takes you straight to a panel for editing the route. The route is paused when it's opened. Click "Cancel" or "Update" at the bottom of that panel when done to put the route back into operation.

Many JUnit tests added as part of refactoring the route code

The "Turnout Control" window now shows the known state of turnouts, instead of the last command sent to them. This will only be different if you're using a form of turnout feedback.

If a Turnout uses feedback, and is changed out on the layout, the "known state" and "commanded state" can end up being different: The known state will track the change on the layout, while the commanded state used to be unchanged by this. Starting in this version, we consider that remote motion to really be a command (i.e. intended instead of unintended), and therefore when the feedback says that the turnout has reached the thrown or closed position, the commanded state is updated. To make a long story short, this really shouldn't effect you unless you've got custom scripts, feedback and remote operation of turnouts. In that case, you probably know how all this works anyway!

Alfredo Sola translated more of the interface into Spanish

A tool has been added for creating Sensor Groups, a group of sensors of which at most one can be active. When a member of the group becomes active, all others are set to inactive.

Fixed bug that prevented the "level" attribute for reporter and memory icons from being reliable (thanks to Phil Klein for locating it)

Much more of the DecoderPro screens have been made "Internationalizable", so that they can be translated into other languages via the properties files

David Duchamp added an "Edit" column to the Light Table, and an "enabled" property to Lights themselves

Dennis Miller temporarily bypassed a problem with printing speed tables on Java 1.5 by removing printing of the graphical version of the table. Earlier versions of Java will still print a graphical speed table.

Added manufacturer number 34 for Aristo-Craft Trains, 35 for Electronik Model Produktion, 36 for DCCconcepts, 37 for NAC Services, 38 for Broadway Limited Imports, LLC, 39 for DCC devices, and 40 for KATO Precision Models.

Jeff Schmaltz added decoder definitions for the Massoth eMOTION XL, eMOTION XLS and LGB 55027 decoders. These are intended to work with the "Custom" programmer format.

Jeff Schmaltz added a decoder definition for the Zimo MX65 decoder. This is intended to work with the "Zimo" programmer format.

Klaus Kongsted provided a Danish translation for the interface

Jeff Schmaltz updated the Massoth LGB decoder definition

Bob Blackwell made some changes to the Digitrax "3" series decoder definitions:

  • DH163PS, DN163A2, DN163K0D, DN163I1A, DN163I1B and DN163I1C decoders added,
  • corrected maxMotorCurrent for many DN series decoders,
  • added LED, Pad and wire attributes for many DN series decoders, and
  • corrected output name for some DN series decoders

Added a new "Locations ..." item to the Help menu to make it easy to find the preferences and program directories.

Added the ability to display some information from the SDF sound program definition to the Digitrax SPF sound project file editor. Also, make it possible to display the map segment of the file.

Improved the terminology for selecting the service mode (programming track) and operations mode (main track) programmers.

Made it possible to internationalize all the text in the symbolic programmer (DecoderPro panes)

If you want to change the location of your JMRI preferences directory, define the "jmri.prefsdir" system property to point to the new directory. (Add -Djmri.prefsdir=somePathName to the startup script in use on your computer) Note that if you change this, you need to move your existing preferences and other information to the new location, or JMRI won't be able to find them.

Some threading issues in the Thread Monitor have been resolved, with fixes occasional error messages when threads are created/destroyed on busy systems (thanks to Walter Thompson for help debugging this)

David Duchamp has added the "Logix" capability, which allows you to enter powerful control logic via a window instead of writing a script

Panels can now show a "MultiSensorIcon", which allows you to e.g. show a three-position lever that tracks three physical inputs.

The help system has been overhauled, and place-holder pages are in place for most tools. We need help adding content to these!

Bill Gray and Dick Bronson corrected the ne-l icon in the USS/track/turnout/left/ne icon directory.

Dick Bronson corrected some icons in resources/icons/USS/plate/levers/, and added new l-inactive.gif, l-transparent.gif, switch-inconsistent.gif, switch-mid.gif, and switch-unknown.gif icons

David Duchamp fixed a problem were adding a Light would create a corresponding Turnout sometimes.

We're trying to consistently store the name that was entered when filling out a form, regardless of whether that's a system name or a user name. In other words, you can enter either one, and it will be stored in the configuration for later use. See the note at the top about how this works.

Bob Blackwell updated the Digitrax FX3 decoder definition: added DN163A2, DN163K0D, DN163I1A, DN163I1B, DN163I1C, DH163PS; corrected maxMotorCurrent and output name for some DN series decoders, added dimensions where available

Michael Mosher provided a new decoder definition for the Bachmann/Soundtraxx Tsunami, and updated the other Tsunami definitions

Fixed a bug that would prevent Lights defined without a value in the Sensor field from loading, truncating the file input (thanks to Jim Albanowski for the test case)

Ken Weiss pointed out that some Lenz Silver decoders have version number 75, so the decoder definition was updated to recognize those

A "None" control option was added to lights by David Duchamp

Ian Ware updated the Lenz LF101 decoder definition, and provided a new Lenz Silver Mini definition

Fix bug where the "dark" icon for a signal head rotates too far when selected in the popup menu, and the held icon doesn't rotate.

Bill Robinson updated the decoder definition for the Team Digital SMD82 to correct a problem with output address calculation

Michael Dunn provided a new decoder definition for the MRC 1645 decoder

There's now a tool available under the "Debug" menu for manually adding a message to the log file. This can be useful for e.g. making a record before or after trying something new when debugging

Daniel Boudreau modified the NCE support for new (2006 and later) NCE EPROMS so that JMRI and the NCE handhelds will properly share information on turnout positions

New demo script for automated operation from Howard Watkins

Dark (unlit) signal heads would continue to send messages to the layout when in a "flashing" state. This has been fixed.

Partial update to the internationalization (translation) of the Panel Editor

More improvements to Javadocs and unit tests...

If a LocoNet system reports that it couldn't forward a turnout command to the layout, the program now retries it

The PRICOM PocketTester data can now be easily accessed via a script.

David Falkenburg updated the NCE support so that the new NCE EPROMS work better with TCS and QSI decoders. He also improves the speed with which the program handles timeout errors for NCE command stations.

Daniel Boudreau updated the NCE "send packet" command so it could send binary commands

A large number of JMRI tool windows have been converted to JmriJFrames. This shouldn't have any large effects, but please let us know if you see any problems with sizing, closing or reopening these windows.

Daniel Boudreau added a tool to the NCE menu so users can send a macro command

Synchronization (in the Java technical sense) for Turnouts and AbstractTurnouts was improved.

TMCC (Lionel) systems seem to have a problem with dropping turnout commands. Some of the timing has been adjusted to reduce the size of this problem, but it's still present at a low level. The automatic retries (available via the Turnout Table) can be configured to handle it.

A new "Context ..." choice in the main help menu will give the user some of the context info needed for a bug report.

John Plocher wrote a new LocoIO programmer that's MUCH better than the old one, along with general support for "SV" programming. It now works for LocoIO and HDL based Loconet IO boards using the Jabour or Hans Deloof firmware.

Ross Kudlick researched an update to the Digitrax command station programmer, so it now handles option 2 properly (booster v command station mode)

The various tables now have a delete button! It's still experimental; be sure to save your work before and after using it.

The default value for the "Check buffer on sending" option for Lenz connections has changed to "yes".

John Plocher reorganized the "Tools" menu to make it more usable.

The LocoNet Monitor can now tell sensor messages from the SE8c from messages from BDL and DS54 units (courtesy Phil Klein)

Format of the info in the CMRI monitor improved

Sensors can how be set to be "inverted", in which case the ACTIVE/INACTIVE meaning of the external input is reversed.

The LocoNet monitor now properly displays transponding messages from a second RX4 on BDL168

The sample script puts out a pulse every "fast minute", for e.g. driving an external clock mechanism.