Release Notes for JMRI 1.7.4 test release

Date: July 1, 2006

From: Bob Jacobsen

Subject: Test version 1.7.4 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 contain long-awaited new features, particularly numerous decoder updates, improvements to signaling logic, tools for tracking trains around a layout via block occupancy, and new support for boards from Oak Tree Systems and the Digitrax PR2 programmer.

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 Mac OS X version's startup options have again been changed. This is intended to allow it work on Intel-based computers, and resolve compatibility problems with various Java and QuickTime versions. If you encounter problems before the splash-screen displays, please let us know!

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:

Windows: (Note the "A" at the end of the filename)


MacOS 8/9 "Classic" is not yet available.

Changes since test version 1.7.3:

Paul Bender added additional message formats to the XPressNet monitor

NCE command stations can now be accessed over the Internet via a terminal server. Select "NCE over network" in the preferences, then enter the host name and port address for the connection.

Paul Bender updated the throttle support for momentary function buttons

Peter Lloyd-Jones provided a sample script for playing a sound when a function is set on a locomotive. This works with JMRI throttles for all DCC systems, but with handheld (vendor) throttles only on Digitrax, Lenz, and TMCC.

Made the default Digitrax command station the DCS100; it had been the DB150, so users who chose the default weren't able to read on the programming track

DecoderPro would erroneously re-enable the "read" buttons when they should have been disabled due to the command station not being able to read; fixed (bug 1458996)

Bob Jacobsen provided decoder definition files for the MRC 1630 and 1631 "Brilliance" decoders (models 1630, 1631, 1632, 1633)

Improved the labelling on the DecoderPro screen where you select the decoder or roster entry

Fix a problem in LocoNet ops-mode read where certain errors would cause DecoderPro to hang

Paul Bender added a method for easily creating an NMRA consisting packet

Bob Jacobsen added support for Oak Tree Systems hardware

Paul Bender added the ability to read consists from an XPressNet command station. This currently reads consists when the program first starts. As part of this, added the "restore" method to the DccConsist class to allow updates without writing to the attached command station

A decoder definition for the ESU LokSound V3.5 decoders has been added, and the LokSound V3.0 decoder definition has been improved

Jesse Robertson pointed out on the Digitrax list that Zephyr (Digitrax DCS50) command stations could have an option switch set for "blast mode" programming of sound decoders, so Bob Jacobsen added this to the command station configuration panel for the Zephyr

The decoder definition file format (DTD) has had an attribute added to record whether a decoder uses the two NMRA packet formats or the de-facto MRC packet format for functions beyond F12

Christopher Zurek improved the LokSound V3.5 decoder definition

Paul Bender added consisting support for EasyDCC

David Duchamp added more protection against data-entry errors in the Light Table.

Paul Bender updated XPressNet (Lenz) turnout support to fix a problem with turnout outputs staying on for too long. Also, the program now resends the turnout command if the XPressNet system returns a "not-operated" message. On feedback replies for turnouts, make sure correct address is returned when neither turnout has been operated.

David Duchamp updated the C/MRI support so that it can drive turnouts through two outputs. Some layouts have Tortoise and similar switch motors wired to two C/MRI output pins. By alternating which pin is enabled, the turnout can be driven one way or the other. David also added support for configuring and printing these assignments.

Dick Bronson contributed additional PanelPro icons for 90 crossings

David Duchamp improved the formatting when printing tables

To reduce confusion, Paul Bender changed the name of one XPressNet connection choice from "Lenz LI101" to "Lenz LI101F"

Dick Bronson updated the "Simple Signal Logic" to be able to take into account more information from past a facing point turnout. He also improved the appearance of the panel

Many improvements to the support for Oak Tree Systems cards, which should now be considered production quality

Ron McKinnon fixed some problems in the lighting definitions of the SoundTraxx Tsunami Steam definitions

New sample scripts:

  • - listen to a turnout and reset it back to "closed" every time it's "thrown". This be useful e.g. to keep a turnout in one position waiting to control a route
  • - some wiring methods use two outputs acting alternately to control a turnout. This script slaves one output to be the opposite of another. Note that this is no longer needed for C/MRI systems, due to David Duchamp's updates
  • - an example of an N-way icon on a panel
  • Paul Bender added "factory reset" settings to a number of decoder definitions
  • David Duchamp added "Light" support to Digitrax connections
  • Bob Jacobsen fixed a problem with the waitSensorInactive([]) and waitSensorActive([]) functions that had been accidentally introduced in JMRI 1.7.3. Only the routines that took an array of Sensors were effected; waiting for a single Sensor is OK in 1.7.3 (bug 1486117)
  • Bob fixed a problem with the display of the "dark" and "flashing red" aspects of a signal head on a panel (bug 1474015). Also, the rotation and sizing of the flashing aspects was improved (e.g. fixed)
  • Bob added support for tracking trains as they move from block to block, including the basic Block class, the Path class to represent a path into or out of a block, the StoppingBlock class for controlling a train, and the MemoryTracker class for monitoring how it all works. More on this can be seen in the "javaone/jython" example directory.
  • Update a number of tools so they can be easily created and configured from scripts: Speedometer, scripting input and output windows, loading throttle definitions
  • The "debugging programmer" used by the LocoNet simulator mode now properly has a default mode
  • Add useful toString() methods to LocoNet and debugging throttles so that the locomotive address is displayed during status display and debugging
  • Improved error handling in the Jython scripting to remove spurious messages about "other end dead" in the output window
  • Paul Bender extended the XPressNet programmer support to better handle communication errors and unsolicited messages/responses
  • With help from Digitrax, Bob added support for the new Digitrax PR2 programmer. If you have one, select it in the preferences (be sure to specify the correct serial port), save and restart. You'll then be able to use it to program CVs. Turnouts, sensors, etc will not be available because the PR2 is a programming device, not a command station. A simple tool for downloading sound into Digitrax SoundFX decoders is also provided, but it is not complete. We hope to soon have better sound capabilities and throttle support available. As part of this, the Digitrax CV programming low-level code has been updated. Please let us know of any new problems this may have created.
  • The panel icons for Sensors, Turnouts, SignalHeads, Memories, and Reporters can now have their level set via a "level" attribute in panel XML files. This allows the user to determine which icons appear in front of others. The default values for level have not been changed.