Release Notes for JMRI 4.8 release
Date: July 23, 2017
From: Bob Jacobsen
Subject: Production Release 4.8 of JMRI/DecoderPro is available for download.
We are very pleased to announce that the 4.7 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.8" 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.
Required Migration StepSince JMRI 4.7.4
JMRI was updated in JMRI 4.7.4 to use a new serial library. Depending on your exact
circumstances, you may need to do some migrations:
- If you are using JMRI on Linux or macOS / OS X and are updating from an older JMRI version,
you must open the JMRI preferences and make sure that the selections are
correct for your serial device(s). Be sure to save the changes.
In general, previous versions used serial device names like
"/dev/cu.usbserial-ABC123FG". This version will generally omit the prefix, and
use serial device names like "cu.usbserial-ABC123FG".
(If given the choice between a name starting with "tty" and one starting with "cu",
pick the "cu" one). See the before and after images to the right.
-
If you are using Linux and have previously used the "JMRI_SERIAL_PORTS"
option to make sure your serial device is visible to JMRI, you'll have
to change that to use the "purejavacomm.portnamepattern" option instead.
See the
JMRI Linux install page for more information.
-
If you use your own JMRI scripts to access a serial device, you'll have to update
their library references:
- Any
import gnu.io
statements will have to be replaced by
import purejavacomm
statements.
- More generally, any reference to
gnu.io
, e.g. a reference to a class like
gnu.io.SerialPort
, statements will have to be replaced by
a reference to the corresponding
purejavacomm
class.
Known problems with this release
New warnings for this release:
Since JMRI 4.7.6
If you're having trouble getting your DCC programmer to work, try
checking that the "Defaults" under "Preferences" are set to your
hardware system.
The reason: This version of JMRI (and all later) provides more options for
"default systems": If you have multiple sets of hardware attached, which
should be used for throttles, for programming, etc. JMRI tries to
guess the right settings for these when you upgrade to this version, but
apparently it sometimes gets that wrong (we haven't been able to track
that down yet). Setting them manually fixes any wrong guesses.
Since JMRI 4.7.5
This version of JMRI (and all later) writes a slightly streamlined
version of panel file contents.
Older files should still be readable by this version of JMRI,
but files written by this version may not be readable by versions
before JMRI 4.2 depending on their contents.
Since JMRI 4.7.5
The LocoNetOverTCP server has changes that may break scripts that reference it. Scripts refering to
the class jmri.jmrix.loconet.loconetovertcp.Server need to refer instead to
jmri.jmrix.loconet.loconetovertcp.LnTcpServer.
Since JMRI 4.7.3
This release will not start cleanly if installed over earlier versions of JMRI (the Windows installer ensures
this is not an issue). Remove the JAR files jackson-annotations-2.0.6.jar, jackson-core-2.0.6.jar,
and jackson-databind-2.0.6.jar from the lib directory within the previous installation directory to resolve
this.
Since JMRI 4.7.1
JMRI no longer supports the portable paths resource:
or file:
that
were deprecated in JMRI 2.13. When loading a panel, an error message will be displayed
if the panel contains a path that starts with resource:
and the panel will
not load until changed using an external editor. Paths starting with file:
cannot be automatically flagged because JMRI allows file: URLs.
Since JMRI 4.7.1
The LocoNet Server (the LocoNetRMI service; not the LocoNetOverTcp service)
in this version of JMRI doesn't properly interoperate with
JMRI 4.7.1 through JMRI 4.7.4.
It does work fine with JMRI version 4.6 or before.
If you encounter a problem with version compatibility, you'll see an error
message that includes "local class incompatible
".
The workaround is to update both client and server JMRI machines to the same
JMRI version.
Since JMRI 4.7.1
JMRI applications will not load a panel file that fails XML validation; an error will be
shown that should explains the error, allowing it to be fixed using an editor. (The
explanations remain a work in progress.) The usual cause of something like this is (imperfect)
manual editing of the file, but it can happen for multiple reasons. If you encounter this, try these things:
- Use a copy of JMRI 4.6 to
load and rewrite the file into the proper format;
- Or set your
preferences to execute the
"TurnOffXmlValidation.py" script
before JMRI loads your panel file;
- Or finally, ask for help fixing the file on the JMRIusers list.
It's a good idea to keep a copy of the original file as you work on this, just in case.
Older warnings
See the JMRI 4.6 release note for more warnings predating the 4.6 development series.
These may be relevant to you if you're updating from an earlier version.
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 MacOS / OS X if the Java SE 6 provided by Apple is installed,
but it may be reinstalled with other software programs. macOS
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 macOS / OS X, follow these steps (these steps assume
JMRI is installed in the folder /Applications/JMRI. If you've installed it in a different location,
adjust the following paths as needed):
- Open Terminal.app.
OS X 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.
OS X 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.
- OS X 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
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.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 note that the download links in this and future JMRI releases link to
Github servers.
If that doesn't work for you, the files up to 4.11.x are also still available from the
SourceForge.net servers.
Please let us know of any problems.
The full lists of changes in each of the preceding test releases
(4.7.1,
4.7.2,
4.7.3,
4.7.4,
4.7.5,
4.7.6,
4.7.7,
4.7.8)
are available in our
GitHub code repository.
DecoderPro
- DecoderPro now has two additional options for
how it handles CV reads and writes. These are set via the
Programmer section of the Roster preferences panel.
- "Allow caching when writing index CVs for read or write
operations": Some decoders require that specific values
be written to "index" CVs before certain other locations can be
read or written. QSI and ESU decoders use this extensively.
When doing a lot of reads or writes, for example an entire
decoder, the index CVs can end up being written with the
same value many times in a row. When selected, this
option allows DecoderPro to skip (save time on) writes
of the same index value that are otherwise redundant.
Don't use this (or use it only in combination with the
following operation) if you have reliability problems
writing decoders, as proper operation of this option depends on reliable writes.
More detail: A single bad write with this option off trashes
one CV; writing a bad index with this option off trashes the CV that was supposed
to be written and the wrong one addressed by the bad write,
but the write to the next CV in the sequence is OK due to the
redundant next write of the index; writing a bad
index with this option on leaves that badly-written index value in place, so writes a sequence
of bad CV values. Bottom line: If working with a complicated
decoder with lots of CVs, you need a reliable programming connection, see next option.
- "When possible, confirm CV writes by following this with a read":
When selected, DecoderPro will read each CV after writing it.
If the value doesn't match, it marks the write as failed.
If you're having intermittent trouble writing to a decoder, this
may improve reliability. If DecoderPro is never able to properly write,
this won't help; it only helps if the problem is occasional,
and retrying will get it right more often than not.
Some DCC systems will check for a "write acknowledge pulse"
from the decoder before declaring the write a success.
Those are almost as reliable as this, and much faster.
So if you're using one of those DCC systems, this might
not be needed.
On the other hand, if you're using a DCC system that
"writes blind", with no check, this might be really useful.
To tell if you have one of those, try writing CVs with
the locomotive off the track. If DecoderPro thinks the write
succeeded, then the DCC system is writing blindly, without checking.
This doesn't help (but doesn't hurt) if you can't read back
the decoder. Most DCC systems can't read during ops mode
programming, for example. Some command stations (Digitrax DB150)
can't read from the decoder. In those cases, this option
just asks the command station to write without reading back.
These options are stored with the preferences for future use. A new DecoderPro Roster window
will pick up new values of the options, without having to close and restart the program.
-
The Single CV Programmer now supports Ops Mode Accessory Programming
(Program Accessory Decoder on the Main).
This should work with most DCC systems*,
but only with Accessory Decoders that support this programming mode.
(Dave Heap)
*Please advise if your system does not work,
preferably by creating a
new issue on GitHub.
We may be able to help.
-
The Single CV Programmer now also supports:
- Ops Mode Accessory Programming (Program Accessory Decoder on the Main)
- Ops Mode Extended Accessory Programming (Program Signal Decoder on the Main)
(Dave Heap & Alex Shepherd)
Hardware Support
- Programming capability facades
are little tools that are used to handle things
like indexed CVs, special ways to write upper-address CVs not supported by a command station, etc.
Previously, these would have trouble recovering when they encountered multiple errors.
(This came up in the context of the time that the DCS240 command station takes to do writes,
which JMRI thought was an error) This has now been greatly improved.
- Turnouts now have a DELAYED feedback mode. In this mode, when you
command a turnout to move, it first goes to INCONSISTENT state for
a few seconds (to give the points time to move), before finishing up
in the commanded state. This is intended for cases where you don't have any
hardware to specifically read back point position from the layout.
Bachrus Speedo
- Added custom scale selection
C/MRI
- Much work was done on the reliability of the C/MRI support, fixing
bugs in both setting preferences and normal running.
- Having multiple C/MRI connections should now basically work,
although there may still be some issues when starting up
C/MRI tools from the Preferences, e.g. opening the C/MRI
Monitor automatically at startup. Work on all this is
proceeding.
Working now:
- Multiple connections, with the extra ones either identified by
a new letter ('K', etc) or a suffix ('C2', 'C3', etc). Each
connection has to have its own nodes defined via the preferences screen.
- The connections
can be of mixed type: Multiple serial, or multiple network, or
a mix of serial and network.
- Sensors, Turnouts and Lights can be defined in all the
C/MRI connections through the respective tables.
Not yet in this release:
- You can't (yet) configure start-up actions to work with
the 2nd and later C/MRI connections. E.g. if you open a
C/MRI monitor in the startup, it'll be using the 1st connection.
- Some of the labeling and documentation needs to be updated.
- The C/MRI menu and tools were updated for screen layout and translations (German and Dutch provided).
DCC++
- DCCppOverTCP support has been updated. The SEND/RECEIVE prefixes between
host and client have been removed. New code is backward compatible with
old (4.6 or previous)
- Fixed a bug in DCCppOverTCP throttle message translation.
- Fixed a bug in the <s> command response
- Fixed a problem loading and storing Sensors to panel files.
Digitrax
- When a JMRI program is configured to use the DCS240 as a standalone programmer, upon program exit the
DCS240 will be re-configured as a LocoNet interface. This allows other LocoNet devices to access the
DCS240 service-mode programming track after the JMRI program is closed.
- Bob Milhaupt improved the handling of the LocoNet-specific programmers for
the SE8C, PM4 and BDL168
- The Digitrax DCS240 command station sometimes takes a long time to write CVs
It's thought that this is happening because it's doing a read-after-write to ensure
the right value was stored in the right place. In any case, it takes so
long that JMRI was timing out and and retrying while waiting for it to complete.
This has now been improved.
It's still slow, excruciatingly slow if writing indexed CVs, but the timing is properly handled.
- The DS64 configuration tool now has the ability to configure the addresses for the
turnout outputs, and to configure the DS64 "routes".
- The LocoNet over TCP server has been refactored with the following changes (#3498):
- The server can now be started automatically using the Startup preferences.
- Server preferences are set in the application preferences window.
- The server classname has changed to jmri.jmrix.loconet.loconetovertcp.LnTcpServer
(any scripts referencing the server will need to be changed).
- The LocoNet Download Firmware tool has been updated to report an error when reading a
firmware download file which is for a device which requires special LocoNet message timings
which are not supported by this tool. Using the wrong protocol would corrupt the device's
firmware and require factory repair of the unit. This change prevents this tool from
corrupting the firmware of devices including the DCS210, DCS210, DB210, DB210-Opto, and DB220.
The Digitrax program DigiIPLII.exe may be used to perform firmware updates for these devices.
- The LocoNet Download Firmware tool has been updated to provide slower timings which
improve the success-rate of firmware updates, including the UR92. The tool was also improved
to prevent other GUI operations from inadvertently interrupting a progressing firmware update.
- LocoBuffer, LocoBuffer-II, and LocoBuffer-USB connections may be configured as "Standalone LocoNet"
connections.
- LocoStats Monitor was corrected to display only "interface status" LocoNet messages.
MERG CBUS
- Fixed a crash when printing
- MERG tools were updated for screen layout and translations (German and Dutch provided).
Roco z21/Z21
- Paul Bender fixed an addressing problem with Roco Handheld throttles.
- Paul Bender improved the Z21 support.
SPROG
- The SPROG command station code has been updated to fix an issue whereby users had observed
very slow packet update rates on the rails causing locos to become unresponsive.
- The SPROG tools can be fully translated
ZTC
- Added Support for the ZTC611 Command Station's internal USB connection
- Added a ZTC611 specific implementation of XPressNet Turnouts
New / Updated decoder definitions
-
Programming of Accessory Decoders on the Main
(Accessory Decoder Ops Mode)
is now possible, if supported by the decoder.
You will need to configure your definition to enable this, as per
this link.
Some limitations remain:
- There are no progress messages in the status bar.
- For multiple CV writes, programming may continue for some time after the "OK" appears.
- This has been tested with NCE and SPROG systems. Some DCC systems may need extra code,
please advise if your system doesn't work.
- Some accessory decoders do not cope well with closely spaced commands
and may miss changing some CVs with "Write All" or "Write Changes".
- Wayne Geary provided a number of spelling fixes that covered a number of decoder files.
- The
programming capability facade
for handling indexed CVs has been improved to reduce the number of times that
it has to write values to the "PI" and "SI" index CVs. Some decoders require that e.g.
you write a value to CV31, then another value to CV32, then finally access the specific
CV you're looking for. This can take a long time, especially when using a command station
that writes slowly (see comment about DCS240 above)
The indexed CV support has been updated so that it can skip writes when the previous
operation was to an indexed CV with the exact same indexed values, and the command
station didn't report any errors. This speeds things up greatly (can save over an hour when reading
an ESU LokSound V4 decoder with a DCS240).
This option is under user control, see above, and defaults to off.
If a decoder cannot do this, e.g. the index values really do have to be written every time,
that should be signaled by setting "skipDupIndexWrite" to false in the decoder definition,
see the
documentation page.
-
Programming of both Accessory & Signal (Extended Accessory) Decoders on the Main
(Accessory Decoder Ops Mode)
is now possible, if supported by the decoder.
You will need to configure your definition to enable this, as per
this link.
(Dave Heap)
Arnold
- Alain Carasso fixed a missing consist problem with the Arnold 81210 decoder definition (#2938)
BLI
- Mike Mosher updated some BLI definitions
Digitrax
- 21MTC HO: DH166MT, SDH186MT, SDXH186MT and Kato N scale: SDXN146K1E, SDXN146K2 and SDXN146K4 definitions added by Marc N. Fournier, completed by Alain Le Marchand (#3057)
Doehler & Haas
- Ronald Kuhn added/updated definitions for several decoders (#2736):
- SD10
- SD16
- SD18
- SD21
- SD22A
- FH05B
- DH05
ESU
- Dave Heap made the following changes:
- Added the ESU SwitchPilot series.
- Added new Product IDs.
- Added Heavy Load and Coast Mode logical functions as per latest firmware for the soon-to-be-released Full Throttle steam projects.
- Added Drive Hold (Logical Function) for LokPilot. (Dave Heap)
- Added/updated some models and Product IDs. (Dave Heap)
Hornby
- Dave Heap made the following changes:
- Added the "Hornby TTS 9F 2-10-0".
- Improved Hornby model identification.
-
Replace the incorrectly named "Hornby TTS A4 4-6-0" definition with "Hornby TTS A4 4-6-2".
("Update Decoder Definitions" from the "Actions" menu will fix existing roster entries.)
Kuehn
- Ronald Kuhn updated definitions for the N45 and 5Moto decoder familes (#2736)
Lenz
- Alain Carasso fixed the missing function map pane for older Lenz Silver decoders (#2873)
TCS
- Michael Mosher updated some TCS WOW definitions
SoundTraxx
- Added OEM decoder definitions for some PIKO G scale steam locomotives (Marc Fournier #2716)
Viessmann
- Added support for the 4557, 4558, 4559 and 4960 decoders (Alain Le Marchand #2842)
ZIMO
- Ronald Kuhn added the MX681 and MX685 decoders (#2736)
- Ronald Kuhn updated German translations for several Zimo decoders (#2736)
Dispatcher
- Modify auto allocation operation of Dispatcher to allow overriding the default
practice of allocating no more than three sections in front of the train - this is
configurable when creating a train.
The override allows Dispatcher to allocate all the way to the designated end
block barring other criteria such as occupation. (Jason Janzen)
Layout Editor
- George Warner improved the handling of the Turnout circle to make it easier to hit. (#2851)
- Sonnys Hansen improved the Danish translation
-
New Options menu items:
-
Highlight Selected Block -- Use the alternate track color to verify track component block assignments.
-
ToolBar
-
ToolBar Side -- Position the tool bar on top (default), left, bottom and right. There is also a Float option which creates a toolbox that can be moved anywhere on the screen.
-
Wide ToolBar -- Force the top and bottom tool bars to use the wide mode which may result in horizontal scroll bars.
-
Drop Down List Display Order -- Select which names (user and/or system) to use for drop down combo boxes. This will affect the sort order. Changes will take effect the next time you start PanelPro. Note: This feature is not completely functional yet.
-
Tool bar changes:
-
Mutually exclusive checkboxes have been changed to radio buttons. Related fields are enabled as needed.
-
All text fields, except for text labels, have been changed to drop-down combo boxes with appropriate content, such as sensor names for the Sensor Icon.
-
Floating ToolBox:
-
Tabs are used to group related toolbar items.
-
Clicking on the Close button hides the ToolBox. Use the Window menu to make it visible.
-
Clicking on the Minimize button creates an icon on the operating system task bar.
- Dave Sand fixed
an issue with duplicate block connections when edge connectors are used.
- George Warner improved the rendering of rotated text.
Logix
- Name selection options — Two new methods for
selecting names for "State Variables" and "Actions"
have been added. Choose the desired option using the Logix Table
Options menu:
- Use Traditional Pick Lists — The default option uses a
text field where the system or user name is entered, such as a
turnout or sensor. This method also provides a Pick List window
with tabs for each type of object. Drag a name from the pick list
and drop it on the name field.
- Use Single Pick Lists — This option also uses a
text field, but the Pick List only displays the names for the
current object, such as sensors. Clicking on a name in the
Pick List will automatically copy the name to the text field.
- Use Combo Name Boxes — The Combo Box option changes
the text field to a drop down combo box. Clicking on an item
selects the name.
- Conditional Browser — A Browse option has
been added to the Select menu for each Logix in the table. Selecting this
entry will open a window that contains a formatted list of
the conditionals contained within the selected Logix.
- The Logix help documents have been updated.
- Logix conditionals are now directly related
to a parent Logix. When an existing XML file is
loaded, any conditional references
are automatically converted. A review of the
system console for any messages is recommended. There
are two possible messages:
- Conditional has no parent Logix
- Conditional is not in the Logix index
Both of these were caused by errors in previous versions
or manual changes to the panel xml file. After saving the
xml file, the errors will not occur.
Use Help >> System Console... to
display the system console.
- When creating a conditional reference, the input
field has been replaced by two drop down combo boxes.
The first one is used to select a Logix and the
second one to select the Conditional within the
selected Logix.
Operations
- The Timetable sorting order can now be readjusted if needed.
Simply reorder the table and the next time you open the Timetable
window, the table order will be restored.
- Train and route departure times can now be set to one minute intervals. Previously, the
menus only allowed departure times to within five minute intervals.
- The option to make backup copies of manifests now also makes backup copies of switch lists.
- Some improvements to the UK locale. Fixed several references to "cars" rather than "wagons".
- Improvements to the Route windows. Now if a route is assigned to a train, and a train is built, you won't be
able to modify the route until the train is either reset or terminated.
- Fixed some train manifest "time" reference bugs where the option to use 12 hour format was ignored. Also fixed
a couple "time" bugs in the CSV file generation. Thanks to Dan Foltz for bringing these to our attention.
Panel Editors
- Bug that disabled operation of zoomed multisensors is fixed.
- Egbert Broerse added a new type of panel, Switchboards.
They provide a grid of buttons to control turnouts, lights or sensors. Existing items will show their current state and allow you to toggle their state.
This first edition includes German and Dutch translations.
- Fixed initial size and position of new Switchboards
- George Warner improved the rendering of rotated text.
Roster
- Proper display of new Roster Groups in the DecoderPro main window was fixed.
- The last modified date for Roster Entries can be correctly sorted. In some cases,
the Roster Entry may need to be opened and saved again for this to work.
- Roster Entries are now saved with ISO 8601 formatted dates.
Turnouts, Lights and other elements
- The pane to create new objects was modernized, with tooltips and a handy JSpinner to set the number of items to add (see the Turnout Add/Edit help, Egbert Broerse).
- The Cmd column in the Turnout table, showing Closed/Thrown, was renamed State to align with the other tables.
- Egbert Broerse added the option to display the current state of Turnouts, Lights, Sensors and Blocks as graphics instead of text.
It can be enabled in the Preferences > Display > GUI tab.
- Turnouts now have a DELAYED feedback mode. In this mode, when you
command a turnout to move, it first goes to INCONSISTENT state for
a few seconds (to give the points time to move), before finishing up
in the commanded state. This is intended for cases where you don't have any
hardware to specifically read back point position from the layout.
Scripting
- Added "TurnOffXmlValidation.py" sample script to
turn off validation when reading XML (panel) files
- Add two new script-based tools
CombineTurnouts and
CombineSensors
for mapping a single Turnout or Sensor onto multiple pieces of hardware.
Includes test routines which can serve as further examples.
Signals
- There are new
SignalFollower.py (for SignalHeads) and
SignalMastFollower.py (for SignalMasts)
that lets you have one mast or head follow another's state. This can be useful,
for example, if you have a repeated signal on the fascia.
Signal Systems
Signal Heads
- In the Signal Heads table, pick any of the valid Appearances from a combobox instead having to follow a fixed order.
This change aligns the interface with the Signal Mast table. For developers, this interface element is reusable.
- The panes to add or edit a Signal Head were updated, with more tooltips and (translatable) warning dialogs.
Now uses JSpinners to set IDs for a DCC Head.
- The function of Turnouts in use as outputs for a Signal Head are now stored as localized Comments in the Turnout table.
Existing comments are retained until they are manually deleted, after which a change in outputs will be stored.
- After adding a new Head, the Name fields on the pane are emptied to help prevent using the same name again and receiving an error.
- Adding a Bachmann Acela Signal Head now requires an active system connection to guarantee the proper ID.
- The intention of the Home/Distant choice for a MERG head is explained in a clearer label and the items to choose from are adaptable per language.
- We've added a new
jython/FollowSE8c.py sample script,
along with a
test case
that shows you how it works. You can work with this if you want your
SE8c Signal Heads
listening to the layout and (attempting to) follow messages that are
happening there, so that if something other than JMRI changed
the SE8c-shown color, the JMRI icon(s) would follow.
Signal Masts
- Output Matrix Signal Mastst are stored as a separate class in your configuration. Existing masts are automatically updated once resaved.
- Per user request, the Output Matrix Signal Mast connection can be configured using up to 6 outputs instead of 5.
- Editing of Signal Mast Logic from the Signal Mast Table has been improved. The Signal Mast Pairs panel refreshes to immediately show newly created source-destination pairs. The lists to set up Control items and their Conditions now look and operate like real comboBoxes.
Signal Groups
- Configuring Signal Groups from the Signal Group Table has been fixed and a German translation added. The underlying code and xml were cleaned for readability and internationalization.
NX Entry/Exit Logic
- Andy Brown and Peter Ulvestad fixed a problem with storing multiple NX pairs
USS CTC Logic
Warrants
- The look ahead problems of a Warrant are fixed. Paths of routes are
maintained automatically. Trains resume running their scripts automatically
when signals or rouge occupations are cleared ahead of them.
- Warrants normally grant rights of track access solely to only one train.
It now is possible to allow several warrants to share portions of their route.
A 'Clearance to Share Route' checkbox has been added for this.
- The NXWarrant window now is populated with defaults configured in Preferences.
Users depending on the default 'throttle speed factor' may notice
a difference in train speeds when trains respond to track conditions.
Use of speed profiles and input of distances of block paths enables more
precise calculation of train movements.
- A 'Fast Acting' warrant has been added that makes instant speed changes
upon entering an approach block. This warrant type also shares routes.
- The Create/Edit Warrants help file was updated to explain the "Share Route" and "Don't Ramp" options.
- Implementation of these options was completed.
- A bug preventing restarts of cleared occupancy was fixed.
- Warrants uses the RosterSpeedProfile whenever possible to get track speeds, distance traveled and time of travel.
If a speed profile was created using measurements from one direction only, data requested for the other direction
is unreliable. This affects NXWarrants ability to generate a throttle command script. If multiple error messages are
posted to the console from the RosterSpeedProfile it may be preferable to delete the Speed Profile for that locomotive.
When no speed profile is available, warrants uses the 'throttle factor' to determine track speeds, distance traveled etc.
Web Access
- New feature to upload new or updated Roster Entry xml files and images. At top of existing Roster page.
- Operations, Trains web page now auto-updates as trains are added, deleted or changed.
Internationalization
- Expanded translations in
- Catalan (Joan de Castro)
- Danish (Sonnys Hansen)
- German and Dutch (Egbert Broerse).
- Starting JMRI after changing Locale (language) in Preferences > Display gives a more informative warning in the Console.
- Print outs of roster reports from DecoderPro were updated by Egbert Broerse to use translatable headings (don't translate the word 'CV')
Virtual Sound Decoder
- VSDecoder Manager can now be auto-launched at startup through preferences.
- New location for sound sets was added at https://github.com/JMRI/vsdecoder.
- New steam engine sound set Class64.vsd was added (provided by Klaus Killinger).
Miscellaneous
- For those connections which have the ability to monitor the bus traffic, the
feature to save the monitor data to a file has been improved. If the tool is
unable to access the log file, a dialog box will appear to inform the user of
the problem. Monitor log files will default to be placed in the configuration
profile directory, where in some cases, previous versions of JMRI could attempt
to place the log file in the program directory. As before, the user may select
a directory other than the configuration profile directory for storing the
log file. This improvement affects the monitoring tools for many connection
types.
- JMRI applications will not load a panel file that fails XML validation; an error will be
shown that explains the error, allowing it to be fixed using an editor.
(#2719)
- JMRI no longer supports the portable paths
resource:
or file:
that
were deprecated in JMRI 2.13. When loading a panel, an error message will be displayed
if the panel contains a path that starts with resource:
and the panel will
not load until changed using an external editor. Paths starting with file:
cannot be automatically flagged because JMRI allows file: URLs.
(#2719)
- If a connection fails to initialize correctly, startup actions will not be run. An error
message will be displayed reading "Unable to run startup actions due to earlier failures."
(#2799)
- The WiThrottle window can now be resized so that when several client devices are
connected, it's possible to adjust the list to see all of them without needing to scroll
(#2857)
- Added some additional tools for decoding and displaying NMRA DCC packets to the
NmraPacket class.
- Added
support for reading older panel files
that use deprecated conversion classes
- Behind the scenes, a lot of error handling and code documentation was added.
- Klaus Killinger improved the sound support.
- User Names entered by the user are checked for spaces at the start and end before they are applied.
We expect this will prevent some hard to spot errors.
- The naming scheme for JMRI builds has changed slightly. Build metadata (the building user, build date/time,
and git revision at time of build) are now deliniated using plus (+) signs instead of hyphens. The build
date/time is now ISO 8601 parsable. (#3253)
- The library used to identify connected systems on Windows has been updated. Although this should have no
impact, scripts that accessed the Windows Registry using the WinRegistry should be updated to use Java Native
Access. (#3353)
- This version of JMRI (and all later) writes a slightly streamlined
version of panel file contents.
Older files should still be readable by this version of JMRI,
but files written by this version may not be readable by versions
before JMRI 4.7.4 if they contain definitions of Blocks or OBlocks.
- This version of JMRI uses a new library to access serial ports, including
USB serial ports. This is a major migration for JMRI, so
please let us know if you encounter any problems connecting to
your layout. See above for some steps you will have to take to
update settings in the preferences.
- This version writes a slightly more verbose version of
panel files to (attempt to) have them readable all the
way back to JMRI 4.2. (JMRI 4.7.4 wrote files that
could only be read by JMRI 4.7.4 and later)
- Improved the speed of loading panel files with lots of Sensors, Turnouts or Lights.
- Fixed some links in the help pages