Release Notes for JMRI 4.7.4 release
Date: May 28, 2017
From: Bob Jacobsen
Subject: Test Release 4.7.4 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 next 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)
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.
Known problems with this release
- Since JMRI 4.7.3
The buttons to start the LocoNet Over TCP server
may not be set properly if the server
has already been started with the program (e.g. if the
preferences are set to start the server).
- Since JMRI 4.7.4
If the NCE Command Monitor window is open,
messages of the form
"ERROR - Unhandled (command/reply type); code: …"
will appear in the JMRI System console.
The NCE Command Monitor still seems to be functioning correctly.
If any of those effect you, please either wait for
JMRI 4.7.5, due out shortly after this one,
or (once there's a fix for the problem) pick up a
development build installer
from
Jenkins.
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 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:
- 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.
New warnings for this release:
- 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 the migration note above for steps you might have to take.
- Windows users only: this version only, fixed in JMRI 4.7.5, you
might have to manually remove a lib\jna-4.2.2.jar
file if it's present. If the program starts OK for you, don't
worry about this.
- 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 depending on their contents.
- The LocoNetOverTCP server has changes that may require users to take action:
- If you have set the JMRI Preferences to start the LocoNetOverTCP
server when JMRI starts, or you have selected a port other
that 1234, you need to go back to the Preferences window
and reconfigure that. The previously-stored preferences
won't work with this version.
- Scripts refering to
the class jmri.jmrix.loconet.loconetovertcp.Server need to
be changed to refer instead to
jmri.jmrix.loconet.loconetovertcp.LnTcpServer.
Older warnings
See 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 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 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.7.1
The LocoNet Server (the LocoNetRMI service; not the LocoNetOverTcp service)
in this version of JMRI doesn't properly interoperate with JRMI 4.6 or before.
The workaround is to update both client and server JMRI machines to the same
JMRI version. We expect this will be fixed in JMRI 4.7.5.
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
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.
Note that this release was made by a different process which is detailed
in its GitHub build history.
The
list of included commits is available from our
GitHub code repository.
Hardware Support
C/MRI
- This release has improved support for multiple C/MRI connections. 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.
Digitrax
- Contains a fix for the "Looping" behavior with
SE8c SignalHeads seen in JMRI 4.7.3.
LocoNet
- 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).
ZTC
- Added Support for the ZTC611 Command Station's internal USB connection
- Added a ZTC611 specific implementation of XPressNet Turnouts
New / Updated decoder definitions
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.)
Logix
- 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
- 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.
Panel Editors
- Fixed initial size and position of new Switchboards
Turnouts, Lights and other elements
- 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.
Signals
Signal Heads
- Contains a fix for the "Looping" behavior with
SE8c SignalHeads seen in JMRI 4.7.3.
This most commonly hit LocoNet systems, but as SE8c boards
can be used with any DCC system, it was a general problem.
Web Access
- Operations, Trains web page now auto-updates as trains are added, deleted or changed.
Internationalization
- Sonnys Hansen improved the Danish translation
Miscellaneous
- 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.