Release Notes for JMRI 4.2 release
Date: December 25, 2015
From: Matthew Harris
Subject: Production version 4.2 of JMRI/DecoderPro is available for download.
We are very pleased to announce that the 4.1 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 4.2" available for download today.
Notes:
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
Known problems with this release
MacOS X cannot show most connections correctly with this JMRI version.
This is fixed in JMRI 4.2.1, which you should use instead of this release.
As a workaround, this can be fixed by running the command
sudo find / -name StartJMRI -type f -exec sed -i "" -e 's/\/dev\/tty\\\.\*//' -e 's/\/dev\/cu\\\.\*//' {} \;
in Terminal.app. It will ask for your password, and, after a couple of minutes, have fixed the issue.
The Digitrax PR2 does not work with this release. If you need to work with a
PR2, please stay with JMRI 4.1.3 or earlier,
or use the JMRI 4.3.1 test release..
Some BLI decoder definitions (PR2, PR3 and similar) may not be available until you
select the "Rebuild Decoder Index" item from the menu. It's on the Debug menu in PanelPro,
and the Actions menu in DecoderPro.
Operations can lockup during a train build if you've selected "Auto HPT" for loco assignment,
and no cars were assigned to the train during the build, and the loco weight is set to zero. The
workaround is to enter a weight in tons for each loco. Fixed in test release 4.3.2.
This release can alter the order of startup items when saving preferences. Order can be restorted by editing the file
profile/profile.xml within the affected configuration profile. This problem is fixed in test release 4.3.2.
Warnings:
See the
JMRI 4.0.1 release note
for older warnings that may be relevant to you if you're updating from an earlier version.
We are now building releases, including this one, from our
GitHub repository.
For more information on this, please see our
documentation page.
The configuration is now stored in multiple files within a directory named profile
inside a Configuration Profile instead of within the file ProfileConfig.xml
.
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. Ask for help on
the JMRI Users group if you have trouble.
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).
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.
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.
RFID readers using the Olimex protocol were incorrectly decoding tag values - this has
now been fixed. If you were using Olimex RFID readers with earlier versions, your existing
ID Tag database will contain invalid tags. New ID Tag entries will be generated for each
correctly read tag - this will require that any additional information be re-entered and,
optionally, old invalid entries manually deleted.
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 scipts 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.
Download links:
Please use these links for downloading:
Changes since production release 4.0:
Hardware Support
Improved error handling during start-up when something Really Unexpected
happens, such as configuring to connect to a port that doesn't even exist.
C/MRI
DCC++
- NOTE: DCC++ Support is broken in JMRI 4.2. Sorry! If you need DCC++ support, please revert to 4.1.5 or wait for 4.3.1
JMRI Simple Server/JMRI Client
- Fixed bugs in both the JMRI Simple Server and JMRI Client
that prevented reporter information from being passed from
the server to the client.
- Fixed bugs in both the JMRI Simple Server and the JMRI
Client that caused the server crash when a lower case
letter was used in the transmitted prefix.
- Make client attempt to reconnect if the connection is
closed unexpectedly.
LocoNet
- JMRI can now directly program LocoNet devices that use the
"System Variable" (SV) protocol version 2. Select
"System Variable Type 2"
as a
Single CV Programmer
mode to use this, and see
this page
for more details.
- More work on the LN SV2 programming protocol.
Please see the
documentation page.
It's basically ready for people to
start defining board definition files.
A basic definition is available
under "Public Domain and DIY" decoders, then
"LNSV2-using boards".
- LocoNet Monitor now decodes LN SV2 programming protocol messages.
- A programmer mode for the original LocoIO boards,
which use the LN SV1 programming protocol,
is also available.
A basic DecoderPro decoder definition is available
under "Public Domain and DIY" decoders, then
"Hans De Loof LocoIO".
- You can now configure a connection to a
Bluetooth LocoBridge adapter
in the Digitrax connection preferences.
NCE
- Configure USB Tool - Removed attempted reading of the current USB cab id.
It was not working for all cases and prevented reseting the cab id
when the USB had an invalid (for the system currently connected) cab id.
- Dave Heap added display of USB & Serial computer cab context pages
to the NCE Cabs Monitor.
OpenLCB
- The OpenLCB library advanced to version 0.6.4, which (among other things)
fixed a problem when trying to read broken configuration definition info
from a node.
Note that this is probably the last version of this library, as
prototype work is no longer a part of the OpenLCB group effort.
It's not yet clear whether a new group will emerge to maintain
this code. If you're interested in helping, please contact
the JMRI or OpenLCB developers.
- The basic work to allow programming of OpenLCB Nodes via the
DecoderPro infrastructure is in place. Later updates will
connect this to DecoderPro itself.
- A basic
bootloader
is available for attached OpenLCB nodes.
This lets you install new firmware in a compatible node from
a local .hex file (provided by the node manufacturer). Nobody
has announced nodes that use this feature, but hopefully since we
built it they will come.
Note: For safe and reliable operation, this relies on items
that were removed from the OpenLCB specification in February 2015.
For more information, see the
package documentation.
- The OpenLCB support library has been updated to version 0.6.5
RFID
- Network connections to RFID readers are now possible. Each connection
configured into JMRI can talk to a single RFID reader, or to multiple ones
through a MERG-style concentrator or equivalent. JMRI can have
as many RFID readers connected via network connections as desired.
- Oscar A. Pruitt provided the implementation to support RFID readers using
the EM-18 protocol
- A bug that caused connections using the MERG Concentrator to not work has
been fixed. (Matt Harris)
- A bug that meant RFID tags were misread when using Olimex RFID readers has
been fixed. This will mean that details of any existing tags read using an
Olimex reader are now invalid and will need to be re-identified and updated
in the ID Tag list. (Matt Harris)
- Minor corrections were made in the Core-ID, EM18 and SeeedStudio RFID reader
interfaces to correctly reject any tag reads with invalid checksums - this
was not always happening resulting in the potential of incorrect tag reads
being accepted. (Matt Harris)
- Added test cases for all implemented RFID protocols. (Matt Harris)
SPROG
- Dave Heap made the following changes:
- Modified the SPROG Command Station code to work around issues
with some non NMRA-compliant decoders.
- The SPROG Programmer now correctly reports an overload on the
Programming Track.
Signals
Signal Mast Editor
- Ken Cameron fixed editing of signal head masts to also support old format
panel files.
- Dick Bronson updated the NS 2008 definition
New / Updated decoder definitions
The XML schema
for decoder files has been made more precise. See the
warning above
for more on the implications of this.
- Dave Heap made the following changes to Factory Resets:
- A preferred programming mode for the reset can be specified and will
be used if available.
- Programming on Main mode for the reset will now be available if explicitly
specified for a decoder.
- These features are made available by specifying <mode> elements for
<resets>, <factReset> or <ifactReset>.
BLI
- Michael Mosher updated the BLI Paragon 3 and 2 decoders
Digitrax
- John McMasters updated the Digitrax Extended Series 6 v3.5
Doehler & Haas
ESU
Dave Heap made the following changes:
- Added the "Random Single Strobe" effect to Function Outputs.
- Added the LokSound Select OEM.
- Fixed the sense of the Adaptive Regulation Frequency bit.
- Preliminary support for ESU LokSound Select L.
- Corrected some maximum values and bitmasks on the
Function Outputs pane.
- Various updates and corrections, including new Product IDs for correct decoder identification.
MERG
- The MERG ACC5 definition has been converted to the
modern format of internal variables from the older
"ivariable" form.
MGP
- Anders Bostrom provided definitions for the MGP
LocoBridge,
Servo5, Panel and Signal 10 decoders. These use the LocoNet
VS2 protocol to configure the units over a LocoNet, not
over a programming track.
MTH
- Michael Mosher provided patch: 1069
NCE
- Dave Heap corrected the range of CVs 3 & 4 for some decoders.
QSI
- Some QSI decoder definitions have been converted to the
modern format of their internal variables from the older
"ivariable" form. The rest will be done early in the JMRI 4.3 release series.
- A problem with the "Max Bell" and "Bell Select"
variables in several QSI definitions was fixed.
- Dave Heap made the following changes:
- Added a definition for the Eureka 50 Class.
- Improved the definition for the Eureka R Class.
- Added the ability to import CV values from Quantum CV Manager
(.qcv) files.
- Factory Reset uses Paged Mode (more reliable with some command stations,
such as NCE Power Pro).
- Factory Reset can be done with Programming on Main.
- Corrected the range of CVs 3 & 4 for some decoders.
RR-CirKits
- The LNCP Basic definition has been converted to the
modern format of internal variables from the older
"ivariable" form.
- Dick Bronson provided a definition for the RR-CirKits SwitchMan
- The MotorMan decoder definition was updated.
SoundTraxx
- Michael Mosher added the Econami range.
- Dave Heap clarified the interaction between the Extended
and Legacy Function Map panes in the Econami range.
- Updated the Econami Steam to use a separate SoundPane to warn about
the issue with the chuff and 'original' Econami decoders.
The value range now supports 0-255, but 'original' Econami decoders
will go silent if value is >127.
Soundtraxx will reprogram the decoder to allow the new range.
- Michael Mosher updated the Soundtraxx MC decoders
- Michael Mosher updated the Genesis caboose lighting decoder
- Dave Heap corrected the range of CVs 3 & 4 for some decoders.
TCS
- The "Global lighting option 1" on many TCS decoders has been fixed.
- Michael Mosher provided patch: 1070 to update WOW diesel sound set 2
- Peter Ulvestad corrected the tooltips in some of the TCS decoder definitions
- Michael Mosher removed the non-existance CV139 from the non-sound TCS decoders
Operations
- Improved train build report to first show which tracks in staging can service the train
being built.
- Made some improvements to the spur window to show the current schedule status.
- You can now copy a schedule, see under tools in the edit schedule window, or schedules
window.
- The "Show Schedules by Car Type and Load" window now has the option
to show all loads.
- You can now open all edit location windows at the same time. Previously you could only
open two edit location windows at once.
- CSV switch lists now include hold cars.
- CSV manifests how include hold cars for tracks that are only served
by the train being built.
- New "Yardmaster by Track" window can be found under "Tools" in the
"Yardmaster" window. This window shows the work for a location listed by tracks.
It also shows the hold cars for each track.
- Improved the train build when using aggressive mode and small move counts in a train's
route. Now there's a slight bias to pick up an extra car during the first
couple of passes.
- Improved the "Change Train Departure Times" tool to also adjust departure times in a
train's route.
- The "Edit Car" window now shows the blocking order for kernels.
- Changed how the program deals with alternate tracks and cars with custom loads.
Previously if the program found an alternate track assigned to a spur, and all spurs
were full, it would hold the car at its current location until one of the spurs had
space for the car. Now there's a new option for a spur that is part of the load option
window for a spur. A checkbox labeled "Hold cars with custom loads when spurs are full"
now performs the same function as the alternate track did with regards to holding cars.
For more information, see the help and "Load Options" for a spur.
- Make some improvement to the train build report. Now when selecting detailed or very
detailed "Router Detail Level", the program will show which spur / schedules are
ignored when generating custom loads out of staging.
- Made some improvement to the train "Show Car Types Serviced" with regards to showing
better messages when selecting a car and there are track destination restrictions for
that car's track.
- Made some improvements to the help with regards to schedules.
- Fixed a bug where the train build reports were placed in a directory called
"operationsbuildstatus". This problem was introduced in version 4.1.1.
You can delete this directory if you've used any of the test versions.
OBlocks
- Add feature for Tracker to follow trains into and through dark OBlocks.
- Allow international locales to correctly specify lengths in
OBlock tables. (Matt Harris)
Preferences
- Some preferences are now stored in properties files in the
preferences
directory within the current profile. The file preferences.properties
contains settings that a common to all computers using that profile,
while the file (or files) named in the pattern
jmri-<MAC address>-<profile-hash>.properties
contain per-computer settings.
- Web Server and JSON Server preferences are now stored in the above format.
Although the pre-JMRI 4.1 settings files for these servers are not removed,
changes to these services' settings made in JMRI 4.1 will not be available
to earlier versions of JMRI. These services' settings will only be migrated
to the new format by clicking Save in the Preferences window.
- mDNS / Bonjour / ZeroConf network services advertisements can be
blocked on IPv4 or IPv6 addresses by editing the the per-computer
preferences file to include either or both of the following lines:
jmri-util-zeroconf.IPv4=false
jmri-util-zeroconf.IPv6=false
Valid values for these settings are true
or false
.
Note that this is an experimental feature.
- Copying a Configuration Profile no longer throws an error. (Randall Wood)
Logix
- Enhancement Request #574 implemented. Can use fractions of seconds for timing.
- Add feature to set sensor/turnout delay times indirectly from memory.
Roster
- Clarify if an entry will be deleted from the Roster or from a group in the context menu. (Randall Wood)
- Allow a multiple selection of entries in the Roster or a group to be deleted. (Randall Wood)
Roster Speed Profile
Improvements made to the UI.
- The starting and ending speed steps can be set for measuring a profile. Also the
increment for each profile step may be set
- The speed profile will interpolate or extrapolate for omitted speed steps
-
- The speed profile can be viewed in a table
- There is an option to merge or replace the speed profile
Panel Editors
- Fix backgrounds of text to stay transparent when rotated.
- Fix false resizing of IndicatorTrackIcons
- Fix spurious window names appearing under "Windows" menu
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.
The cause of these effects was the necessity to remove many setOpaque(true) calls
to Positionable objects. The reason is that when rotated with a color background
the object cannot be setOpaque(true). If opaque, color background will be the entire
bounding box, not a shape corresponding to the original item.
To display a rotated Positionable, the background, margins and border, if any,
are drawn with rotated and filled rectangles to simulate what is normally the
unrotated bounding rectangle and border.
The affected objects are PositionableLabels, SensorIcons (especially when
represented with text rather than icons) and MemoryIcons.
MemoryInputIcons, MemoryComboIcons and MemorySpinnerIcons are also affected,
due to the background, margin and border code they share with
PositionableLabel decendants.
(They can't be rotated due to having widgets that won't rotate)
Scripting
- Support for running ECMAScript and JavaScript from external files has been added
in all cases except within Jynstruments.
- Jython has been upgraded to version 2.7.0.
- Any Java-compatible ScriptEngine can be included by including the ScriptEngine JA
file in the JMRI Classpath.
- 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 scipts 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.
- The "MakeOriginalDecoderPro.py" script has been corrected to work with the updated
scripting support introduced in JMRI 4.1.2.
- The "AutoDispatcher2.py" script has been corrected to work with
the updated scripting support when the "jython.exec=true" setting
is set within the "python.properties" 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 to emulate the evaluation environment used when
jython.exec=false. (Randall Wood)
- The user-defined scripts folder and the jython folder in the
JMRI installation are automatically appended to the python.path so
Jython scripts can directly import other jython scripts in those
locations. (Randall Wood)
- Support for AppleScript has been added. On platforms other than OS X, this may send
the message
ScriptEngineManager providers.next(): javax.script.ScriptEngineFactory: Provider apple.applescript.AppleScriptEngineFactory not found
to the console, but this message can be safely ignored. (Randall Wood)
- The jmri_bindings.py file is now available in the jython directory.
Miscellaneous
- Improved the script editor (Panels -> Script Entry):
- Now remembers the selected directory from operation to operation,
so you don't have to renavigate each time.
- Use the same file selector for Load and Store, so it's
easy to work in one directory.
- Use a proper Store dialog so you can e.g. change the
filename.
- Include a python.properties for configuring the Jython environment.
- Improve
instructions
for making a local copy of the JMRI website
and providing a local XML catalog.
- Sonny Hansen has greatly improved the Danish translation.
- The Multiple Decoder Programming tool is back to being available
in the DecoderPro tools menu. Also, you can add it as a button or
startup item in PanelPro and DecoderPro.
- The Danish translations has been made more general. It was coded as
_da_DK, which is "Danish (Denmark)". That's been changed to _da, which
is generic "Danish", no matter where spoken. If you have local translation
files for Danish, this might conflict. Contact the JMRI list for help
with this. Contributed translations are always welcome!
- The "Check XML File" option under the PanelPro Debug menu didn't need
to be a separate item, as it was already included in "Validate XML File".
It's been removed, please select the "Validate XML File" from now on.
- You can now add "Validate XML File" as a custom button via the Start Up pane
in the Preferences.
- A bug that caused panels not to be stored when empty AudioBuffers had been created
via a script has been fixed. (Matthew Harris)
- Paul Bender updated the consist tool to sort the consist list numerically.
- Paul Bender added restore button to the consist tool that requests the
command station re-create the consist.
- The configuration is now stored in multiple files within a directory named
profile
inside a Configuration Profile instead of within the file
ProfileConfig.xml
. PanelPro and DecoderPro both should migrate from
the old configuration to the new configuration seamlessly.
See Issue #69
for more details.
- Improvements to the way TCP based network connections detect a disconnected server.
- Update of the OperationsPro online Manual up to 3.11 and general readability (Egbert Broerse).
- A script to disable or enable IPv4 and IPv6 support in zero configuration networking, named
zeroconf-preferences.js
, can be downloaded from GitHub. This may help some users having issues with the iPhone WiThrottle app. (Randall Wood)