Release Notes for JMRI 4.7.5 release
Date: June 8, 2017
From: Bob Jacobsen
Subject: Test Release 4.7.5 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 fifth in a series of test releases. We expect this series to end in the next JMRI production release around the middle of 2017. (See the tentative release schedule) This test release is the last in the series to contain big, new features and changes; the next few tests releases (up until the production release) will contain just incremental fixes and improvements.
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.
Required Migration StepSince JMRI 4.7.4JMRI 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 if 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 have your own JMRI scripts to access a serial device, you'll have to update
their library references:
import gnu.iostatements will have to be replaced by
- 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
Known problems with this release
- None at release time
New warnings for this release:
- 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.
- 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.
Older warningsSee the JMRI 4.6 release note for warnings predating the 4.6 development series. These may be relevant to you if you're updating from an earlier version.
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
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
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
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 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.shIt 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\ HDIt 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 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 invaliderror, 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 are also still available from the SourceForge.net servers. Please let us know of any problems.
- OS X / macOS: https://github.com/JMRI/JMRI/releases/download/v4.7.5/JMRI.4.7.5.R187bd9e.dmg
- Windows: https://github.com/JMRI/JMRI/releases/download/v4.7.5/JMRI.4.7.5.R187bd9e.exe
- Linux: https://github.com/JMRI/JMRI/releases/download/v4.7.5/JMRI.4.7.5.R187bd9e.tgz
Changes since test release 4.7.4:The list of included commits is available from our GitHub code repository.
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.
- Some additional work on the multi-connection support. JMRI should be able to support mixed sets of cable connected (e.g. serial) C/MRI and network connected C/MRI by defining multiple connections.
- 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.
- 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.
- In JMRI 4.7.3, we added support for 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. That didn't work right, so we fixed it in 4.7.4, and fixed it again. But we now understand that it can never really work right, there's not enough information in the SE8c hardware messages. To prevent this from causing problems, we've removed that message-following, so the SE8c SignalHead in JMRI itself is now back to as it was in JMRI 4.7.2 and before. But in case somebody is willing to work through the imperfections to do something like this our their own layout, we've added a new jython/FollowSE8c.py sample script, along with a test case that shows you how it works.
- Sonnys Hansen provided updates to the Danish translation
- Egbert Broerse updated the Dutch translation
- 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)