Release Notes for JMRI 4.6 release
Date: December 17, 2016
From: Bob Jacobsen
Subject: Production Release 4.6 of JMRI/DecoderPro is available for download.
We are very pleased to announce that the 4.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 4.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.
Known problems with this release
If any of those effect you, please either wait for
JMRI 4.7.2, due out shortly,
or (once there's a fix for the problem) pick up a
development build installer
from
Jenkins.
New warnings for this release:
Older warnings
See the
JMRI 4.4 release note for warnings predating the 4.4 development series.
These may be relevant to you if you're updating from an earlier version.
(Since JMRI 4.5.6)
When a Digitrax DCS240 is the command station, JMRI throttles may not be able to take control
of a locomotive or consist in some cases if the DCS240 "expanded slots" (i.e. 400 slots) feature is in use.
Be sure to "dispatch" or "release" locomotives and consists from throttles which use "expanded
slots" before attempting to acquire the locomotive or consist via a JMRI throttle, as this may
enable JMRI to acquire the locomotive or consist. This problem can affect throttles which
use the JMRI WiThrottle interface and throttles controlled via the JMRI Web Server. This issue
is thought to be present in all previous versions of JMRI.
(Since JMRI 4.5.6)
DCC++ connections on Linux may not work.
(Since JMRI 4.5.6)
As part of fixing the
TMCC throttle issue,
the handling of TMCC preferences was changed. If you have a TMCC
connection configured, please go to the
"Defaults"
pane in the Preferences window and make sure that the
TMCC connection is selected for the appropriate device types.
(Since JMRI 4.5.2)
This and future releases of JMRI may not function on OS X if the Java SE 6 provided by Apple is installed. OS X
operating system updates routinely remove this version of Java SE 6. Please raise any issues concerning this on the
user's group.
To remove Java SE 6 from OS X, follow these steps (these steps assume
JMRI is installed in the folder /Applications/JMRI, if not,
adjust the following paths as needed):
- Open Terminal.app.
El Capitan only: Reboot into Recovery Mode by restarting your
Mac and pressing Cmd-R until the Apple logo appears. Once in Recovery Mode,
select Terminal from the Utilities menu.
- Run the command
/Applications/JMRI/PanelPro.app/Contents/Resources/uninstall-java6.sh
It can take
up to a half hour to complete. Wait for the message Removed Apple Java SE6.
El Capitan only: Run the command bash /Volumes/Macintosh\ HD/Applications/JMRI/PanelPro.app/Contents/Resources/uninstall-java6.sh /Volumes/Macintosh\ HD
It can take up to a half hour to complete. Wait for the message Removed Apple Java SE6.
- El Capitan only: Restart your Mac.
(Since JMRI 4.5.2)
Support for directly executing AppleScript within JMRI has been removed
due to changes in macOS and Java outside our control. If you require the
ability to use AppleScript, you may be able to add this capability on your
own by visiting JMRI
AppleScript Support, but please be aware that this may not work
on upcoming releases of macOS or Java.
(Since JMRI 4.5.1)
LocoTools, no longer supported since JMRI 2.10, has been removed from the Linux and OS X distributions.
(Since JMRI 4.5.1)
Internal turnouts and sensors need to have complete, individual system names.
The names "IT" and "IS" (without any suffix) are no longer permitted:
"IT12" is fine, but just "IT" is not. Most panel files that contain these should
automatically migrate them to new names when saved, but in some cases you might need to manually update them.
(Since JMRI 4.3.5)
When sharing a configuration between this release and JMRI 4.3.4 or older, the older version of JMRI will not
reflect changes in preferences, window position, table sorting, column order, or other user interface state. This is due to
changes in how user preferences and interface state are stored.
(Since JMRI 4.3.3)
You can now set the order of your startup items: If you're opening panel files, running scripts, etc as
the program starts up, there's a preferences pane that lets you easily set the order in which those happen.
If you've set the order manually (e.g. by editing configuration files) in the past, please check this
preference to make sure it's set the way you want.
(Since JMRI 4.1.2)
Jython has been upgraded to version 2.7.0 with the following potentially breaking changes:
- The decodeJmriFilename() function is no longer available by default. Use the FileUtil.getExternalFilename() method instead.
- The simple propertyListener object is no longer available by default. Create your own, following the examples provided in the jython folder in the JMRI distribution.
- jmri_defaults.py included in the JMRI distribution is no longer executed by default, but will be executed before any other Jython scipts if included in your User Files location.
- The default behavior of python.cachedir.skip is now true. If using a custom python.properties file, include "python.cachedir.skip=false" in that file.
- Certain Python scripts are too large to be evaluated in Jython. If a script fails with the
java.io.IOException: Mark invalid
error, set "jython.exec=true" in a custom python.properties file or rewrite the script to be less than 100,000 characters per file. Note that when using "jython.exec=true" it may be desirable to run the included script jmri_bindings.py as a startup action to emulate the evaluation environment used when jython.exec=false.
(Since JMRI 4.1.1)
Decoder definitions that use the "ivariable" form are now deprecated. Definitions
included with this release have been converted to the new form.
If you have decoder definitions with the older "ivariable" form, they will no longer
validate, but can still be used for the first couple of test releases in this series.
Please ask on the JMRI Users group
for help converting them, or just drop them and use the current definitions.
Download links:
Please use these links for downloading:
Links to the full list of changes from JMRI test release
4.5.1,
4.5.2,
4.5.3,
4.5.4,
4.5.5,
4.5.6,
4.5.7,
4.5.8
in our
GitHub code repository.
Hardware Support
Bachrus Speedo
- Fix issues with Speedo systems in recent versions of JMRI (#2027).
Digitrax
- Initial support for the DCS240, allowing you to configure it in the
preferences. This is just initial support: Many advanced features
are not yet supported.
- DCS240 OpSw31 description corrected in LocoNet Command Station Configuration tool where English language has been used.
Where the tool provides non-English language text, the translation may not have been completed.
- When DCS240 OpSw31 is "C" (closed), "metering of switch messages" is disabled,
and LocoNet switch messages are sent to the DCC track signal as quickly as possible.
- When DCS240 OpSw31 is "T" (thrown), the command station may slowly send switch request messages to the DCC track signal.
- Adds Digitrax DCS210 as a possible command station in connection, and
shows appropriate OpSw descriptions in the LocoNet Command Station Configuration
tool for a LocoNet connection configured as using a DCS210 command station.
Digi XBee
- The JMRI Digi XBee support now uses the official Digi XBee Library.
LocoNet
- Send direction and function changes even when JMRI thinks the value is unchanged.
(#1894)
- Balazs Racz updated the
OpenLCB lib
and associated JMRI code to
OpenLCB version 0.7.
- UI improvements in the CDI configuration dialog, such as collapsible sections, faster
scrolling and tabbed UI for repeated groups. This makes configuring nodes with large I/O
count or many repeated groups more convenient.
- UI improvements in the network view dialog: the nodes on the layout are sorted by
their node ID, and when available, the node Name and Description is printed in the
overview to better identify which tree branch to expand.
- Turnouts have a new feedback mode implemented: MONITORING. This mode allows turnout
change requests sent from other sources, such as fascia buttons or other JMRI computers
connected to the same layout to be respected in the JMRI Turnout's state. New turnouts
created with JMRI 4.5.6 or later will default to MONITORING feedback. Turnouts created
with older versions of JMRI or turnouts in panel XML files saved by older versions of
JMRI will be set to DIRECT feedback mode, and users of release 4.5.6 and above will have
to edit the turnouts one by one to set the desired feedback mode to MONITORING if they
wish to use the new behavior.
- Improvements in the standards compliancy of JMRI Turnouts and Sensors; these will now
advertise as Producers and Consumers on the layout, as well as respond to Identify
Producer and Consumer requests coming from other sources. These advertisement messages
will appear as a short surge of a large number of messages transmitted to the layout upon
panel XML loads if there are many Turnouts and/or Sensors defined in the tables.
- Turnouts (when configured for MONITORING feedback mode) and all Sensors inquire the
layout state upon startup, loading the panel file, or creating a new table entry, instead
of initializing to Unknown state. When a layout has multiple JMRI computers connected, a
newly started JMRI will load the layout state from an already running JMRI computer so
long as they have the respective Turnout and Sensor entries in both of their tables.
- Fixed bug that caused duplicate processing of packets when using the TCP/IP "Hub"
feature in the OpenLCB menu. This allows multiple JMRI computers to share a single CAN
adapter by secondary computers connecting to the Hub started by the JMRI with CAN
connection.
- Better error handling and reporting on Firmware Upgrade. The Supported Protocol list
now displays Firmware Upgrade for compatible nodes.
- Identification information such as Node name, version and protocol support
information is automatically reloaded when a node restarts, for example due to a Firmware
upgrade performed.
- JMRI now replies to Simple Node Identification Information requests coming from other
sources on the bus. This allows multiple JMRI computers connected to a single layout to
correctly see each other in their network view dialog.
- Miscellaneous standards compliancy improvements, such as fixes to JMRI replying to
Verify Node ID requests, and not sending messages with alias=000 to the bus.
- User interface improvements in the Configuration
dialog. The dialog will now use an advanced and much faster
algorithm to load the initial values of the configuration from
the hardware. Users should not need to use the "Read All"
button anymore. Changed values are now highlighted in similar
way as DecoderPro does. The configuration dialog opens
immediately and shows the progress as the XML data is
downloaded via the network. It is also possible to re-try
loading if the first load fails. A cache allows opening the
same dialog instantly for the second time.
- Fixed a software problem that lead to multiple issues when
CPU load is high, such as failed firmware downloads or
inability to open the configuration dialog. On some systems it
was enough to have the OpenLCB Monitor window open to trigger
the problem.
- Fix leaking threads from the OlcbConfigurationManager.
- Updates openlcb.jar to 0.7.11. Contains a softer inquiry and better.
- Allows multiple OpenLCB firmware upgrade downloads from a single HEX
Roco z21/Z21
- Added Support for Z21 RailCom messaeges through the reporter interface.
- Added Support to the Z21 Simulator to generate railcom messages based on the last 19 throttle messages sent to the simulator.
This mimics the behavior of the command station, which sends at most 19 addresses back at a time.
SRCP
- The SRCP layout connection can now handle more than one simultaneous connections.
SPROG
- Enable function keys on Sprog in programmer mode (#2027).
TAMS
TMCC
- Fixed the problem with
TMCC throttles not working.
As part of this, the handling of TMCC preferences was changed. If you have a TMCC
connection configured, please go to the
"Defaults"
pane in the Preferences window and make sure that the
TMCC connection is selected for the appropriate device types.
New / Updated decoder definitions
Digirails
- Egbert Broerse added support for the DR4018/24 decoders.
Digitrax
- Alain Le Marchand added support for the DH126T decoder.
ESU
- Some earlier versions of JMRI emitted lots of warnings while loading a roster entry containing certain ESU decoders.
This is now fixed.
- Added ESU Digital LED lighting strip with integrated Digital decoder
(#1742)
- Added various new models (Dave Heap):
- LokSound V4.0 M4
- LokSound V4.0 M4 OEM
- LokPilot V4.0 M4
- LokPilot V4.0 M4 MKL
- LokPilot Micro SlideIn V4.0 DCC
- LokPilot Fx Nano V1.0
- Scale Trains Tender Light
LaisDCC
- Claudio Capaccio of LaisDCC provided definitions for their family of decoders.
RR-CirKits
- Improvements to TowerMan and MotorMan definitions
SoundTraxx
- Updates for the Tsunami 2 decoders, including new models TSU-2200 and TSU-PNP
- Michael Mosher fixed sound selection for TSU-2200 and TSU-PNP models
(missing Bell and Prime Mover selections)
and fixed Lighting effect direction selection: CV57 & 58 bit 6 and 7
set to 1 permanently though not being in use.
- "Read type from decoder" should now correctly identify
individual Tsunami 2 and Econami models
(Michael Mosher/Dave Heap).
TCS
- Michael Mosher added definitions for the TCS WOW Steam V4
plus updates fro other steam versions and diesel ver3
- Michael Mosher updated some TCS Steam decoder definitions
ZIMO
- Mark Waters updated the Zimo MX644 and MX600 definitions
Dispatcher
- Jay Jantzen provided some improvements to Dispatcher
(#1652)
- New Restart feature for AutoActiveTrains.
(#1707)
- New Simulator Script for AutoActiveTrains.
(#1726)
- New Actions to Hold and Release specified signal.
(#1735)
- New flag to reload train(s) at Dispatcher startup.
(#1768)
Layout Editor
- Updated the Section code to set blocks' values instead of just memories,
needed when the new BlockContentIcons are used instead of memoryIcons.
(#1663)
- Fixed a problem with adding Train/loco icons to the panel
Localization
- Keywords for localization of Operations have been grouped to prevent duplicate work.
Translators please check your earlier work from a fresh repo.
- German translation of Operations has been expanded.
Operations
- New feature, you can now see and modify the track "Moves" that are used to determine
the order tracks are processed by the program during a train build. In the "Edit Location"
window under tools, select "Show Track Moves". To change the move count for a track, double
click on the "Moves" value in the table and enter a positive or negative number. Tracks with
the least number of "Moves" are processed first.
- Steve Todd fixed a bug with the JMRI Web Server Conductor where you couldn't properly
terminate a train that didn't have work at the last location in the train's route.
- Improvements were made to the Conductor and Yardmaster windows.
- Improved the RWE feature when the car's load is removed and the car is already at the
RWE address, the program will not set the RWE address as the final destination.
- Fixed a bug where the RFID tag selected wouldn't save from the car and loco edit windows.
- New feature for RFID users, the Cars and Locomotives windows now show the last
"Reported Location" and "Reported Date" when passing a reader.
- All tables in operations now save immediately when their size or order is changed.
- The car blocking for passenger cars no longer disappears after pressing "Save" in the
"Edit Car" window.
- Made some improvements to the train tool "Show Car Types Serviced".
- The train description will no longer write across the top of a Manifest header.
- Fixed a bug where a car's load would change when waited at interchange or yard
Panel Editors
- Panel Editor, Control Panel Editor, Layout Editor interfaces and the Add Entry-Exit (NX) Pairs
panel now have full i18n and a German translation.
Translators please review the new jmrit.display bundle keys.
(#1889)
- Fix errors preventing editing of sensor state labels (#2028).
- Dragging to and from sorted tables or Copy and Paste in sorted tables now operates correctly.
Control Panel Editor Palette
- No longer throws cast exception when a dragged item is dropped outside of a panel.
- No longer will hang when displaying a warning during a Drag and Drop.
- Inactive buttons removed from SignalMast panel. Panel displays icons when the mast row is selected.
- Text and item Attribute panels now show changes to margin, border, fixed width and fixed height in the preview panel
Control Panel Editor Shapes
- Fix bug of not loading or saving control sensor.
- Editing results are shown immediately when parameters are changed
- Editing Cancel button restores shape to previous settings.
Scripting
- Added Jython functions and examples for pulling JMRI configurations into a script.
(#1502)
- The DebounceSensor.py script was updated. Note that Sensor debouncing can
also be directly turned on in the Sensor Table now, too.
- Several sample scripts received necessary updates to work with the current version of the
JMRI code: AllocateRosterEntryToBlock.py, AutoDispatcher2.py, LocoSelectorDropBox.py, RobotThrottle2.py,
RobotThrottle3.py, RosterCreateExample.py, RosterCsvExport.py, RosterLoop.py, RosterMigrate.py, RosterMigrate2.py,
SampleWriteRosterAttribute.py, Zimo_function_programmer.py, Zimo_pseudo_programmer.py
- Scripts now have access always available "addressedProgrammers" and "globalProgrammers" objects
that provide replacements for the deprecated "programmers" object. Use of the "programmers" object will
log a deprecation warning. (#1932)
Signals
- Fixed an issue to set aspects in the Signal Mast Table using the combobox. Sorting rows or moving columns in the table is fully supported.
Signal Systems
- Updated B&O 2009 signal definitions to fix restricted aspect in some cases
(#1574)
- Fixed a problem occurring when a signal system references icons
in the local preferences directory.
- Greg McCartney provided a new set based on the B&O 1980 rules.
Signal Mast Drivers
Tools
Tables
Routes (Logix Routes)
- Egbert Broerse expanded the i18n (internationalization) of the LRoutes > Add LRoute pane
and fixed running Logix Conditionals under a non-English locale. Opening these after switching
locale may cause errors. Manually correct and save them to fix this for now.
(#1682)
Warrants
- Re-implemented the ramping code. Better handling signal and block occupancy speed restrictions
when they interact with user interventions.
- The "Halt" GUI command now ramps down and brings the train down to a stop smoothly.
- A "Stop" GUI command has been added. This is an EStop, similar to the old Halt command
that was an immediate change to speed 0.
- The "Resume" GUI command now does a ramp up rather than immediate restoration of former speed.
- Ramps will use as many blocks as they need to change speed. Previous ramp down code did not look ahead properly.
- Reminder: Having reasonable values for block path lengths and speed factors is vital for calculating ramp
start times.
- Additional messages of running status are displayed
- Double entry in the session log bug is fixed.
- Rouge entry into a warrant route now changes the icon color.
- Warrants can be started, ended and pass through Dark blocks.
- A bug when Calibrating a throttle speed factor in NXWarrants has been fixed.
- SCWarrants are converted to regular Warrants with a "No Ramping" flag set. Such warrants change speed as before upon entering
the approach block. Now they use the speeds specified by the signals rather than one hard coded value. The new "No Ramping" flag
may be turned off and on in the Warrant Editing window.
Web Access
- Added Json server support for blocks and layoutblocks.
(#1623, #1628)
- Client-side layouteditor panels now show actual track color, not just occupied.
(#1641)
- Occupancy-based coloring for drawn track has been turned off
(#1642)
- Improvements to the handling of SignalHeads and SignalMasts (#1825, #1830).
- The method by which system-specific actions are populated has been changed.
They should now be dynamically created depending on which system connections
are configured.
Miscellaneous
- The POSIX (Mac and Linux) launcher script has
been improved.
It provides much more flexibility for adding extra .jar files and setting options.
The algorithm for how much memory the program uses has also been improved.
- Egbert Broerse updated the French translation.
- Added startup action to allow a pause for up to five minutes in processing startup items.
(#1499)
- Tooltips in startup items show more information than can be shown in the table of startup items.
(#1505)
- Startup items that need a system connection can now be bound to a specific system connection.
(#1520)
- Sonnys Hansen updated the Danish translation.
- Many structural updates to the code as part of the new-series cleanup process.
If you have your own program based on JMRI, please check for newly-deprecated references.
- Some semi-automatic and manual cleanup of the HTML in the help files.
If you notice any broken formatting, please report it. Thanks.
- Fixed two spurious SRCP messages at startup.
- The
jmDNS library
used to find and connect to resources on the Internet (e.g. to allow
WiThrottle and Engine Driver to find JMRI) was updated to
jmDNS version 3.5.0.
- Sonnys Hansen improved the Danish translation
- Fixed problems with the formatting of many help pages
- Fixed an issue preventing JMRI from detecting a JRE on OS X (#1679).
- Fixed an issue preventing the JMRI launcher on Linux or OS X from correctly passing Java System Properties to JMRI (#1692).
- It is now possible to use portable paths in jmri.jmrit.Sound when using that class from a script (#1738).
- Tables now save their settings much more efficiently as they're closed, which should make closing a table window
much quicker on some computers
- Fixes to several crashes associated with starting up with older preferences, changing preferences (particularly connections)
and when configured hardware isn't present at startup.
- Fix issues on OS X preventing use of JMRI unless a JDK is installed (#1801).
- Fix issues preventing JMRI from running on macOS with JDK 9 (#1453).
- Fix issues attempting to play sounds from non-existant files (#1808).
- The InstanceManager now sends a notification on every change of a default object for a class,
instead of just the ProgrammerManager. (#1934)
- A Service Provider Interface (SPI) is now available for thrid party developers to directly add items
to the list of Startup Actions and Startup Buttons. (#1936)
- Fixed an issue where JMRI applications would silently fail to start if a Java Runtime Environment was not installed
on macOS instead of notifying the user. (#1943)
- To ease translations, many
commonly used property keys have been grouped so they need to be translated only once to be available throughout JMRI.
Translators, please update your repository and review the application for missed items.
(#1828)
- Logging Preferences in a file named "default.lcf" in the
settings directory take precedence over
logging preferences that ship with JMRI. The "default.lcf" can be copied from the JMRI installation as a
starting point. (#2448)
- Petr Šídlo provided a large update to the Czech translations of JMRI
- Added a new SignalFollower.py sample script
- Fixed the AmpMeter crash on Linux systems.
- The MS Windows launcher has had a number of updates including:
- a new method to calculate the maximum memory
- use the Windows look and feel as an initial default
- allow the classpath to be modified by either appending `--cp:a=CLASSPATH` or prepending `--cp:p=CLASSPATH`
- allow for default options to be specified in a `jmri.conf` file stored in `%userprofile%\JMRI`