Release Notes for JMRI 5.6 release
Date: December 14, 2023
From: Bob Jacobsen
Subject: Production Release 5.6 of JMRI/DecoderPro is available for download.
We are very pleased to announce that the 5.5 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 Release 5.6" 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.
This release requires Java 11 to work.
(See our page on downloading and installing Java 11)
Update From Older JMRI Versions
If you are currently using a version older than JMRI 5.0, please follow these instructions carefully:
- Is your current version older than JMRI 4.12?
If so, then update to JMRI 4.12 first, and ensure everything works correctly: check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Store your configuration and panel files under a new name and use those from now on.
Then continue with step 2.
If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this),
then it's very important
that you update to JMRI 4.12 and
carrying out the migration process described in the JMRI 4.12 release note
before updating to any later release.
- Is your current version older than JMRI 4.20?
Then update to JMRI 4.20 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Save your preferences again.
Store your configuration and panel files under a new name, use those from now on, and go on to step 3.
- Is your current version older than JMRI 4.24?
Then update to JMRI 4.24 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Save your preferences again.
Store your configuration and panel files under a new name and use those from now on.
- Is your current version older than JMRI 5.0?
Then update to JMRI 5.0 first, and ensure that works correctly (check
start-up, check things you need to be working, and check the JMRI log as well) before doing anything else.
Save your preferences again.
Store your configuration and panel files under a new name and use those from now on.
- You can then install this release.
Following this multi-step order of updating via stable major releases safeguards you against possible migration issues
that can arise from skipping these versions.
New problems with this release
- LogixNG Timers configured to fire when JMRI starts do not work properly in this release.
It will be fixed in 5.9.5 and 5.10.
New warnings for this production release:
See the
JMRI 5.4 release note for more warnings predating the 5.5 development series,
including pointers to various migration issues.
These may be relevant to you if you're updating from an earlier version;
we strongly recommend you update to
JMRI 5.0
before installing this release, see above.
- This release, and all previous ones, have an incompatibility between
MacOS 13.6 or later and the SPROG support. The fix for this will be
in
JMRI 5.7.1.
when it's available.
Note that this issue only impacts the
combination of SPROG and certain MacOS versions. If you're not using a Mac or
not using an SPROG, this will not effect you.
- Since JMRI 5.3.7
The definition of "Last Seen" for Id Tags has been
clarified to mean "Location where the tag was last seen to be present".
Previously, a report that a tag was absent could be remembered as the
last seen report. The relevant code changes are specific to LocoNet
Reporters. This might affect your scripts and LogixNG if you were assuming
the prior behavior.
- Since JMRI 5.3.7
Some Reporters, particularly LocoNet, would improperly clear an "enter" report
when an "exits" report for the same tag was seen elsewhere. This was an
error that has been fixed, but if you have scripts or LogixNG that depend on
this behavior you might have to update them.
- Since JMRI 5.5.3
LocoNet Server and LocoNet Client have been removed.
If you are using these, you need to change the connection to
LocoNet over TCP instead.
- Since JMRI 5.5.3
Scripts that output Logging statements with log4jv1.x ( org.apache.log4j ) imports need to be updated to use SLF4J logging.
See here for some examples on how to do this.
- Since JMRI 5.5.4
Custom default.lcf Logging Control Files no longer work with this version.
To create a custom default_lcf.xml in the new Logging Configuration format, see
JMRI Debugging and Logging
- Since JMRI 5.5.5
The format of XML files with table contents and panels have been changed. It's therefore not
possible to load an xml file with tables and panels that has been created with JMRI 5.5.5 or
later into a JMRI version before JMRI 5.5.5.
- Since JMRI 5.5.5
MQTT Connection - Throttle loco address and function placeholders in MQTT topics have changed from
$address and $function to {0} and {1} for consistency with other objects.
Download links:
These files are located in the
JMRI 5.6 GitHub release.
This production version is made from test releases 5.5.1 through 5.5.8 The
full list of changes
in those is
available from our code repository.
Hardware Support
- Eckart Meyer has provided a first implementation
for the
BiDiB
system connection.
C/MRI
- Provided an extra copy of the output data when preparing
C/MRI output data for a "T" ("Transmit") message type. This
prevents a "data buffer overrun" in a pre-configured buffer
when the output data changes when the process assemble the data.
(The previous implementation could run out of available bytes
in the buffer, and the data would not be sent.)
- Fix the Update button on the sensor table
for C/MRI sensors.
DCC++ and DCC-EX
- Call "Roster Export to DCC-EX" from DCC++ menu
- Traffic Monitor - Added option to suppress the parsed text
- New Virtual LCD window
LocoNet
- Shutdown LocoNetOverTcp connection cleanly when program ends
- LocoNet Server and LocoNet Client have been removed.
If you are using these, you need to change the connection to
LocoNet over TCP instead.
- Added a DecoderPro definition for the DS78V. This required
code changes, so this definition will not work with earlier
versions of JMRI.
- The jython/loconet/LnEditEvolutionRoutesAndOpSw.py script has been updated
to version 2.0.
This script allows you to configure the OpSw and routes in the new Digitrax
Series 7 boards.
- The jython/loconet/PGM_DS74_GEN.py can be used to program DS74 boards
from a configuration held in a text file.
- Fix NPE, and decode Extended Accessory Signal Aspect IMM commands
- Fix LnSendTool.py to correctly send signal aspects up to 255 NMRA 2.4.3
- Added LocoNet Monitor support for PM74.
- Improved the internal queuing mechanism for transmitted messages.
This will prevent messages being delayed occasionally.
MQTT
- Improve threading on MQTT Reporters to reduce latency.
- Added support for Track Power control
- Added support for throttle control - speed, direction, and functions
- Added support for Command Station consists
- Fixed bug that stopped retained MQTT messages from being received on start up.
- Clear Last Will and Testament on startup
- Fixed issue with invalid throttle speed message causing MQTT to disconnect
- Improved robustness of MQTT Event Listener exception handling
- Fixed issue with MQTT LWT messages
- Changed throttle loco address placeholder in MQTT topics to {0} for consistency with other objects
- Changed throttle function placeholder in MQTT topics to {1} for consistency with other objects
- Fixed an issue in introduced in 5.5.5 where the incorrect default topics were used for Direction and Function. The documenation was correct but the code wasn't.
- JMRI will now use the railroad name from the preferences
when creating the client ID. This will make it easier to
identify the JMRI connection in the MQTT broker logs.
- Add upload and download of the CS-105 consisting information
to and from the DecoderPro roster entry's consisting bits.
- Added two new jython/LCC/CSVToNodeBackup.py and
jython/LCC/NodeBackupToCSV.py scripts for converting
node backup files back and forth to CSV files.
- OpenLCB library updated through
PR 231.
- Added a contextual menu (right click, ctrl click) to tabs in the CDI display that
contains "Copy" and "Paste" options.
Copy and paste works both within one window and across windows.
You can only paste into a tab of the same type from which you copied.
The data stored in the clipboard is in the format of the usual backup files.
- Added a Send PIP Inquiry button to the Send tool
- The presentation of the "Send Frame" tool was improved.
- Fixed some subtle bugs when pasting CDI panes.
- Improved how
tab numbering is done
when creating a CDI display.
- Added the invert option to OpenLCB/LCC Turnouts.
- Added the ability to send Identified message as Valid/Invalid/Unknown
to the Send Message tool.
- Fixed a bug that could cause an exception when closing a configuration window.
- Better aligned the Event IDs displayed in the monitor window.
- Updates to most recent OpenLCB Java library, which includes
- Better status logging of save and restore operations
- Allows user to change the default backup filename using
a script like
jython/LCC/ChangeDefaultBackupFileName.py
- Fixes a problem that could cause the configuration dialog
to not open for certain nodes, including the DCC-LCC Gateway.
- Fixes the display of the "Simple Protocol" availability bit
- Added Window and Help menus to the Configure Node window.
- The Configure Nodes window will now remember your selected sort order
from one run to the next.
- Added Window and Help menus to the Configure Node window.
- Added support for multiple OpenLCB connections in Signal Masts add/edit dialog.
- Added GUI Icons for OpenLCB signal masts in the add/edit dialog.
- Fixed a bug where doing Quit while a CDI window is open with changes
didn't properly handle user response to the Cancel/Quit dialog box.
- Update openlcb.jar to Maven Central version 0.7.33
- Improve the layout of the firmware download page.
-
Added SPROG DCC Ltd PI-LCC Raspberry Pi CAN adapter
-
Added SPROG DCC Ltd USB-LCC CAN adapter
- Fix a problem that would sometimes leave the node list improperly sorted
- Reduced the start up delay when opening the OpenLCB hub.
- Changed the formatting of the CSV file written by the Event Table so that
multiple paths are broken out into multiple columns
Raspberry Pi GPIO pins
- Added support for Turnouts in the RPi simulator.
Roco z21/Z21
- JMRI will now leave the layout power unchanged when it terminates.
Previously, it would turn the power on if it was off.
- Removed a spurious error message from the Z21 Simulator connection.
RFID
- New Getting Started document
- Script to update Car/Locomotive Tables when new/changed RFID tag seen
SPROG
-
Track power ON at startup option would turn on track power but not send packets,
requiring track power to be cycled. Fixed.
-
Added PI-LCC Raspberry Pi CAN adapter for OpenLCB
-
Added USB-LCC CAN adapter for OpenLCB
TAMS
- New decoder definition for the LD-G-9 decoder.
New / Updated decoder definitions
BLI
- Fix a problem where the Paragon 2's horn selection wasn't showing.
Digitrax
- Updated the Series 7 SFX decoder definition.
Doehler & Haas
- added PD06A, PD18A, PD18MU and PD21A and 2nd generation-decoder of DH-series
- disable unimplemented CV by PD-series
- new definition-files for FW 1.13 for SD*-, FW 1.15 for SH*-, FW 3.13 for DH*-decoder
ESU
- The LokPilot Basic 1.0 decoder definition is now product-ID specific.
- Added "LokSound 5 micro DCC Direct Atlas Legacy".
- Added support for "Tone Control" for LokSound 5 (requires firmware 5.9.159 or higher).
LEB
Piko
- Add CVs for Extended Function Mapping Shift Bank 1 & 2
- Add Decoders for Piko BR 93 TT XP 5.1 Sound, Piko BR 55 TT XP 5.1 Sound, Piko Smart Decoder XP 5.1 Sound Blank
- Support of Decoder XP5.1 FW 1.1 to FW 1.9 and Update Decoder Definitions, Changing pane layout
Public Domain and DIY decoders
- Updated to support FREDi v2.2
- FREDi - Cleanup; Removed obsolete (leftover) settings from one of the sub-files
QSI
- Added function labels for Ver 6 Steam and Diesel definitions
SoundTraxx
- TSU2/BLU/ECO ID update with some model additions
- Added a definition for the Blunami PNP8.
TCS
- FW89 add V2 add highVersionID
Technologistic (train-O-matic)
- Support for the latest v6 firmware version of the Lokommander II decoders.
- productID support for all train-O-matic decoders, allows for automatic decoder detection.
- Support for the FD Micro function decoder family.
Uhlenbrock
- Some translations to German and pane design changes
DecoderPro
- Added ability to identify Dietz decoder models with CV128
- Moved an excessive warning message to being a debug message
- Now looks for .txt extension on files being
imported from the LokProgrammer.
- DecoderPro can now identify products in the HN7000 decoder family.
- Fixed a bug that prevented output labels from
properly showing up in some decoder definitions.
Dispatcher
- In auto trains, after stopping, or going to manual, resume correctly even if in a section with no signal.
- Check each section against reserved sections for conflicting blocks.
- Do not turn off block alternate colour when it has already be reallocated.
- Add TransitAction TERMINATE
- Add TransitAction LOADTRAININFO
- Process Delays for Active/InActive sensor actions
- Process delays for OnTrainStop
- Remove delays for Exit Section as they cannot be processed
Layout Editor
- A number of issues with the Shape tool have been resolved including Java
exceptions and the possibility of truncated shape lines.
- The Layout Editor help page has been updated with details for using Shapes.
- Previously, Reporter icons would display
"<no report>" when the report information was null, i.e. there was no
information available from the Reporter. This has been changed
to a hyphen ("-") when there's no information available to reduce screen
clutter on complex panels.
- Labels and icons on a panel can now have one or more classes. This is useful if the label/icon is controlled by LogixNG.
- Add option(s) for restoring block values, issue #12459
- The LogixNG Icon has been added to the toolbars. The LogixNG Icon can run inline
LogixNGs by clicking on the icon or text label when converted to text.
- The Audio Icon has been added to the toolbars. The Audio Icon can play a sound
on a web panel, for example a Tablet.
NX - Entry/Exit Tool
- Fix Both Way route selection.
- Validate the sensor selections for the Add Pair action.
- Check for LogixNG references before deleting an Entry/Exit pair.
LogixNG
- Note: If tables and panels are stored with this JMRI version, the file
might not load in a previous version of JMRI if it includes LogixNG. This is because JMRI
now stores some LogixNG data in a different way than before.
- New actions
- The Icon/Label by class on panel action is added.
It allows LogixNG to control all icons/labels of a class.
- The action Throttle function has been added. It's similar to the action
Throttle, except that it only sets a function, not speed or direction, and
that it doesn't have any child actions.
- The action Audio icon on web panel is added to the category
Display. This action can tell an Audio icon on
a Panel editor to play the sound when the panel is shown in a web browser, for
example on a tablet or mobile phone.
- The action Timer has been improved. It can now be used within a
LogixNG module. It also supports local variables to tell the different delays for the
timers in the Timer action.
To use the Timer action in a LogixNG module, have an Always true
expression as Start expression for the Timer action, together with the
option Start/Stop by Start expression selected.
- The action Block and the expressions Block,
Dispatcher and Sensor has been refactored.
- Improved actions
- The action Sequence is now safe to use in LogixNG modules. The action
had a bug which made it sometimes fail if it was used in a module and that module was called
from several ConditionalNGs at once.
- A bug in the LogixNG action Logix has been fixed. The Logix
feature When triggered didn't work with the LogixNG action
Logix but has now been resolved.
- The action On Change has been renamed to Logix Action.
- The Entry/Exit action can activate and deactivate Entry/Exit routes,
including activating a reversed route if the Entry/Exit pair has the Both Way
option enabled.
- The action Audio
no longer let the user select an Audio buffer when edition the action.
LogixNG can only act on Audio sources and the Audio listener so there
is no point in selecting an audio buffer for LogixNG.
- New expressions
- The expression File as flag has been added. It returns true if
a particular file exists.
- The Audio expression has been added. It lets
LogixNG listen on an Audio and take appropriate action.
- The expression Timer has been added. It returns False
until some time has passed. It then returns True once and the timer starts
again. This expression is intended to be used together with the action Sequence.
- Improved expressions
- Warrant expression was not listening for warrant events. Fixed along with the long
description.
- The expression Entry/exit can now check if a
entry/exit is reversed or bidirectional.
- Other improvements
- A new LogixNG icon has been added to Panel Editor.
When the icon is clicked, it will execute the inline LogixNG of that icon.
If the inline LogixNG has several ConditionalNGs, the ConditionalNGs will
be executed in the order they got created.
- A new option is added to the ConditionalNG table when
editing a LogixNG. By default, all the ConditionalNGs are executed when the
panel is loaded if the LogixNG is enabled. But if the Startup
checkbox is unchecked, the ConditionalNG will not be executed when the panel
is loaded. This is in particular useful for the LogixNG icon
that's added in this JMRI version.
- A new tool Where Used has been added to LogixNG.
It shows where in the LogixNG tree an item is used. The tool is found
on menu item Tools ⇒ LogixNG ⇒ Where Used.
- Add the GET_BLOCK_WARRANT and GET_BLOCK_TRAIN_NAME
OBlock actions to the OBlock Logix import.
Operations
- Improvements to the routing code. Program will not use an interchange track if the same
train can drop and pull a car.
- Fixed a bug with export routes.
- Fixed close on Save for several windows.
- New tools "Preview and Print Car routing report" in the "Set Car" window that provides
the train routing for a car that has a final destination.
- New tool "Show Staging and Schedules by Car Type and Load" in the "Schedules" window that
shows which car types and loads are shipped from staging.
- New feature for spurs, the ability to prevent a car's load change. Useful when the
spur/schedule is used for a RIP track.
- New feature for staging, planned pickups.
- Improvements to the car, locomotive, and train preview and print tools.
- Minor improvement to the train build report when routing.
- Improvements to the router when determining a valid route where multiple trains are using the same route.
- Updates to the OperationsPro help.
- To see all changes to OperationsPro, use the link below
- OperationsPro Changes
- Script to update Car/Locomotive Tables on update to Id Tag Table User Name
Panel Editor
- Labels and icons on a panel can now have one or more classes. This is useful if the label/icon is controlled by LogixNG.
- A new LogixNG icon has been added to Panel Editor. When the icon is
clicked, it will execute the inline LogixNG of that icon. If the inline LogixNG has several
ConditionalNGs, the ConditionalNGs will be executed in the order they got created.
- It's now possible to select an icon below another icon. Right-click on
the icon to open the popup menu of the icon. If there are any icons at the
mouse position below this icon, the sub menu Icons below
will appear at the end of the popup menu. The sub menu will contain all
the icons below this icon. These menu items will open the popup menu for
for its icon.
- A new Audio icon has been added to Panel Editor.
It can be used to play audio on a web panel, or let the user start
playing sound in JMRI by clicking on the Audio icon. When editing the
panel, the popup menu for the icon has a new sub menu Web
panels that sets the options for how the icon should act on
a web panel.
If the icon is used to play sound on a web panel, the option
Hide when not editing might be useful if the user
shouldn't see the icon. The icon plays the sound even if it's not
visible.
The LogixNG action Audio icon on web panel can be
used to tell the Audio icon to play the sound when
it is displayed on a web browser, for example on a tablet or mobile
phone.
Control Panel Editor
- Labels and icons on a panel can now have one or more classes. This is useful if the label/icon is controlled by LogixNG.
Preferences
- Custom default.lcf Logging Control Files will cease to take effect.
To create a custom default_lcf.xml in the new Logging Configuration format, see
JMRI Debugging and Logging
- The Shutdown preference has two options for ignoring special kinds
of changes. The first is to ignore fast clock changes, the second ignores the text and
background color changes for sensors that have been changed to panel labels.
- The startup action Open file has been renamed to
Load table content and panels.
- Each startup action now has an Enabled checkbox
so that each startup action can be enabled/disabled.
Scripting
- Add "idtags" as a script shortcut to the manager like "turnouts" and "sensors"
- Add a "jython/RunSystemCommandExample.py" sample for
how to run a system command from a JMRI script.
- Scripts that output Logging statements with log4j should be updated to import sl4fj logging.
See here for some examples on how to do this.
- Scripts that output Logging statements with log4jv1.x ( org.apache.log4j ) imports will stop working
and should be updated to use SLF4J logging.
See here for some examples on how to do this.
- TurnoutStatePersistence.py was not correctly updated to use SLF4J in 5.5.3, fixed in 5.5.4
- YAAT: Change function number limit from 28 to 68.
- YAAT: Add a random delay time: Wait for <n> [to <n>] seconds
Signals
Signal Systems
- Pino Di Biasi provided a
Swiss Railways (SBB in German, CFF in French and FFS in Italian)
signal system definition.
- The aspects in the FS-1987 signal system were updated.
- The Italian FS-1987 signal system was updated for better operation.
Switchboard Editor
- Some improvements to how text is sized that will make
the display occupy space a little better.
Turnouts, Lights, Sensors and other elements
- UI improvements to the Turnout Table.
- Memory Usernames for IMCURRENTTIME and IMRATEFACTOR can now be loaded from xml file.
- Fixed a bug that would cause problems when DELAYED feedback was selected.
Virtual Sound Decoder
- Added LayoutEditor turntable support for VSD navigation through a panel.
- Fixed a bug with wrong direction in an oval layout.
- Minor change on the Manager window GUI. The windows for adding
a VSDecoder and to handle the option now are centered to the manager
window. This is not a functional change.
- Removed unimplemented methods for "AudioMode" and "DefaultVSDFileName".
- Removed deprecated method isPlaying - use Audio.STATE_PLAYING.
- Added optional portable file access in VSD. To be used in Roster Media (VSDecoder_Path)
and VSD Preferences (Default VSD File Path). For Portable File Access see
here.
- Take actual speed instead of nominal speed for the distance calculation
(impact for steam1).
- New option "chuff-fade-out" for steam1, see the
documentation.
Warrants
- Fixed problems that were causing Learn Warrant to fail
Web Server
- json car, engine: remove location, set unknown flag, remove from train
Web Access
- panel.js - add data-panel-name attribute to support panel-specific css
- Web tables: add click toggle for several additional columns
- JSON Server: support for updating SignalHead and SignalMast Lit and Held
- JMRI Web Frame Server can now access many of the Dialog popup boxes.
Other Tools
- The Power Control now defaults to display all connections.
- Handle ServerSideIncludes for /help folder #12638, makes Help from the local web server match the online version
Miscellaneous
- IdTags now request the main IdTagManager instead of requesting a
ProxyIdManager to get better initialization.
- Added JMRI version number to the bottom of generated Javadoc.
- Updated the Java Native Access (JNA) library to version 5.13.0.
Updated the Pure Java Comm library to a custom version that should
work better on Apple Silicon (M1, M2) Macs.
- A signal handler has been added to the Shutdown manager such that a
"kill <pid>" command on Mac or Linux will do a normal shutdown.
This is particularly useful for e.g. running headless on an RPi.
"kill -HUP <pid>" will cause JMRI to quit and restart.
In addition, the Mac and Linux startup scripts were updated to
pass these signals on to the running process. Together, this
will allow you to run JMRI as a service on Mac and Linux, including the RPi.
- The external libraries used for Logging have been updated.
- The Hide when empty and not editing menu item has been added to
the right click pop-up menus for block content labels, memory labels and LogixNG global
variable labels. This applies to Panel Editor, Control Panel Editor and Layout Editor
panels.
- Added a jython/test/loconet directory for LocoNet-specific scripting tests,
along with an initial test.
- Logging Configuration Files have moved to the xml format, eg.
default_lcf.xml
Custom default.lcf Logging Control Files will cease to take effect.
To create a custom default_lcf.xml in the new format, see
JMRI Debugging and Logging
- Logging levels ( eg. INFO, DEBUG ) can be changed for the current session in
Display / Edit Log Categories
- Logging Libraries have been fully updated to Log4J 2.20
- The Rolling Log files have been renamd from messages.log.1 and messages.log.2 to messages.1.log and messages.2.log
- The way data is entered in memory icons, block icons
and global variable icons have been improved.
- You can now set the preferences to open the RailCom table at startup.
- The analog fast clock now shows when the fast clock has been stopped.
- Updated batik-transcoder 1.14 to 1.17, resolving a security issue
- Improvements to Dialog boxes when displayed with "Always On Top" window frames present.
- Improved Unrecoverable Error Dialog.
- JMRI now has a "Software Bill of Materials" (SBOM) distributed with it.
Although this won't matter to most users, it allows people to determine
via the standardized SPDX mechanism the libraries that JMRI contains and
the versions being used. Providing this is a small step toward more automated
distribution.
- UI improvements for the
Display / Edit Log Categories dialog.
- (For developers) Our CI process has been updated to require the
@Override annotation on overriding methods and removal of unused import statements.
- Fixed a validation errors in the xml/schema/auxiliary-configuration.xsd file.
- Fixed a problem where the run/pause button would not properly show when the
Nixie, LCD or Pragotron clocks were resized.
- Fixed a problem that prevented JMRI from launching on macOS if Java 21 was in use.
(Java 11 is still the recommended one)
- Improved the
"Updating Decoder Definitions"
page.