Release Notes for JMRI 4.4 release
Date: June 30, 2016
From: Matthew Harris
Subject: Production version 4.4 of JMRI/DecoderPro is available for download.We are very pleased to announce that the 4.3 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 version 4.4" available for download today.
Known problems with this release
- None at release time
New warnings for this version:
- None at release time
Warnings:See the JMRI 4.2.1 release note for older warnings that may be relevant to you if you're updating from an earlier version.
LocoTools, no longer supported since JMRI 2.10, has been removed from the Linux and OS X distributions.
When sharing a configuration between this version 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.
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.
The DispatcherPro, JMRI Demo, and SignalPro applications are no longer shipped in distributions. Use PanelPro in lieu of these applications.
The internals of the Layout Editor have been reworked a bit. Please keep an eye out for any changed behaviors.
Please use these links for downloading:
Mac OS X: https://sourceforge.net/projects/jmri/files/production%20files/JMRI.4.4-R1ccf76b.dmg/download
Changes since production release 4.2.1:
Help for setting up JMRI with your OS and Java version as well as setting general preferences is available as Setup Help, including a short FAQ section, so application help pages can focus on the functions in each part.
Support for ARM processors running in 64-bit mode (aarch64) has been added
- This release includes fixes for release 4.2 and earlier
- DCC++ crash when starting with the Base Station not attached has been fixed.
- A problem that prevented use with the Digitrax PR2 has been fixed.
- Fixed filtering in the LocoNet monitor
- Steve Rawlinson fixed a problem with multiple throttles.
- The Digitrax DB150 Empire Builder command station uses a single output for powering both the main track and the programming track. JMRI is supposed to turn track power back on after doing a programming track (Service Mode) CV write, but it was also erroneously turning track power on after going an Ops Mode CV write. This is now fixed: Power on (GPON message sent) only happens after a service mode CV write. Note that JMRI does not turn track power on after a CV write that ends it in an error; this is the same behavior as before.
- Steve Todd and Steve G. fixed an error in the Loconet Monitor that would cause exceptions to appear if Sensor/Turnout/Reporter usernames were empty
- Fix error preventing emergency stop in 14/28 speed step modes (Steve Rawlinson / 1185)
- Fixed a problem with PM42 addresses greater than 9.
- Fixed a problem preventing the combination of an NCE-USB adapter with the PowerPro, SB3 or SB5 Smartbooster from doing ops-mode (on main) programming.
- Fixed a problem preventing MERG Concentrator serial connections from being used.
- Throttle support now uses Z21/z21 specific XPressNet messages and replies.
- Turnout support now uses Z21/z21 specific XPressNet messages and replies.
- Set Broadcast Flags for XPressNet messages. This causes the command station to generate the expected replies.
- Add Configuration tool to the Z21 Menu. This allows checking and setting the Z21's Broadcast flags, and displaying the serial number, hardware version, and software version.
- Andrew Crosland fixed a problem with ops mode programming packet bursts through the SPROG command station. Added a delay between ops mode packets and also handle the case where there is no free slot available for the packet, by reporting a timeout back to the programmer.
- Andrew Crosland modified SPROG command station support for a higher packet transmission rate. Added new connection methods for Pi-SPROG Raspberry-Pi hardware.
- JMRI's SRCP server implementation now supports throttles
- Paged access to TCS decoders could sometimes overrun the power-on/power-off cycle. Fixed.
- Greg McCartney provided a definition for the Norfolk and Western 1981 rulebook
- John Lang updated the NYC signal definitions
- (jkilsby) Background made transparent for icons for Danish Signals.
- Added low mast appearances to Basic signal system (mstevetodd / #1080)
- Steve Todd improves the contents of and icons for the Basic signal system
- Egbert Broerse provided updates to the ProRail 1954 system
- Updated B&O 2009 signal definitions to fix restricted aspect in some cases (#1575)
New / Updated decoder definitions
- The default Programming mode for any particular DCC system is now based on the order listed in the Java code. NCE and SPROG systems have been updated to default to Direct modes. Other systems can have the default priority order changed on request.
- The handling of decoder custom, replacement and empty panes has been improved. (Dave Heap)
- Identify & Read Type fall back to Paged Mode if the selected mode fails. (Dave Heap)
- HTML can now be used in variable labels. It can already be used in pane text and tool tips. See Advanced Decoder Definitions. (Dave Heap)
- Added the ability to specify non-key states used by some decoders to control outputs, such as Stopped, Moving, Forward, Reverse and Sensors. For details see the Function Map page. (Dave Heap)
- Fixed a problem that caused decoder definitions that have constants in Function Maps to fail to open in V4.3.5. (Dave Heap)
- Improvements to the "validation" checks for decoder definitions. A couple false positives fixed; check that some numerical fields really do contain numbers.
- Previously, when loading an existing roster entry, DecoderPro just loaded the CV values. This in turn loads the Variable values as the CVs change. Because of DP's qualified-variable support, some Variables are not connected to specific CV contents at load time; they get the wrong values, and hilarity ensues. (First pointed out by Dick Bronson) Updated so that JMRI loads the Variable values from the file (they've been stored all along), then loads CV values as before.
- The identification process for Hornby decoder models now includes the value of CV 159.
- Alain Le Marchand added three steam and one diesel decoder definitions
- Michael Mosher updated the BLI Diesel P3 definition
- Fixed missing pane issues with BLI Paragon 2 Diesel definition. (Dave Heap)
- Alain Le Marchand improved how Digitrax Series 5 and Series 6 decoders are identified
- Alain Le Marchand added the DH126MT definition (#1582)
Doehler & Haas
- Pierre Billon updated the SH10A decoder definition, improved SUSI support, and made other updates
Dave Heap made the following changes:
- Re-factored the LokSound V3.x definitions to remove three custom panes and moved those items to the Function Map pane.
- The ESU decoder file panes have been reorganised in line with better practice.
- Additions to LokSound Select L, including the ESU Smoke Unit and SUSI.
- Fixed the incorrect CV number for ESU Estop on speed step 0.
- Added the LokPilot Nano Standard V1.0.
- Added new Product IDs for some new LokSound Select hardware versions.
- Fixed Vstart, Vmid & Vhigh value ranges for various ESU decoders.
- Added ability to use CV59 for decoder product identification
- Standard+ V2 NEM652 10231-02 added (Alain Carasso / #1169)
- Alain Carasso added version checks to the Lenz Plus decoder definitions (PR #1267)
- MRC 1961 - Sound Decoder for Model Power N-scale Pacific/Mikado added (Alain Le Marchand / #1105)
- MRC 1750 - Walthers GP15-1 HO added (Alain Le Marchand / #1140)
- MRC 1825 - Athearn SD45/60 HO improved (Alain Le Marchand / #1140)
- Alain Le Marchand improved the handling of CV29 in the MRC 1825 definition
- Change acceleration and deceleration range (CVs 3 & 4) to 0-254 for non-silent drive decoder families. (Dave Heap)
Norsk Modelljernbane (NMJ)
- Norsk Modelljernbane (NMJ) Topline Skd 224 decoder added (Lolke H Bijlsma / #1085)
- New NMJ B3 and B7 series DCC light board decoders added (Lolke H Bijlsma / #1291)
- Dick Bronson updated the Watchman and Towerman definitions
- Alain Le Marchand fixed the enum order for CV123 Exhaust Select on the Econami
- Michael Mosher updated the Econami definitions from the 1.3 manuals
- Soundtraxx was added as an OEM for the Athearn RTR SD40
- Michael Mosher added definitions for the Econami 200 and PNP decoders
- Marc Fournier added new EMD GP38-2 and EMD GP40 models
- Michael Mosher contributed Tsuanmi2 Steam, Diesel and Electric locomotive decoder definitions
- Alain Le Marchand corrected the Econami Steam definitions (#1496)
- Michael Mosher has updated the Tsunami 2 definitions with new models TSU-2200 and TSU-PNP (#1563)
- Michael Mosher updated the TCS WOW Diesel decoder definition
- Michael Mosher updated the WOW Diesel and Steam definitions for V4 decoders (#1510)
- New NMJ B3 and B7 series DCC light board decoders added (Lolke H Bijlsma / #1291)
- Updated Shine Plus Light board decoders to include the new NMJ B3 and B7 DCC light board decoders (Lolke H Bijlsma / #1291)
- tOm Lokommander Micro - added (Lolke H Bijlsma / #1109)
- tOm Lokommander Mini - added (Lolke H Bijlsma / #1109)
- Alain Le Marchand added the Viessmann 5240, 5241, 5244, 5245 decoder definitions
- Mark Waters fixed errors in Lighting output Behavior in CVs 127 to 132 for Zimo decoders
- Mark Waters updated the Zimo MX633 and MX634 decoder definitions
- Mark Waters updated files to hide the Version 34 decoders as the v34 updates are included in the v33 files with qualifiers.
- Mark Waters updated files to fix dimming mask meanings inverted, as reported on user group.
- Mark Waters provided new decoder definitions for the Zimo MX618 and MX622 decoders
- Mark Waters added new and updated files adding new ZIMO decoders and additional productIDs for existing decoders
- Mark Waters provided updated definitions and a Sound Sample selection pane for the MX640, MX644, MX645, MX646, MX648, MX648+, MX658, MX695, MX696 and MX697V decoders.
- Nigel Cliffe provided a definition for the new MX600 decoder (PR #1302)
- Knut Schwichtenberg provided a definition for the FREDi SV programming
- New feature to save all train manifest created by the program. See "Options" under tools in the "Settings" window. Useful when you need to review an old train manifest.
- New feature for classification / interchange tracks, you can now specify that only cars with final destinations are accepted by the C/I track. See "Track Destinations" in the operations help for more information.
- Improved manifests and switch lists with regards to cabooses and cars with FRED that are swapped during a train's route. Previously the caboose wasn't listed at the end of the train, but where in the route it needed to be blocked for a proper set out, now correctly listed at the end of the train.
- Export cars and locomotives now includes an "Out of Service" remark under the column "Miscellaneous".
- The "Show Schedules by Car Types and Load" window has been enhanced by allowing all car types and loads to be selected. Selecting both will give you a summary of all schedules that are available.
- New feature, you can now label a locomotive as a "B" or booster unit. B units are never assigned to a train requiring a single loco. B units should never appear as the lead loco in a manifest or switch list. "B" units are configured by model name.
- The locomotive model name has the "hyphen" feature where the program won't print after a hyphen followed by a left parenthesis.
- More build report enhancements. Including a check to see if any cars or locos in staging have been assigned to a train that isn't the one being built.
- The "Routes" window now shows the maximum train length in each route.
- You can now sort and print your trains by their description.
- If "Auto Save" is enabled, the program will automatically save your files when you close the program or the Trains window. You will not longer get a prompt to save the operation files.
- Json manifest files are now saved in their own directory called "jsonManifests". These files are used to create the operation web manifests.
- Fixed a problem where the program didn't use the road or model specified in the build options for locomotive changes in a train's route, and the option "Build loco consist from single locos" was selected.
- Fixed a minor problem with train icons animation when there was a locomotive change in a route, and two or more locomotives were individually assigned to the train.
- You can now manually add or delete rolling stock from a built train no matter where in the route the train is. Previously, you could only add cars to a train that hadn't departed its terminal. Now as long as the car or loco's location hasn't been serviced by the train, you can manually modify the train's manifest. Nice feature for operators that run in real time.
- New feature, you can now add a comment for each of the radio buttons in the Timetable window.
- You can now enter a two digit build date for your rolling stock. A two digit date will convert to something built in the 1900s.
- You can now force a track length to be shorter than the track space consumed by your rolling stock. This allows you to make length adjustments without having to remove the cars or locos sitting on the track.
- Fixed a problem where operations would lockup during a train build if "Auto HPT" was selected for loco assignment, and no cars were assigned to the train during the build, and the assigned loco weight was set to zero.
- New feature for operations, a tool called "Automation" found under the "Trains" tools menu. This tool can help you automate the building of trains, and the printing of manifests and switch lists. See the Help for Automation for more information.
- New feature for car and loco logging. Now the program creates a separate log for each car or loco when logging is enabled. These new files are stored in a directory called "rollingStock", and this directory can be found in the "logger" directory under "operations".
- The program will now adjust a schedule's ship destination track if you copy and delete a track that is referenced by the schedule. This allows you to move a track (using the copy track tool) to a different location and not break your schedules.
- Fixed a bug caused by using the "Set Cars" tool and the "Cars" table sorter (clicking on a column heading to sort cars rather then one of the "Sort by" radio buttons). Thanks to Sam Simons for finding and reporting this problem.
- New feature for the Train row color, you can now by train define a train reset row color. See "Train Row Color" under "Tools" in the "Trains" window.
- Hold cars are no longer listed for staging tracks in the CSV files.
- Improvements to the import and export cars feature. You can now import a car's load, move count, and if the car is a caboose, passenger, has FRED, or utility car. You can now export only the cars shown in the "Cars" window. Note that you can access the "Cars" window from a location or track and only cars at that location or track are shown. Useful when exchanging cars between layouts.
- Improvements to the "Switch Lists by Location" window. Now changes to locations with "similar names" appear correctly in the table.
- The "Trains" window now scrolls automatically when building trains.
- Fixed a bug where a train manifest didn't show all of the work at a location with several "similar names" and the sort by track option was selected.
- The program now disallows special control characters when entering location names, road and road numbers. These names are used to create file names and file names can't have embedded control characters.
- Manifests and switch list now show locomotive set outs at the end of the work for switchers.
- Fixed a problem where locomotives wouldn't reset properly when running automations.
- Made some build report improvements with regards to train turns.
- Improved how the program when building a train, finds locations for cars out of staging. Should help reduce the number of build failures.
- There's now a "HIAF" (Halt If Action Fails) checkbox for each action in the automation table.
- A "Run" button has been added to the Timetable window. The button appears when CSV manifests are enabled.
- New automation action "Is train en-route?". See help for details.
- Saved train Manifests are now stored in separate directories based on train names.
- The location window now shows if there are track restrictions when only certain trains or routes can access a track.
- The program will attempt to place buffer cars between the locomotive and hazardous cars. If a hazardous car and a non-hazardous car are going to the same track, the program will place the non-hazardous car in front of the hazardous car.
- All table row heights are now adjusted based on font size selected.
- The "Move" button for a train is now labeled "Terminate" when the train has arrived at the last location in the train's route.
- Fixed a bug where a random schedule was being ignored.
- Preference (in Display->GUI) to let you set how long a tooltip will be shown. (Dave Heap)
- Individual Startup Preferences panels have been replaced with a single tabular panel that allows the explicit setting of startup execution order. (PR 687)
- It is possible to specify one or more routes to be set when JMRI starts. (PR 730)
- Additional preferences labels are available for translation. (PR 781)
- 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.
- Easy access to control the automatic launch of the WiThrottle server has been incorporated in the WiThrottle preferences page.
- It is possible for a single profile stored on a shared location to maintain individual per-computer settings for each connection. This feature is experimental and may not work for all connection types. Please report issues with this at our GitHub issue list. (Randall Wood)
- Added ability to create a button to launch a specific script to the startup preferences (PR 1165).
- Displaying open windows or frames in the web server can be disabled or redirected to display panels. When disabled or redirected, the web server home page will list open panels under the Open Windows heading.
- Randall Wood fixed a problem when attempting to read profiles created after version 4.3.2 (#1523)
- The file chooser you used to pick the script file that is run by Conditional Action now starts at the script default directory.
- Fixed a problem reloading some Logix that reference the same input (Sensor, Turnout) multiple times in a single Conditional
- Steve Rawlinson added keyboard shortcuts to the Layout Editor
- Fixed a problem where some complex Layout Editor panels don't load fully, resulting in the signals not updating properly.
- Improvements to the "validation" checks for panel files. A couple false positives fixed; check that some numerical fields really do contain numbers.
- Pete Cressman continues to improve the code to rotate icons to different orientations. The most recent change was an update to icons what have their content set and are then rotated. There are lots of special cases, and we're not sure we've found them all yet. If you have any issues around rotating various kinds of icons, please don't hesitate to get in touch.
- Layout Editor panel files are validated against XML Schema. These schema were improved to catch several kinds of internal inconsistencies.
- Steve Rawlinson, fixed a bug that caused errors when saving from Layout Editor if a Memory was deleted that had been linked to a Layout Block.
- Improvements to the "validation" checks for panel files: A false positive fixed.
- The default port is now 12090 instead of a random port in the Dynamic and/or Private Ports range. Automatic selection of a random port has been removed. (Randall Wood)
- Several improvements to the scripting windows
- Scripting with AbstractAutomaton can now wait either for something (Sensor, Turnout, Signal...) to change or for a maximum time to go by. (more info)
- Fixed a rare, but really annoying, problem when multiple script threads wait for the same sensor.
- Steve Rawlinson added an AutoLayoutPowerOff.py example script which automatically powers off a layout when no activity has been detected for a period of time.
- Steve Todd added a SetAllUnknownSensorsToInactive.py example script which does what its name says: Any JMRI Sensor that's showing "UNKNOWN" state will be set to "INACTIVE" state. This is particularly useful when using a simulated connection, as it makes it look like there's a layout connected.
- The 'RosterCsvExport' script was updated with examples of extracting information from specific bits of CV values, such as the DC-enabled bit of CV 29. (#1197)
- ON and OFF are now defined by default for Jython scripts
- Oscar Moutinho provided a set of scripts to use Internet of Things (IoT) devices within JMRI (1463)
- Karl Lisby contributed new Signal Controlled Warrant support, which is better matched to layouts with short blocks between signals.
Steve Todd enhanced Dispatcher's AutoActiveTrain feature with the following changes (PR #1364):
- for target speed, use minimum of block speed and signal speed - for signalmasts
- added user options to specify ramping interval and duration
- manual slider sets speed directly, bypassing ramping
- turned off AlwaysSet Turnouts, added "Trust Known State" option
- added a fixed delay between turnout commands
- prevent runaway by halting if train has no occupied sections - partial - only works with another moving train
- enhanced debugging and squashed a few bugs
- Steve Rawlinson improved the Layout Editors handing of layout blocks: Selecting the blank entry at the top of the drop down list when editing a layout block does not remove the existing sensor if there is one set. Next time you edit it the old sensor is back. Modified the behaviour so that selecting the blank entry removes the sensor, allowing the sensor to be assigned to a different block. A sensor attached to a layout block which is not in use can now be assigned to a different layout block.
- Steve Rawlinson made a change to allow the user to set the grid size in Layout Editor
- The "Roster" frame, which is also the main DecoderPro window, now disables (grays out) the "Identify" button if there's no service mode (programming track) available. Identify reads the programming track to pick the current locomotive decoder out of the Roster, so it can't function when there's no connection to the programming track available. You can still select the locomotive manually, e.g. for local editing of the information or for ops mode (on main) programming.
- Routes in transition (started, not yet done) now show INCONSISTENT on their status sensor, and ACTIVE only when complete
- Traditionally, both CV and variable values were stored in roster entries, but only the specific CV values were loaded when the roster entry was opened later. This worked when all of the information was in the CVs (the variables were redundant), but now we have some complex decoders that use "qualifiers" to separate variables from CVs. To handle this case, we now reload the variable values from the file, then the CV values.
- The "frame server" can be optionally disabled. (1334 and 1438)
- Excessive logging when a client fails have been silenced. (1469)
- Address vulnerability CVE-2016-4800 in Jetty. (a href="https://github.com/JMRI/JMRI/pull/1471">1471)
- Update of JMRI website navigation up to current tools and system support, Table of Contents grouped by activity, styling of older Help pages and broken links & icons fixed, Hardware help pages share a common scheme (some items were moved up/down), Manuals page focused on supported versions, OS X install page updated (Egbert Broerse)
- Sonny Hansen improved the Danish translation with help from Matt Harris.
- A script to disable or enable IPv4 and IPv6 support in zero configuration networking, named
zeroconf-preferences.js, can be run from the
jythondirectory in the JMRI distribution. This may help some users having issues with the iPhone WiThrottle app. (Randall Wood)
- Fixed problem preventing "Validate XML File" from working as a Start Up Action or Button (Dave Heap).
- Added a default explanation to empty programmer tabs and enabled viewing of same if "Show empty tabs" is enabled. (Dave Heap)
- Updated the libUSB (for misc USB device support), and enabled use on 64-bit MacOS X systems
- Updated the Joal library to now correctly load WAV files that contain metadata at the end of the file
- Herve Blorec improved the French translations
- The stop aspect for Danish signals was improved
- The "Monitor" panes in several systems weren't obeying the "always on top" check box, fixed.
- The PanelPro splash screen displays a localized F8 hint (Egbert Broerse).
- Hervé Blorec improved the French translations
- The French Index and Table of Contents pages properly display accentuated characters (PR 738).
- Egbert Broerse improved the German translation of menu items, including special character spelling
- Sonny Hansen improved the Danish translation
- John Socha-Leialoha improved the WiThrottle protocol documentation
- Egbert Broerse added help on using IntelliJ as an IDE for JMRI, including instructions to set the correct character formats (PR 675).
- The DispatcherPro, JMRI Demo, and SignalPro applications are not shipped in distributions. The code for these applications has not been removed from JMRI, only the launchers are no longer created. If the use of PanelPro in lieu of these applications is not possible, please request assistance creating your own launchers for these applications in the JMRI Users Group. (Randall Wood)
- Steve Todd fixed issue with WiThrottle ip address not showing correctly on Linux systems. Change included updating JmDNS from 3.4.1 to 3.4.2.
- Sonny Hansen further improved the Danish translation
- Egbert Broerse expanded the JMRI Glossary, made it sortable and added columns with keywords from some of our Help translations. Suggestions for additional definitions are welcome.
- Egbert Broerse further improved the German translation and fixed some issues with the French translation
- Egbert Broerse further improved the WiThrottle documentation and translations
- Kai Vehmersalo wrote an illustrated Ubuntu install instruction
- Deprecated Findbugs annotations used in source code maintenance were updated to use replacement versions
- All power buttons now include text labels indicating current power state.
- Much work on internal cleanup of the code. Some small decoding and error handling improvements.
- The NamedBean class better adheres to the JavaBeans specification. Critically, these changes mean that only Strings can be used to name a property, and that the getPropertyChangeListeners(String) method has been renamed. (If you don't know what this means, don't worry about it; it's an internal structure thing.)
- The Table sorting and filtering mechanism has been changed to use mechanisms introduced for that purpose in Java 1.6 or newer. When sharing a configuration between this version and JMRI 4.3.4 or older, the older version of JMRI may start with a warning and forget table sort order.
- When sharing a configuration between this version and JMRI 4.3.4 or older, the older version of JMRI will not reflect changes in window position, table sorting, column order, or other user interface state. This is due to changes in how user interface state is stored.
- Application exit time has been reduced and applications exit more cleanly. (Randall Wood)
- Sonny Hansen did a lot more work on the Danish translation
- Alain Le Marchand updated the French translation
- The handling of locomotive identification was improved in DecoderPro; the selection should no longer be lost if you press "ident" after rearranging the columns.
- The DecoderPro File menu now has a selection to verify XML files.
- The web server now handles HTTP redirects slightly differently. See the Web server help for more details.
- Walt Thompson highlighted a problem in the LightTable documentation (PR #1301)
- Egbert Broerse added more internationalization to the Add Routes and Add Signal Group panels (translators may check new keys) and reduced duplicate resource bundle keys for common elements to ease new translation (use Bundle.getMessage() in code)
- Sonnys Hansen updated the Danish translation
- Steve Todd updated Dispatcher's AutoActiveTrain feature.
- Much infrastructure work, improvements to the Javadoc, etc.
- Javadoc can now include UML
- There's just the beginnings of a test setup for the Jython sample scripts
- Randall Wood fixed issues when reordering startup items (#1494)
- Randall Wood cleaned up some excessive console logging during startup (#1508)
- LocoTools has been removed from Linux and OS X distributions of JMRI (#1546)