Release Notes for JMRI 5.17.3 release
Date: September 11, 2026
From: Bob Jacobsen
Subject: Test Release 5.17.3 of JMRI/DecoderPro is available for download.
Notes:
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 5.17.* test releases.
It requires at least Java 11 to work.
We recommend that you use Java 21 if possible.
(See our page on downloading Java)
We expect this series to result in the next JMRI production release in December 2026.
(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 release should be considered experimental.
We would appreciate your feedback on it.
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
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
- A bug was accidentally introduced in this
version that causes Layout Editor panels to
sometimes display improperly when zoomed
larger or smaller.
New warnings for this release:
Older warnings
See the
JMRI 5.16 release note
for more warnings predating the 5.17 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 at least
JMRI 5.0
before installing this test release.
See
instructions above.
- Since JMRI 4.99.1
If you're using a Firefox web browser and opening JMRI
help files locally (not over the web), a Firefox bug
can sometimes cause it to enter a loop. There's a
workaround in
this JMRIusers post.
Download links:
These files are located in the
JMRI 5.17.3 GitHub release.
The
full list of included changes is available from our
GitHub code repository.
Hardware Support
CBUS
- Updated CBUS op-code definitions with the new VLCB op-codes so they
show up nicely in the CBUS Console.
C/MRI
- Extend the possible reply length to support very large SUSIC installs.
- Added a new node type, ESP32Node, for self-contained
ESP32-based CMRI-over-WiFi nodes using MCP23017 I/O expander chips.
- Network (TCP) connections now automatically attempt to reconnect if the
connection is lost, instead of requiring a manual reconnect.
- Fixed the direction the bit pattern moves in the CMRI diagnostic Output
Test window, which was displaying right to left instead of left to right.
Lenz XPressNet
- Fixed an issue where a throttle could stop sending speed and
function commands for its locomotive after receiving an
unrecognized locomotive information response, requiring a
JMRI restart to recover.
- Fixed a consist-handling bug in XNetConsist affecting rapid
add/remove/delete cycles from an external JSON client, matching
the equivalent LocoNet fix.
LocoNet
- LocoNet Clock now uses the same throttle ID as the rest of JMRI, instead of (illegal) 00 00.
- Fixed several consist-handling bugs that could leave a LocoNet consist in an
inconsistent state after rapid add/remove/delete operations from an external
JSON client (e.g. a WiFi throttle panel), including cases that could report a
consist change as failed when it had actually succeeded.
- Added a new JSON service,
loconetSlotUsage, that reports live
LocoNet slot usage (used/free/total) over both the HTTP and WebSocket JSON
APIs, so external clients can detect slot exhaustion before a consist or
throttle operation fails.
- Added a LocoNet option to update slot status at LocoNet message creation and ignore echos of our own messages.
NCE
- Network (TCP) connections now automatically attempt to reconnect if the
connection is lost, instead of requiring a manual reconnect.
- The Event Table now automatically persists its content so
it can be used while disconnected from your main LCC network.
For example, you could load the Event Table at your club,
then open that same profile at home and see all the same contents.
- Support for the configuration display "checkbox" hint has been added.
New / Updated decoder definitions
Doehler & Haas
- PD series disabled until an update 3.15+ is available
- Added a "replacement" function for some decoders
- D & H files have been renamed for sorting in the decoder selection window
- Decoder files renamed for sorted display
ESU
- Updated LokPiot 5 / LokSound 5 definitions for new output modes as of firmware version 5.14.183.
- Added new Function Key pane that includes icon index and description and settings associated with function keys.
SoundTraxx
- Add Kato OEM decoder
- Add BLU-1100 models
ZIMO
- Added replacement-feature for v4.x MS/MN decoder
- Added some features from CV27 for FS/MS/MN decoders, in particular HLU-Options
- The 'small' decoders MX600, 615, 616, 617, MN150, 160 and 250 do not support servos: CV and Pane servos are excluded
- Minor optical corrections
DecoderPro
- Roster entries are to have unique IDs. Due to a previous oversight,
you could directly change the entry in the DecoderPro table to create
a duplicate. You can still edit the ID, but creating entries with
duplicate IDs are no longer allowed.
- Fixed a bug introduced in JMRI 5.17.2 which would sometimes
cause DecoderPro to write incorrect output addresses to a DS64
- You can now change the board ID of e.g. DS64 and similar boards in DecoderPro
as mentioned on the Basic panel for those.
Layout Editor
- Reduced CPU use when the layout is redrawn, for instance on every block
occupancy change: a redraw now repaints the drawing area only, instead of
the whole window including its menu bar, tool bar and scroll bars, and a
partial repaint no longer redraws the whole visible track plan.
- Fixed an occasional Concurrent Modification Exception error in the
LayoutBlock class during startup.
- An unexpected error while restoring the saved block values no longer leaves
Layout Block routing uninitialized, and is now reported in the log instead
of passing unnoticed.
OperationsPro
- Improvements to the add message combobox in the "Manifest Print Options" window.
You can now select where you want the combobox added.
- New Manifest and switch list item called "Order" in the message combobox. You
can now show the order or sequence locos and cars are added to the train.
- Train comments has been improved to allow substitutions. See help for details.
- Improvements to "On Time" with regards to alternate tracks and spurs.
- The "Edit Car and Locomotive" windows now requests confirmation when changing the road or number.
Panel Editor
- Sensor and MultiSensor icons now repaint only their own area of the panel
when their sensor changes state, instead of the whole window, reducing CPU
use on panels receiving frequent sensor events. The repainted area follows
the panel zoom level.
- Fixed a NullPointerException in a Memory icon displaying a roster entry,
which could be thrown when the memory value changed while the icon was
being updated. The exception propagated out to the caller, so a script or
automaton writing to that memory could be stopped by it.
Roster
- Importing a roster backup file (Import Complete Roster)
has been made faster and more reliable.
Throttle
- Fixed a race condition where a newly-acquired throttle could be handed
to listeners before its roster entry was attached, so a listener could
briefly see a throttle with no roster entry. The roster entry is now
set before listeners are notified.
- Applied the same consist-handling fixes made for LocoNet and XPressNet
to EasyDccConsist, for parity across consist-capable systems.
- Fixed a thread-safety bug in the JSON throttle manager where simultaneous
JSON client connections could corrupt throttle bookkeeping.
Turnouts, Lights, Sensors and other elements
- Fixed high CPU use of the Turnout Table when the "graphic state" preference
is enabled: painting a state icon no longer resizes the row, which kept the
table repainting itself continuously once all turnouts were in a known state.
Rows are now also tall enough for the icons while turnouts are still in the
Unknown state.
Web Server
- Improve how "show ? if unknown" works with background image.
- Improve how Layout Editor cross-overs are drawn to avoid ghost lines
on the unselected direction of the crossover.
- Fixed a NullPointerException in the JSON servlet when a POST, PUT, or
DELETE request arrived with no Content-Type header, so it now returns
a proper JSON error response.
- Fixed a JSON schema validation gap where requesting an unrecognized
type from the LocoNet slot usage service could silently return the
wrong schema instead of an error.
- Layout Editor panels displayed via Chrome and Chromium browsers
would show small notches in the track lines near turnouts and
crossovers. This was not present on other browsers. Adding
a round cap to the end of the drawn lines reduces this effect.
Miscellaneous
- Fix the Current Config file path in Help ⇒ File Locations.
- The Single Step Upgrade help page describes an alternate process to
upgrade from JMRI 3.x or 4.x using Java 1.8 to a current 5.x release using Java 21.