Release Notes for JMRI 4.21.1 release
Date: August 31, 2020
From: Bob Jacobsen
Subject: Test Release 4.21.1 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 releases. We expect this series to end in the next JMRI production release in early summer 2020. (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.
Update From Older JMRI VersionsIf 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.
Known problems with this release
New warnings for this 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.
Older warningsSee 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.19.1
getBeanBySystemNamecalls in the various
Managerclasses are no longer needed with Java 8 and have been deprecated for eventual removal. Their replacements are
getBySystemNamerespectively. If you use
getBeanBySystemNamein 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
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.
- OS X / macOS: https://github.com/JMRI/JMRI/releases/download/v4.21.1/JMRI.4.21.1+R90f7b8bfd.dmg
- Windows: https://github.com/JMRI/JMRI/releases/download/v4.21.1/JMRI.4.21.1+R90f7b8bfd.exe
- Linux: https://github.com/JMRI/JMRI/releases/download/v4.21.1/JMRI.4.21.1+R90f7b8bfd.tgz
Changes since Production Release 4.20:The list of included changes is available from our GitHub code repository.
- Instructions detailing how to change the Board ID (Board Address) of certain Digitrax LocoNet-based devices using JMRI have been added to the Digitrax hardware page.
- Fixed a problem in the PM4Announce script
- When the connection is lost to a GridConnect Serial Device ( eg. CANUSB4 losing power / Windows Sleep Modes ), JMRI will periodically attempt to reconnect to the device.
- The MQTT temporary directory has been moved to the current profile directory. This will allow JMRI to have MQTT connections even when JMRI is installed in a protected location.
- MQTT Turnouts now support MONITORING and EXACT feedback modes
- When status UNKNOWN or INCONSISTENT is received from MQTT and the turnout operating mode is MONITORING or EXACT, the layout is now updated with this status
- When EXACT feedback mode is selected, two different MQTT topics will be used - one for commands and one for state
- Added MQTT Sensors
- MQTT connection configuration now lets you set the prefix for Turnouts, Sensors, Lights, Reporters, Signal Heads and Signal Masts. (There's no actual support for Lights, Reporters, Heads and Masts yet, but you can set the prefix). Note: You should check the settings for Turnouts and Sensors to ensure they're what you want. This code upgrade might have overwritten any values you (had to) manually edit into preferences in the past.
- The new "jython/SendMqttMessage.py" sample script show how to send across an existing MQTT connection.
- The new "jython/ReceiveMqttMessage.py" is simple demo of receiving MQTT messages into a script. It just prints the received messages, but you can build up from there.
New / Updated decoder definitions
- Added LokPilot 5 Fx micro Next18 variants and Pullman Silberling.
- Update for some new ESU firmware features.
- Fix some errors.
- F29-F31 now present in Function Labels pane for generation 5 decoders.
- The DecoderPro programming/editing screens now have a Find operation!
Ctrl-F or Cmd-F will open a small find bar at the bottom of the pane where you can enter a search string. Hitting Return will find the first occurrence. There are right and left arrows to find the next occurrence forward and backwards respectively. Ctrl-G or Cmd-G will also find the next forward occurrence. Shift-Ctrl-G or Shift-Cmd-G will find the next occurrence going backwards. The "Done" button will dismiss the bar, but you can leave it up without it interfering with anything.
- Added a new optional "maxFnNum" model-level attribute for Decoder Definitions.
- Specifies the highest F key supported by the decoder. The assumed default is "28".
- Note that `maxFnNum` is not to be confused with the existing `numFns`, a legacy attribute that limits the total number of function mapping lines displayed. Neither is derivable from the other.
- This value is currently used to build the Function Labels pane.
- This value is propagated to the Roster Index and intended to be used in future by throttles, etc.
- Example definitions are LokSound 5(uses F0-F31) and LokSound V3.5(uses only F0-F15).
- Added a new optional "allowResetDefaults" decoder-config level attribute for Decoder Definitions.
For some decoders, it's either impossible or impractical for the decoder definition to have universally applicable defaults incorporated. In these cases, setting allowResetDefaults="no" disables the "Reset to defaults" button on the Roster Entry pane and provides an explanatory tooltip.
- Jython based System which automates the build of a Dispatcher system
- Requirement: Start with a Panel with track, signals, signal logic built with
- automatic signal logic, sections built with automatic section builder
- Provides Gui to: Modify xml of panel to provide icons to setup dispatch
- between stops, Generate Transits and TrainInfo files required by dispatcher
- Provides a runtime system to operate the system
- Fixed problem where operations database was always saved when exiting JMRI.
- Fixed problem with Panel name for train icons.
- Fixed problem with track move count when track has an alternate track.
- To correct prior release notes, the CTC panel can be created with Layout Editor, Control Panel Editor or Panel Editor.
- This release gets a new capability: Auto-Generation of Traffic Locking (TRL) rules, which is the most tedious and difficult aspect of (any) CTC systems. However, TRL Auto-Generation is dependent on Layout Editor, with Signal Masts at block boundaries, and with automatically generated Signal Mast Logic. The Signal Mast Logic can be modified after discovery, but there has to be at least one discovery process run. After this process is complete, if you are not happy with the way Layout Editor displays the layout, you can create a parallel Control Panel Editor or Panel Editor screen. Personally, in my opinion, Layout Editor looks very close to an actual CTC panel if drawn correctly.
- There is a reminder dialog that was added to remind users of the CTC system that using "," (Comma) and ";" (Semi-colon) in ANY of the System and User names for items used by the CTC system is not supported, and may cause problems in the program. The reminder can be silenced permanently too by the user.
- When CTC Runtime starts (Run CTC Logic), if there are any problem(s), warning(s) or informational message(s), it will now popup a dialog box to inform the user. Previously, I relied on the System Console for the logging of those messages (which still happens), but the System Console screen may not be visible, ergo the need for this new feature.
- Bug Fix: It was possible (though technically wrong) for a user to specify a single turnout as locked in two (or more) different O.S. sections. If this was specified, the runtime program would fight itself and eventually cause a stack overflow. This is now prevented during user entry from occurring. If you have specified this prior to this release, you must manually correct this.
- Bug Fix: There was a problem that occurred when certain Java libraries were used. The CTC .xml file that contains all of the data was slightly corrupted due it. By just running this new version of CTC Editor, those problems will automatically be fixed. You may then exit the CTC Editor even without saving, as the fix will have already been done. (internal file version 5 to 6)
- Bug Fix: If an O.S. section did not have a Signal Lever defined, it was possible (though wrong) to enable Traffic Locking and / or Call On. Now it is impossible to define either if there is no Signal Lever defined properly.
Control Panel Editor
- The 'Circuit Builder' menu has been updated. See below.
- The 'Edit Turnout Icon' menu item of Indicator Track popups synchronizes paths with the 'Add/Edit Circuit Paths' window of Circuit Builder.
- A 'change Portal Icon Set' menu item is added to the 'Circuit Builder' menu of Control Panel Editor. User defined icon sets for Portals can be installed here.
- When using the 'Add/Edit Circuit Portal' window, the popup menu of a Portal now allows repositioning from the 'Set Location' menu item.
Features added to the 'Add/Edit Signal Mast' window are;
1. A Signal list shows the signals that are configured to protect the block.
2. Buttons will open the Tables for creation, renaming and deletion of both signal Masts and Signal Heads.
3. Signal icons can be dragged in the fashion of Item Palette from the window to the panel
4. Instructions for these operations are described on the window.
Two new error alerts are added to the 'Error Checks' menu item of the 'Circuit
1. OBlocks that do not have a block length are listed. Every Path in a block should have its length specified in order to run Warrants. But for convenience, this length can be inherited from the block length.
2. Signals that are not configured to protect a block are listed. If these signals have icons they can be highlighted with a corresponding menu Item.
PaletteSome minor changes are made to the user interface.
- For the tabs having icon sets, i.e. turnouts, sensors, etc., should all icon sets be deleted, a 'Restore Default' button is displayed to reinstall the default icons.
- The above restoration feature can be done at any time by holding keys CNTL A down while clicking the 'New Icons' button. All customized icon sets defined by the user are retained and any missing default icons are added.
- The unused functions to create, delete, or restore the status states of Indicator Turnouts are now only displayable by holding keys CNTL A down while clicking the 'Edit Icons' button.
- Several new checks and alerts will inform users when duplicate names are used for icon sets or when duplicate icon sets are found with different names.
- The fixed set of Portal icons may be redefined by the user under the 'Portal' tab. Portal icon sets created by the user may be selected for panels by a new menu item, 'Change Portal Icon Set' in Circuit Builder. The new set is then used for Warrant displays.
- The drag and drop of icons under the 'Icon' and 'Background' tabs no longer requires naming the icon first. The drop from the Icon catalog can be done directly into the panel.
- The tabs having tables now display the element's actual table editing window when the 'Add New Table Item' button is pressed.
- Editing an icon set for an Indicator Turnout now follows the same paradigm as the rest of the tabs having icon sets. Defining new icon sets, changing icons, or renaming sets functions the same for all such tab items.
- When a hardware connection fails, some hardware types may attempt to reconnect.
The interval between reconnection attempts and the maximum number of reconnection attempts can now be changed by saving your profile, then editing the profile.xml file.
The reconnectMaxInterval is in seconds, reconnectMaxAttempts is infinite if -1, else the value.
- A configurable (minimum) interval for all turnout outputs that are part of a Route on the same connection can be set in Preferences > Connection > Additional Connection Settings (serial connections only). Default is 250 milliseconds. Up to now this delay was fixed to 250 ms in the code so this new option will only be noticeable if you change it. No restart is required. Use the [Reset] button to restore the default. The same setting is applied to Turnout Outputs, for example as Signal Mast outputs.
- Some internal refactoring that should help with the long term maintenance of JMRI has been done. This may cause some scripts to fail until classes or methods are renamed in those scripts.
- The B&O-1980 signal system was updated to correct several errors and to include masts which can be used to protect a block of "short braking distance".
- A configurable (minimum) interval for all outputs on the same connection can be set in Preferences > Connection > Additional Connection Settings (serial connections only). Default is 250 milliseconds. Use the [Reset] button to restore the default. The same setting is applied to turnout outputs in a Routes.
- Better set row height in table.
Virtual Sound Decoder
- VSD now supports the "Location Following" (sound follows loco) with occupancy sensors and JMRI Blocks. See the documentation for details.
- 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)
- Added PR automation to check for a comment in the release note when a PR is opened, and to ensure that somebody has been assigned to the PR.
- The jmri.JmriPlugin class is deprecated without a replacement. If you depend on on this class, please raise an issue on GitHub so we can discuss how to meet your requirements through other means.
- "Display Message Log" has been removed from the Debug Menu. Use the "System Console" from the Help Menu to view log messages.
- The older "Upload Debugging Information" item in the help menu has been replaced by a "Report Issue..." item. This walks you through creating a JMRI GitHub issue and uploads information that will make debugging easier. You need a (free) GitHub account to do the final submission. There's more info on the help page.
- The interface jmri.Light has been split into jmri.Light and jmri.VariableLight. Lights that supports variable intensity must now implement the jmri.VariableLight interface. All lights are still managed by the jmri.LightManager, but a new manager jmri.VariableLightManager has been added that keeps a copy of the VariableLights. But register and deregister of all lights must still be done thru the LightManager.