Release Notes for JMRI 4.9.1 release
Date: July 23, 2017
From: Bob Jacobsen
Subject: Test Release 4.9.1 of JMRI/DecoderPro is available for download.
Notes:
This is a test release. Please post a note if you encounter any new or old bugs! And please back up your JMRI files before installing this, in case you want to go back to an earlier version.
This is the first in a series of test releases. We expect this series to end in the next JMRI production release around the end of 2017. (See the tentative release schedule)
Some of the changes involved are quite extensive. They may require a certain amount of experience before they are working well. Therefore, this test release should be considered experimental.
JMRI is now only available under the GNU General Public License. For more information, please see our copyright and licensing page.


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 Mac 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 byimport purejavacomm
statements. - More generally, any reference to
gnu.io
, e.g. a reference to a class likegnu.io.SerialPort
, statements will have to be replaced by a reference to the correspondingpurejavacomm
class.
- Any
Known problems with this release
- Since JMRI 4.9.1, fixed 4.9.2 JMRI 4.9.1 will sometimes refuse to create a new profile. This can hit when creating a new profile in addition to existing ones, or when creating a new profile as part of an initial install. There is, unfortunately, no workaround for this. Since it can hit new users, we recommend that completely new users not use JMRI 4.9.1, but rather should stick with JMRI 4.8. This has been fixed for JMRI 4.9.2. You can also pick up a development build installer in the meantime.
- Since JMRI 4.9.1, fixed 4.9.2 If you have very large panels (lots and lots of items), JMRI PanelPro can start to slow down. This has been fixed for JMRI 4.9.2. You can also pick up a development build installer in the meantime.
New warnings for this release:
Older warnings
See the JMRI 4.8 release note for more warnings predating the 4.9 development series. These may be relevant to you if you're updating from an earlier version.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.)
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. macOS operating system updates routinely remove this version of Java SE 6, but it may be reinstalled with other software programs. 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.
Download links:
Because of issues with this test release, we recommend that you download and install [JMRI 4.9.3](jmri4.9.3.shtml) or later instead of this one.Changes since Production release 4.8:
The list of included commits is available from our GitHub code repository.Hardware Support
CAN
- The CAN tools were updated for display and support of translations.
C/MRI
- The C/MRI tools were updated for display and support of translations.
DCC++
- Kevin Dickerson did some work on the DCC++ support structure
- Costin Grigoras added an option to allow the DCC++ TCP server to be started from JmriFaceless
Digitrax
- Added a jython/SendReceiveLocoNetPeerXfrMessage.py sample script for communication between two computers using LocoNet Peer Transfer messages.
- Traffic explanations in the LocoNet Console changed slightly to improve reading and allow localization.
ECoS
- The ECoS tools were updated for display and support of translations.
Lenz
- The Lenz tools were updated for display and support of translations.
- The Command Monitor can show translated descriptions.
Märklin
- The Märklin tools were updated for display and support of translations.
Roco
- The Roco tools were updated for display and support of translations.
New / Updated decoder definitions
BLI
- Michael Mosher updated BLI decoders.
Soundtraxx
- Michael Mosher updated some decoder definitions: add new CV from V1.5 Eco manual and TSU-4400 models.
ZIMO
- Peter Ulvestad fixed some spelling errors in decoder definitions.
Layout Editor
- Some of the text boxes for entering input (e.g. names of items to add) have been updated to selection boxes.
Panel Editors
- A problem with reading really old panel files (pre-JMRI 4.0) was fixed.
Resources
- Chuck Catania added some ATSF CTC icons.
Turnouts, Lights and other elements
- The Turnout Table now makes it clear(er) which turnouts can use the turnout locking feature and which Connections don't have it available.
- Improved the turnout locking GUI in the Turnout Table to make it clearer what's going on.
Scripting
- Added SensorGroupAutoItem sample script to handle the case of an "all-but-one" group. For example, if you have sensor inputs for the left and right positions of a CTC signal level, but not the center one, this will let you use an internal sensor for that position.
Signals
Simple Signal Logic
- SSL now has a "Restricting Speed" option that limits the fastest shown appearance to Flashing Red (Restricting). This can be useful in the entrance to a yard. A script can turn it on and off for e.g. permission to switch on a lead.
USS CTC Logic
- Added Route and Traffic lock capabilities..
Web Access
- Improved handling of roster entry IDs:
- URL-encode roster entry Ids in URL paths and only in URL paths.
- Accept URL-encoded roster entry Ids in request paths in the Roster servlet.
- Accept URL-encoded types and object Ids in request paths in the JSON servlet.
Internationalization
- CAN, Märklin, C/MRI, ECoS, Roco and Lenz tools were slightly updated and fully support translations (Egbert Broerse)
- Egbert Broerse expanded the German and Dutch translations
- Sonnys Hansen expanded the Danish translation
Miscellaneous
- Made some changes to how JMRI validates panel files to accept how AnyRail writes the files.
- Quite a bit of code that has been deprecated since JMRI 4.2 or before was removed.
- A problem with validating XML panel files created by XtrkCadReader was bypassed.
- USB support using the USB library has been updated to usb4java and a new USB browser added.