Release Notes for JMRI 4.26 release
Date: December 16, 2021
From: Bob Jacobsen
Subject: Production Release 4.26 of JMRI/DecoderPro is available for download.
We are very pleased to announce that the 4.25 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 4.26" 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 is the last JMRI production or test version that will work with Java 1.8.
To use any future JMRI test or production releases, you'll have to
update the Java on your computer to Java 11. See
our page on downloading Java 11.
This version has been tested on Java 11, so you can do the Java update now if you want to.
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.
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
- CBUS Node Manager: Using the Speed spinners in the Node Variable Edit pane for CANSERVO modules will put the
code into an endless loop. The only way to recover is to shut down JMRI.
New warnings for this release:
- Since JMRI 4.25.4
If you use a Safari browser on macOS X, the local
help system might not work. There are two
workarounds:
- If your computer is connected to the internet, use
the web-based help. Go to JMRI Preferences, then
select Help on the left, then click "Open help pages online";
save and restart
- To get local access, you can select Safari's Preferences,
then the Advanced pane, then checkmark "Show Develop menu in menu bar"
If you're using another browser, like Chrome or Firefox, you
shouldn't encounter this issue.
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
before installing 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.
- 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:
This production version is made from test releases 4.25.1 through 4.25.9 The
list of changes
in those is
available from our code repository.
Hardware Support
CBUS
- Andrew Crosland added new code to implement a Service provider Interface for CBUS module support.
Initial support is limited to a few modules and allows more human-friendly editing of Node variables.
- Improvements to CBUS node support.
- More module GUI editors added.
DCC++ and DCC-EX
- new sample script (SendDCCppMessages.py) to easily send DCCpp commmand list
- added support for new servo and vpin turnout messages
- store definitions as properties in created objects
- Config Base Station now available as Startup action
- Monitor, Send Command, and Config Base Station now multi-connection-aware.
- new throttles now default to Forward instead of Reverse
LocoNet
- Adds a Jython script which repeats certain "normal" LocoNet
switch (turnout) control messages as "special" LocoNet switch
control messages, so that they will be forwarded to the DCC track
signal (and RailSync signals) when the Digitrax command station's
"Bushby" feature is enabled. Further information may be found
here.
- Added connection support for the
RR-CirKits LocoBuffer-NG.
MERG
- Fixed - Response Events are sometimes shown as normal Events in MERG CBUS Console ( from 4.13.4 ).
- See CBUS notes.
- Support for CBUS CANMIO-SVO live updates during servo position setting
MQTT
-
Add protection against a concurrent-modification
error that can happen during very fast operations.
-
If the connection is disconnected, JMRI tries to
reconnect.
- Added support for Last Will and Testament (LWT)
SPROG
New / Updated decoder definitions
Doehler & Haas
- Added defs for 2nd. generation DH05C and DH10C decoders (more outputs, whereas other 2nd Gen decoders models don't have functions or CV changes)
- Added DH06A definition for fw 3.12.050
- Added a new LDH SyM v60 decoder definition
in Spanish and Portuguese
SoundTraxx
- TSU2 Genesis OEM add new models
TAMS
- Added definition for Tams FD-R Basic 3, including Railcommunity norm RCN-277 mapping for future use on other decoders
DecoderPro
- Updated TCS Decoder identification processes to allow for 4-byte decoder
with ids stored in CV's 253, 254, 255, and 256. Process only effects TCS decoders
CV249 > 175.
LogixNG
- Add a Reporter Action which can be used to copy reports to memory variables or local
variables.
- Add a Reporter Expression which can compare reports to strings, memory variables or
local variables.
- Add Dispatcher Action and Expression.
- Add a Table tab to Local Variable and Memory Actions.
The table reference is used to identify the cell that has content that will be copied
to the selected local or memory variable.
- The Highlight row in ConditionalNG Editor option in
Preferences ⇒ LogixNG has been added. This can be useful for seeing which
row is currently selected.
- The action Listen On Beans is improved.
- The LogixNG actions Light, Sensor and Turnout can
now set the states Unknown and Inconsistent.
- The LogixNG action Show dialog has been added.
- The LogixNG action Timeout has been added.
- Fixed some issues with minor edge cases.
- The LogixNG function hex2dec() has been added.
It converts a hexadecimal number to a decimal number.
Operations
- Fixed exception when using "hyphen" feature without other characters.
- Fixed the truncate feature when using utility cars.
- Fixed automation bug when there are manifest warnings.
- Fixed AutoHPT model and road bugs.
- Fixed save after delete of car.
- Enhancement, show how many warnings in the build report.
- Enhancement, user can optionally update route departure times when changing train departure times.
- Enhancement, added medium load priority.
- Improved Show Schedules by Car Type and Load
- Enhancement, added text color options to switch list and track comments.
- Improved displayed comments for Yardmaster.
- Improved displayed comments for Yardmaster by Track tool.
- Fixed pick up car error on Manifests when using route blocking order.
Panel Editor
- When changing the icons used by an item,
the icon display window now shows the choices
in alphanumeric order by name.
Control Panel Editor
Palette
- When changing the icons used by an item,
the icon display window now shows the choices
in alphanumeric order by name.
Scripting
- For some hardware types, sensors.requestAll() can request a status update for any Sensors known to JMRI.
This is not possible for many hardware types, eg. Internal Connections.
For multiple hardware connections, sensors.updateAll() will query all connections.
- Adds the
LnBushbyForwarder.py
jython script, to support
Digitrax command stations by providing a mechanism to forward "special"
LocoNet turnout control messages when "normal" LocoNet turnout control
messages are seen for user-selected LocoNet turnout addresses. This
may be useful when the Digitrax command station "Bushby" feature is
enabled. More technical discussion of the issues associated with the
Bushby feature may be found in the discussion of
Command Station Turnout Command
Rejection Avoidance Strategies in the general Digitrax help page.
- Added ThreadingExample.py script to show how to defer work to the GUI/Layout
script from an AbstractAutomat or other threaded script.
- Added a new LnSendToolwithNCE script.
- Added
KeyListenerExample
,
a sample script that shows how to listen to the keyboard.
Signals
Signal Systems
- Swedish railway signaling system, SE-TSFS-2010,
2009 version of the "3H Signaling System", Module 3H
- Fixed a bug in the CCOR-1967 set that kept one
aspect from displaying properly.
- A
Norway 2001
system was added.
Signal Masts
- Add an address offset option for DCC Signal Mast Decoder signal masts.
- Add the ability to select the aspect id for the unlit option.
USS CTC Logic
- Improve the USS CTC documentation and the
jython/ctc/
sample script example of use
- Multiple upgrades to improve the realism
of the
example panel's
operation and appearance. Much help provided by Bob Milhaupt.
Throttle
- Several bug fix on function panel (related to xml store/load)
- Moved the keyboard shortcut implementation from KeyListeners to Input and Action Maps, should work better
- Fixed a problem with function keys due to changes in Java 8u311
- Added ControlPanel.getSpeedSlider() for scripting
- Added default throttle file preference, will be loaded when a new throttle is acquired and no specific roster entry exist for the used address
- Documentation update
- Minor bug fixes : Modifier keys were not showing on the keyboard control preferences screen and preference apply was not done immediately for throttle list window
- Removed the global preference "Hide speed step selector" as it is available per throttle. Less complexity.
Transits
- Transits can now have unlimited number of sections.
Turnouts, Lights, Sensors and other elements
- Light Controllers triggered by Turnout now have Turnout stored in xml by DisplayName (
UserName, or SystemName if no userName set ), rather than SystemName.
Warrants
- Loss of control when train loses occupation detection
(dirty track or pickup, unreliable sensor, etc) is fixed.
Formerly trains could run uncontrolled at their current speed
setting. An emergency stop is made and speed is set to zero
upon loss of detection.
- Calculation of ramp times and distances is improved. However,
the need for good data of path lengths and train speed profiles
remains.
- The occasional freeze of the Warrant List Table is fixed.
- The address column of the Warrant List table is changed to show a
roster id instead of the DCC address. Un-rostered addresses may still be
entered and the warrants run with such engines. In this case, the column
entry is the address bracketed with $ signs.
- Warrant activity can be "traced" on the console. An Enable/Disable
button in Warrant Preferences activates this feature. Default is
tracing disabled.
- "Slow Speed Assistance" can be given when a train is inordinately
late in getting to the next block of the script. This done only when train
approaching the block has a speed less than a configurable percentage
of throttle. If the train
has not reached the block within 10 seconds of its scheduled script time,
its speed is increased by one "Ramp Step Throttle Increment". This is
done at 10 second intervals until either the train reaches the block or has
attained the configurable percentage throttle speed.
Upon entering the block the original script speed is restored.
This feature will allow balky engines with poor low speed characteristics
to reach their destinations without stalling. The default throttle
percentage for triggering Slow Speed Assistance is 2.5% and
may be changed in Warrant Preferences. Slow Speed Assistance is disabled
by setting this trigger speed to 0%.
- Fixed a problem found in JMRI 4.25.7
with stopping logic.
Miscellaneous
- The JavaHelp system has been replaced by JmriHelp.
See the Help page for details.
- PanelPro main menu updates
- Moved the Virtual Sound Decoder menu from the
Debug menu to the Tools menu.
- Moved Start WiThrottle Server and Start JMRI Web Server
from Debug to Tools ⇒ Servers.
- Updated website help pages including adding a section about the
PanelPro menus to the main PanelPro help page.
- The length of logging lines sent to the system console has been reduced
by no longer including the date. The time is still included.
If you have a copy of the 'default.lcf' file in your local JMRI
setting directory, you won't see this change until you update it.
- Access to the deprecated SecurityManager class has been removed;
Java access security is now enforced by default.
- Keith Usher provided a new
mediumschematics searchlights icon set
at resources/icons/mediumschematics/searchlights/
- Fixed a problem with throttle function keys due to changes in Java 8u311
- Limited support for native running on Apple Silicon is now available.
Please note:
- Anya DMX support doesn't work. We recommend
that you don't try to configure that hardware, as
crashes have been reported.
- There is no support for the JInput library, which is
used for JInput-specific connections.
- There is no support for the BlueCove library, which is
used for Digitrax over BlueTooth connections.
- Sound support is currently limited, with work
on-going.
JMRI runs fine, without the above limitations, in Rosetta
(Intel emulation) mode on Apple Silicon macs.
To run JMRI in native mode:
- Install an Apple Silicon Java from
Azul.
- If needed, remove any
Intel-mode Java installations.
(These may cause JMRI to start
in Intel-emulation mode)
- Make sure you have Rosetta 2 installed.
macOS requires this to launch a
JMRI application from its app icon.
(See FB9730830)
If you want to check whether JMRI is running in
Apple Silicon native more or Intel emulation
mode, select Context... from the JMRI Help menu.
Then look for the `os.arch` value about 2/3 of the
way down. If it's `aarch64`, JMRI is running on
Apple Silicon natively. `x86_64` indicates Intel-simulation
mode.
- Basic support for TypeScript has been added to the
webserver file system.
- Users that have HighDPI scaling set to something
different than 100% can now select whenether or not
to force Java to use 100% scaling. To change it, go
to Edit -> Preferences -> Display. The checkbox
has the text Force 100% scaling when the OS uses
higher scaling.
- Fix error after deleting a Memory
and suppressing messages.