Release Notes for JMRI 4.21.3 release
Date: December 18, 2020
From: (pumpkin)
Subject: Test Release 4.21.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 test releases.
We expect this series to end in the next JMRI production release in early 2021.
(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.
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 4.20, 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 relese.
- 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
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
New warnings for this release:
- Since JMRI 4.21.3
The Layout Editor code has been substantially restructured in this release.
If you have scripts that reference the jmri.jmrit.display.layoutEditor package
please check them carefully, as new classes have been created and
some methods have moved. Panel files containing Layout Editor panels
that are stored (written out) by this release may not be readable
by earlier releases; this release should load older files just fine.
Older warnings
See the
JMRI 4.20 release note for more warnings predating the 4.21 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 4.20
installing this test release.
- Since JMRI 4.21.1
The jmri.jmrix.SystemConnectionMemo class has become a jmri.SystemConnectionMemo
interface and a jmri.jmrix.DefaultSystemConnectionMemo class. This may
require changes to scripts. If you have a script that references
jmri.jmrix.SystemConnectionMemo, please change it to either
jmri.SystemConnectionMemo or jmri.jmrix.DefaultSystemConnectionMemo
(it's easier to have you just try the two than to explain which
one will work in which case)
- Since JMRI 4.21.1
The way preferences are loaded at startup has been slightly
modified. There is no impact to JMRI applications, but Non-JMRI
applications that are not derived from apps.Apps or apps.AppsBase
but are using jmri.implementation.JmriConfigurationManager to load
preferences will no longer see preferences if an error occurs. To
restore the old behavior, use apps.AppsConfigurationManager instead.
- Since JMRI 4.19.1
The
getBeanByUserName
and getBeanBySystemName
calls in the various Manager
classes
are no longer needed with Java 8 and have been deprecated for eventual
removal. Their replacements are
getByUserName
and getBySystemName
respectively.
If you use getBeanByUserName
and getBeanBySystemName
in script or Java code you've written, please
switch to the new names.
- Since JMRI 4.11.4
There are issues with the Pi-SPROG One command station operation. A number of workarounds should be applied:
- Do not turn on the track power until the power supply to the Pi-SPROG ONE is turned on
- Do not enable extra debugging through default.lcf, nor open the system console window
- Do not open the SPROG console window
- Disable power conversion (CV 29) in all locos
- If connecting via VNC (or similar), setup the screen layout before turning on the track power
Pi-SPROG One with version 2.4 or earlier firmware will cause a timeout after a track short circuit. A dialog box will
open to inform the user of this. The track power will be turned off and must be turned on again using the power control.
Download links:
Please note that the download links in this and future JMRI releases link to
Github servers.
People are welcome to distribute the download files further via other websites, etc.
If you want to check that you've received original, unmodified versions, please
check the files against the checksums shown below.
The
list of included changes is available from our
GitHub code repository.
Hardware Support
CBUS
- CBUS now has its own trademark and is referred to as CBUS, not 'MERG CBUS'.
- CBUS RFID Reporters now act similar to other JMRI Reporters, ie with a timeout following the report.
- CBUS Reporters can set a Sensor to follow the active IDTag status, set via CBUS Reporter Table.
- CBUS Reporters will default to classic RFID ( 5 byte unique tags ), with option for in-development CANRC522 / CANRCOM format, set via CBUS Reporter Table.
- Refer to MERG section of this not for changes in JMRI support for MERG hardware.
- Restructured help pages to reflect split between MERG specific hardware and hardware agnostic CBUS features.
C/MRI
- CMRI SerialSensor updated to support multiple Character system name prefixes.
Internal
- Sensor, Turnout, Light and Reporter Address ranges do not have to be fully numeric, and will be incremented using the final number in an address.
For example, a range can be created from "My Yard 77 Sensor 1" which would increment to "My Yard 77 Sensor 2"
LocoNet
- The legacy LocoIO programmer help points to the current method to
configure these boards.
- LocoNet support for "Voltage/Current Meters" has been extended to
include support for multiple sources of meter information, and
to include automatic discovery of LocoNet devices which support
voltage and current reporting. Each discovered device is identified
by its device type and serial number. These "friendly" identifiers
appear in the "Voltage Meter" and "Current Meter" menus in the
"Voltage/Current Meter" tool. Further information may be found at the
Digitrax "Meters" web page.
- Start-up "Interrogation" of LocoNet Sensor and Turnout state
has re-worked to provide better operation for LocoNet connections
with large numbers of Sensors and/or Turnouts. The JMRI
interrogation mechanism now implements a minimum delay from
the last Sensor Report, Turnout Report or Interrogate Query
message before sending the next Interrogate Query message.
- The "DS64 Configuration Tool" was updated:
- to correctly perform the "Factory Reset" operation
without encountering a "Java Exception";
- to correctly perform the "Factory Reset" operation to
the correct DS64 as specified in the "Unit Address" field;
- to correctly manage the values shown on the "OpSw Values"
tab and maintain value coherency between the "OpSw Values" tab
and the "Basic Settings" tab.
- Keep slot status in line with CS after setting COMMON or true slot moves
- Allow selection of "Stand-alone LocoNet (with external LocoNet Data
Termination!)" for Digitrax PR4.
Maple
- Maple SerialSensor updated to support multiple Character system name prefixes.
MERG
- CBUS now has its own trademark and is referred to as CBUS, not 'MERG CBUS'.
- Refer to CBUS section of this not for changes in JMRI support for CBUS.
- Restructured help pages to reflect split between MERG specific hardware and hardware agnostic CBUS features.
MQTT
- Added support for creating ranges of Turnouts and Lights.
Sensor, Turnout and Light Address ranges do not have to be fully numeric,
and will be incremented using the final number in an address.
- Added support for changing the default quality of service and
retention policy for transmissions. See the
jython/SetMqttOptions.py
script for an example.
- Fix a nasty threading bug in the MQTT Light support that can
cause a JMRI lockup on the first access after adding a Light.
- Update the Paho MQTT library from version 0.4.0 to 1.2.5 (current)
- Better handling of wildcards in topic subscriptions
RFID
- Network connections: Support added for auto-reconnect.
- Network connections: TCP/UDP port configuration option promoted to main configuration settings panel and no longer under Additional Connection Settings.
SPROG DCC
- EStop for 28 Step mode is now sent correctly
- Updated programming mode switcher for Pi-SPROG 3
- Added mode switcher for SPROG 3 Plus
- Added help content for new generation 5 hardware
Uhlenbrock Intellibox
- The 73900 decoder definition was renamed 7x900, and updated to support decoder models:
- 73800
- 73900
- 76900 (V1)
- 76900V7
- Piko 56126
Existing roster entries will suggest this replacement.
CTC Tool
- Include detail information for vetoed object deletes.
Layout Editor
- The Layout Editor code has been substantially restructured in this release.
If you have scripts that reference the jmri.jmrit.display.layoutEditor package
please check them carefully, as new classes have been created and
some methods have moved. Panel files containing Layout Editor panels
that are stored (written out) by this release may not be readable
by earlier releases; this release should load older files just fine.
Logix
- The "Copy Logix" feature has been enhanced to provide more assistance
in copying conditionals. See the updated help files for details.
- Fixed a couple of bugs there Logix wasn't correctly listening on
signal head lunar state, signal head flash lunar state, signal mast
lit state and signal mast held state. See PR #9059.
Control Panel Editor
- Icons of tracks indicators and signals in the style of the ČSD Czechoslovak State Railway
- Unified Control Place - JOP style.
Circuit Builder
- Circuit Builder track colors (Allocated, Not In Use, ...) are now supported on Web Server
panels. See OBlocks and JSON.
- OBlock and associated tables can be edited like the 'standard' tables (see
OBlocks).
Palette
Turnouts, Lights, Sensors and other elements
- Increased address validation for multiple hardware types.
- Access to OBlocks in Web Server via JSON messages was added.
- Occupancy Blocks, Portals and Paths used in Warrants can be edited in an optional table style
like that used in the 'standard' tables (Turnouts, Lights etc). The information is stored in the exact
same way, so you may change the UI as desired (see Preferences > Display. Restart required)
Scripting
- The getSystemNameList() and getNamedBeanList() Manager methods have been fully deprecated.
Please update any code warnings re these methods to use getNamedBeanSet(), and
post on the JMRI Users Group for any assistance with updating.
- The Manager method getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix) has been
deprecated, please use getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix, boolean ignoreInitialExisting)
Switchboard Editor
- When the Switchboard pane is resized by the user, the number of rows will adjust to show the largest
size switch tiles (default On for new boards). If you prefer to set the number of rows in the Editor,
uncheck "Automatically set optimum grid" in the Options menu).
- Switchboards immediately update after a change in shapes, types, connection or range. The [Update
Switchboard] button is still available, and occasionally required.
- Switches display the user name on the switches (default On for new boards, set "Show user name on
switches" in the Options menu.
Throttle
- Fix issue where Jynstrument would not start correctly (user group message).
- Added a throttle frame Jynstrument that hides throttle window menubar and toolbar and switches to semitransparent mode (and vice versa) (idea from this user message).
Warrants
- The table of throttle commands shown when creating or editing warrants has been changed:
- The Command column is now a drop down combo box. This will allow the
command names to be translated into languages other than English.
- The Value column is a drop down combo box for throttle commands
other than "Speed" or "Run Warrant". Again, done to permit translation
into other languages.
- The algorithm for executing speed changes due to track conditions for warrants
has been modified and is better able to restore the scripted speeds once the
track speed restrictions are lifted.
- The constant used to approximate track speed of trains has been changed to
yield a scale speed of 100mph at full throttle. This change has no effect
on roster entries having Speed Profiles.
- The Address column of the Warrant Table list and the Address fields of the
NXWarrant or Create Warrant windows
now accept throttle protocol names and addresses of Markin and ESU ECoS.
- When scripted speeds are overridden due to signals or obstructions ahead, the
non-speed script commands are executed at approximately the same elapsed times as
were written in the script.
- Track speeds of running warrants are recorded automatically and a SpeedProfile
is built that can be seen by pressing the View Profile button in the
edit warrant window. These profiles can be merged into the existing profiles
for the Roster entry used by the loco of the warrant when the layout session
is closed. (Recall that Warrant Preferences has 3 options for this merging.)
- An Update Track Speeds button is added to the window where warrant throttle
settings and commands are edited. This button updates the Speed column to
list the track speeds (mm/sec) for the current Speed Profile measurements of
the locomotive address entered in the 'Engine Consist' box.
- Bugs introduced during the past year to the 'Wait Sensor' command and merging of
speed profiles are fixed.
- When OBlocks are imported from LayoutEditor blocks, the turnout settings of paths
are also added to the imported OPaths.
Where Used
- Implement data collection for CTC references for sensors, signal heads,
signal masts, turnouts and blocks.
Web Server
- Switchboard panels on Web Server support all graphic shapes and colors set in the Editor.
- Switchboard "switch" icons fill the whole screen on mobile devices (you can turn this off in Switchboard
Editor by deselecting "Automatically set optimum grid" in the Options menu.
- Switchboard panels for Lights allow to switch all lights on or off (also in Web Server when Panel
items control layout is selected in the Editor Options menu).
- Control Panel track colors (Allocated, Not In Use, ...) are now fully supported on Web Server
panels.
- OBlocks access was added as a JSON Servlet to allow this.
Meters and MeterFrames
- jmri.MultiMeter is split into jmri.Meter.
- jmri.VoltageMeter and jmri.CurrentMeter is added.
- AmpMeterFrame and VoltMeterFrame are replaced by MeterFrame
- The user can select which VoltageMeter/CurrentMeter the MeterFrame should show
- The MeterFrames are stored in the panel file and restored when the panel is loaded
- LocoNet supports discovery of the sources of voltage and current
data and makes them available in the "Voltage/Current Meter" tool.
AbstractProxyManager
- AbstractProxyManager can now automatically create system specific managers.
- When a NamedBean is added to a proxy manager, there needs to be a system specific
manager for that bean unless the bean is for the internal manager. The ProxyMeterManager
and AbstractProxyManager automatically creates a new system specific manager if it doesn't
already exists. This works as long as the system specific manager doesn't need to have
system specific knowledge of the named beans.
- This means that, for example, the user may create a Jython script that creates a Meter
for the LocoNet connection but doesn't need to create the LocoNet meter manager since that
manager is automatically created.
- Once a specific connection needs to store specific data about meters, a connection
specific manager needs to be created, for example LnMeterManager for LocoNet.
Miscellaneous
- Windows launcher updated to honour return codes to shutdown or reboot host machine
- The Ant version invoked by Maven was bumped to 1.10.8. No user
action required, but developers need to be online the first time
they build using Maven.
- The (English) phrasing in a couple of messages was updated for consistency.