Release Notes for JMRI 4.3.4 release
Date: March 13, 2016
From: Matthew Harris
Subject: Test version 4.3.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. We expect this series
to end in the next JMRI production release around the middle of 2016.
(See the tentative release schedule)
Some of the changes involved are quite extensive.
They may require a certain amount of experience before they are working well.
Therefore, this test version should be considered experimental.
JMRI is now only available under the
GNU General Public License. For more information, please
copyright and licensing page.
Known problems with this release
If a DCC++ system connection is configured, but not connected to the computer where expected by JMRI, the JMRI application
can hang at application startup. This is fixed in JMRI 4.3.5.
New warnings for this version:
See the JMRI 4.2 release note
for warnings predating the 4.3 development series.
These may be relevant to you if you're updating from an earlier version.
You can now set the order of your startup items: If you're opening panel files, running scripts, etc as
the program starts up, there's a preferences pane that lets you easily set the order in which those happen.
If you've set the order manually (e.g. by editing configuration files) in the past, please check this
preference to make sure it's set the way you want.
The DispatcherPro, JMRI Demo, and SignalPro applications are no longer shipped in distributions. Use PanelPro
in lieu of these applications.
The internals of the Layout Editor have been reworked a bit. Please keep an
eye out for any changed behaviors.
The code for handling Panel Editor / Control Panel Editor icons has changed
to better deal with rotating icons. This has changed how opaque vs transparent
icon backgrounds are handled. Please check your panels to make sure we
haven't inadvertently caused a problem, particularly if you've got rotated
icons and/or use have custom icons with transparent backgrounds. If there
are any problems, please send in a copy of your panel file so we can
recreate the problem and fix it.
The configuration is now stored in multiple files within a directory named
inside a Configuration Profile instead of within the file
PanelPro and DecoderPro both should migrate from the old configuration to the new configuration seamlessly.
See JMRI Issue #69 for more details.
Please report any issues at our GitHub project.
The XML schema
for decoder files has been made more precise.
This shouldn't effect people who just use the JMRI decoder definitions as distributed,
because they all work with this more precise version. But if you have decoder
definitions of your own, you may have to update them.
Specifically, the decoder file verification will now reject a few things that it didn't catch before, even though they didn't really work:
- There can be only one label element for a given language on a given variable.
- A variable element has to contain just one type element such as decVal, enumVal, etc.
As a side effect of checking this, the qualifier elements inside a variable now have to
be at the front of the contents, and the label, comment and tooltip elements have to be
at the back. You can't just sprinkle them around and hope the code finds them
(because sometimes in the past the program would miss one; now we require an order we're
sure the code will understand).
Mac OS X 10.11 El Capitan requires signed drivers for USB adapters. If you've upgraded
from an earlier version, your drivers may not work. That will cause JMRI to throw errors
when it doesn't find communications links. To fix this, go to the website for your
adapter manufacturer, find the drivers that are listed to work with Mac OS X 10.9 or later,
download, and install, then retry JMRI again.
Jython has been upgraded to version 2.7.0 with the following potentially breaking changes:
- The decodeJmriFilename() function is no longer available by default. Use the FileUtil.getExternalFilename() method instead.
- The simple propertyListener object is no longer available by default. Create your own, following the examples provided in the jython folder in the JMRI distribution.
- jmri_defaults.py included in the JMRI distribution is no longer executed by default, but will be executed before any other Jython scripts if included in your User Files location.
- The default behavior of python.cachedir.skip is now true. If using a custom python.properties file, include "python.cachedir.skip=false" in that file.
- Certain Python scripts are too large to be evaluated in Jython. If a script fails with the
java.io.IOException: Mark invalid error, set "jython.exec=true" in a custom python.properties file or rewrite the script to be less than 100,000 characters per file. Note that when using "jython.exec=true" it may be desirable to run the included script jmri_bindings.py as a startup action to emulate the evaluation environment used when jython.exec=false.
Decoder definitions that use the "ivariable" form are now deprecated. Definitions
included with this release have been converted to the new form.
If you have decoder definitions with the older "ivariable" form, they will no longer
validate, but can still be used for the first couple of test releases in this series.
Please ask on the JMRI Users group
for help converting them, or just drop them and use the current definitions.
The OpenLCB 0.6.4 library in this version has a bug in its alias
calculations which prevents JMRI from communicating occasionally.
A patch has been submitted to the OpenLCB group, but as they seem no longer interested in maintaining that code, it's not known when this will be fixed.
In the meantime, the workaround is to restart JMRI and/or the hardware node(s)
and try again; that might allocate different alias values.
Please use these links for downloading:
Mac OS X: https://sourceforge.net/projects/jmri/files/test%20files/JMRI.4.3.4-Reb510be.dmg/download
The list of included commits
is available from our
GitHub code repository
- The Digitrax DB150 Empire Builder command station uses a single output for powering
both the main track and the programming track. JMRI is supposed to turn track power back
on after doing a programming track (Service Mode) CV write, but it was also
erroneously turning track power on after going an Ops Mode CV write. This is now
fixed: Power on (GPON message sent) only happens after a service mode CV write. Note
that JMRI does not turn track power on after a CV write that ends it in an error;
this is the same behavior as before.
- Fixed a problem preventing the combination of an NCE-USB adapter with the PowerPro, SB3 or SB5 Smartbooster
from doing ops-mode (on main) programming.
- Fixed a problem preventing MERG Concentrator serial connections from being used.
- Throttle support now uses Z21/z21 specific XPressNet messages and replies.
- Turnout support now uses Z21/z21 specific XPressNet messages and replies.
- JMRI's SRCP server implementation now supports throttles
- Paged access to TCS decoders could sometimes overrun the power-on/power-off cycle. Fixed.
New / Updated decoder definitions
- Dick Bronson updated the Watchman and Towerman definitions
- Michael Mosher updated the TCS WOW Diesel decoder definition
- Alain Le Marchand added the Viessmann 5240, 5241, 5244, 5245 decoder definitions
- Mark Waters provided updated definitions and a Sound Sample selection pane for
the MX640, MX644, MX645, MX646, MX648, MX648+, MX658, MX695, MX696 and MX697V decoders.
- Knut Schwichtenberg provided a definition for the FREDi SV programming
- New feature for the Train row color, you can now by train
define a train reset row color. See "Train Row Color" under "Tools"
in the "Trains" window.
- Hold cars are no longer listed for staging tracks in the
- Improvements to the import and export cars feature. You can
now import a car's load, move count, and if the car is a caboose,
passenger, has FRED, or utility car. You can now export only the
cars shown in the "Cars" window. Note that you can access the
"Cars" window from a location or track and only cars at that
location or track are shown. Useful when exchanging cars between
- Improvements to the "Switch Lists by Location" window. Now
changes to locations with "similar names" appear correctly in the
- The "Trains" window now scrolls automatically when building
- Fixed a bug where a train manifest didn't show all of the
work at a location with several "similar names" and the sort by
track option was selected.
- The program now disallows special control characters when
entering location names, road and road numbers. These names are
used to create file names and file names can't have embedded
- The "Roster" frame, which is also the main DecoderPro window, now
disables (grays out) the "Identify" button if there's no service mode (programming track)
available. Identify reads the programming track to pick the current locomotive decoder out of
the Roster, so it can't function when there's no connection to the programming track available.
You can still select the locomotive manually, e.g. for local editing of the information or for
ops mode (on main) programming.
- Easy access to control the automatic launch of the WiThrottle server has been incorporated
in the WiThrottle preferences page.
- It is possible for a single profile stored on a shared location to maintain individual per-computer
settings for each connection. This feature is expermintal and may not work for all connection types. Please
report issues with this at our GitHub issue list. (Randall Wood)
- Fixed a problem reloading some Logix that reference the same input (Sensor, Turnout) multiple times in a single Conditional
- Steve Rawlinson added keyboard shortcuts to the Layout Editor
- Fixed a problem where some complex Layout Editor panels don't load fully, resulting in the signals not updating properly.
- Steve Rawlinson added an AutoLayoutPowerOff.py example script
which automatically powers off a layout
when no activity has been detected for a period of time.
- Steve Toddy added an SetAllUnknownSensorsToInactive.py example script
which does what it's name says: Any JMRI Sensor that's showing "UNKNOWN" state will be set to "INACTIVE" state.
This is particularly use when using a simulated connection, as it makes it look like there's a layout connected.
- Sonny Hansen further improved the Danish translation
- Egbert Broerse expanded the JMRI Glossary, made it sortable and added columns with keywords from some of our Help translations. Suggestions for additional definitions are welcome.
- Egbert Broerse further improved the German translation and fixed some issues with the French translation
- Egbert Broerse further improved the WiThrottle documentation and translations
- Kai Vehmersalo wrote an illustrated Ubuntu install instruction
- Deprecated Findbugs annotations used in source code maintenance were updated to use replacement versions