Release Notes for JMRI 3.8 release
Date: July 3, 2014
From: Bob Jacobsen
Subject: Production version 3.8 of JMRI/DecoderPro is available for download.We are very pleased to announce that the 3.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 version 3.8" available for download today.
This is the latest JMRI production or test version that will work with CATS 2.34 (Release2037)/Java 1.6.
New warnings for this version:
The decoder definition files have been reformatted to make them easier to maintain. If you want to make a change in a decoder definition file, please start with a file from this release or later.
The XmlIO web service has been deprecated and is scheduled to be removed in JMRI 3.11 (July 2015). All users who are relying on direct access to the XmlIO API are recommended to begin using the JSON API. inControl web throttle users are recommended to begin using webThrottle instead, or to plan on investing in devices that can support webThrottle, the iOS WiThrottle, or the Android Engine Driver.
This release has some changes to the application-initialization structure, particularly in the apps.Apps class. If you have written code of your own that runs applications based on JMRI, please check for use of deprecated methods.
The internals for handling CV read and write addressing have been extensively reworked. The change should be transparent (invisible) to users. If you have written code of your own involving CV reading, writing, storage or anything else, please check for compatibility and let us know of any problems.
The configuration structure for JMRI is changing to use Configuration Profiles. Configuration Profiles allow a single JMRI application to have multiple, user selectable, configurations that can be changed as application startup. For some users, this change will have no impact; other users will be visibly impacted by this change. See the Configuration Profiles help page for more information.
The JMRI SRCP implementation is undergoing extensive revision, in part due to testing with 3rd party SRCP clients and servers. If you are using the SRCP support, you will need to upgrade both the client(s) and the server to the same JMRI version.
The JMRI Web Server is being extensively rewritten. If you notice any problems using it, please let us know.
Known problems with this release
None at present
Download links:This release is being developed via a series of test releases that contain multiple changes. See those release notes for more information.
Please use these links for downloading:
Changes since production release 3.6
Randall Wood added Configuration Profiles.
- The ability to duplicate Configuration Profiles has been added. A duplicate Profile contains a copy of everything in the existing Profile's directory.
- Updated the Windows Launcher to allow for a configuration profile to be specified. For further details, see technical details of how the startup scripts work
- Updated the Windows Launcher to bring memory calculations in-line with Linux and OS X
Jeffrey Machacek made the following changes:
- Added a "Clear all non-in-use Slots" button to the LocoNet SlotMonitor.
- Updated the WiThrottle server.
Matthew Harris updated the user interface font size change preference to no longer override the underlying font style.
The Web server has been extensively updated by Randall Wood and Steve Todd:
- The static index.html has been replaced with a home servlet responding to / and /index.html
- The home, panels, and operations servlets have been updated with a new Bootstrap user interface.
- The structure for the servlets resources has been changed to facilitate customization and internationalization.
- The panels servlet uses JSON and WebSockets instead of XMLIO. This may prevent older browsers from receiving asynchronous updates to panels. Testers may notice some panel features do will not work correctly in this test release.
- A conductor's view has been added to the operations servlet. (Randall Wood)
Steve Todd made the following changes:
- fixed a WiThrottle read loop that could cause high CPU usage when devices were "lost".
- added some fractional zoom values to LayoutEditor.
Dave Heap made the following changes:
- Improved the display of file locations under the Help menu.
- Fixed issues with item state colour coding with OS X and Nimbus display GUIs.
The "Export Roster" and "Import Roster" menu items will now write your whole roster to a single file, and then read that back in. You can use this to move your roster to another computer, for example. On import, you'll be asked to confirm that you want to import each roster entry. If there's already an entry with the same name (ID), you'll be asked if you want to replace it.
The Railroad name preference has been promoted from a Web Server setting to an application-wide setting.
In the Preferences under Start Up, you can now set buttons for Preferences, Profiles and Rebuild Roster.
You can now open a PanelPro- or Decoderpro-style main window from the DecoderPro3 files menu, complete with the full menus you'd find if you were running PanelPro or DecoderPro from scratch. Please let us know if anything isn't working as you'd expect.
Added a "Check for Updates" item under the help menu. If you want a button, you can configure it under startup preferences.
Read-only enum decoder variables now are disabled (grey-out) in the DecoderPro/DP3 interface. This includes as combo (selection) boxes, check boxes and radio buttons. They still track the CV value, but you can't change them yourself. This may cause unexpected side-effects, e.g. if a decoder file has improperly set read-only on a variable and nobody noticed because it wasn't visible.
New / Updated decoder definitions
Enzo Fortuna added many Italian translation terms, and fixed a couple of existing ones.
Pierre Billon provided more translation to French and German.
Bernd Wisotzki improved the German translation, and added additional German translation, particularly in the DecoderPro/DP3 presentation.
Resolved an issue that caused some CVs to be skipped in Read Full Sheet operations. Particularly noticeable with ESU V4 decoders.
Some improvements to the tooltips on the decoder selection window suggested by Alain Le Marchand.
Dave Heap made the following changes:
- Fixed a problem with printing CVs for some decoders.
- Added the ability to import decoder CSV files, as created by the existing "Export CSV file..." command.
Alain Le Marchand added custom definitions for Atlas decoders sourced from Lenz (LE062XF, LE063FX) and NCE (N12A0, N12A1 and N12A2)
Peter Ulvestad updated the Bachmann "EZ Command 3 function decoder (36-553)" definition
Lou DeHayes provided a fix for the Digitrax DS54 decoder definition.
Alain Le Marchand provided multiple updates to the Digitrax decoder definitions (notably patch 979).
- Add DN163A4 (derived from DN163A2) + fix width values, for DN163A1/A2, DN163I2, DN163K0E
- Add DN135D, DN135PS, DN163A3, DN163K4A, DN163L0A, DZ123PS, DZ123Z0.
- Renamed DZ123MO in DZ123M0 (zero) and fully updated definition.
- Update DN143K2 output definition + add a note for swapped headlights for display on Function map pane.
- New Digitrax series 6 sound decoders: SDH166D, SDXH166D, SDN136PS, SDXN136PS (including extended CVs/options for John McMasters sound projects)
- New Digitrax series 6 non-sound decoders DH126D, DH126P, DH126PD , DH166D, DH166P, DH166PD, DN136D, DN136PS, DN146IP, DN166PS, DZ126, DZ126PS, DS126IN, DZ126T, DZ146, DZ146PS
- Digitrax/Con-cor decoder definitions added for most of the existing ones.
- Functions labels added for sound decoders.
- New pane for sound decoders, with sound project information (Series 3 only).
- Comments/tooltips extended to most of the recent Digitrax decoders.
- Specifications (size, connectors) updated according to Digitrax documentation
- A lot of refactoring through new fragment/parts files in the digitrax directory. Will help further maintenance and internationalization.
Doehler & Haass
Pierre Billon did a major update to the Doehler & Haass decoder definitions.
Dave Heap made the following changes:
- Improved the ESU V4/Select function mapping pane
- Improved the ESU V4/Select decoder definitions.
- Added the ability to import LokProgrammer CV value list files.
- Added LokPilot Fx V4.0 and LokPilot XL V4.0
- Informative tooltips on the ESU Function Map pane.
- Many corrections and other improvements to existing ESU decoder definitions.
Peter Ulvestad updated the Hornby 8249 default values.
Alain Le Marchand improved the Kuehn definitions
Peter Ulvestad contributed new decoder definitions for MRC 1641,1642, 1659 and 1664 N scale motor control only decoders.
John Crellin provided a decoder definition for the MRC Sound Brilliance 1806 and 1955.
Michael Mosher improved the QSI Version 9 decoder definition.
Dick Bronson updated the RR-CirKits decoder definitions.
Dick Bronson updated the Tower Controller Mark II decoder definition.
Support for the RR-CirKits MotorMan (r26387)
Ken Mazer added the Athearn GP40-2 and made some corrections to the Soundtraxx definition.
Dave Heap added a live Function Group Exchange feature on the Function Map pane for two sample Tsunami decoders (Diesel Genesis OEM and Steam Genesis OEM).
Alain Le Marchand made the following changes:
- Extended the Soundtraxx Tsunami Function Groups Exchange feature (created by Dave Heap) to all Tsunami decoders
- Fixed an issue with Tsunami 750 function map not displaying properly
Tam Valley Depot
Robin Becker provided a decoder definition for the Tam Valley Depot Quad-LN_S decoder.
Pierre Billon contributed four additional TAMS decoder definitions.
Fixed a problem with the handling of decoder definitions that was causing certain TCS decoders (and perhaps others) to not display properly.
John Crellin added definitions for TCS function decoders.
John Crellin updated the TCS FL2 and FL4 decoder definitions
Ken Cameron has posted update for Team Digital SHD2 board.
Alain Le Marchand updated the Uhlenbrock 73400 definition:
- Increased High version value to 4 (from a decoder purchased in 2011)
- Change family name to Mini instead of Micro (Mini is the name used on the decoder user manual)
- Removed Speed Table, not supported by this decoder (only Vstart, Vmid, Vhigh)
- Fix enum for CV54 (cannot use a mask, only two specific values allowed 128 and 132)
Alain Le Marchand added and updated the following Uhlenbrock decoder definitions:
- Created: 73100, 73110, 73140, 75330, 76150, 76200, 76320, 76425, 76560
- Reformatted (and completed): 76400, 76420
- Changed family name (for consistency) for: 73400, 73410, 73500, 73510, 77500
- For new or reformatted files:
- Heavy refactoring with fragment files (in new directory \decoders\uhlenbrock)
- Used the generic function map pane
- Used generic items on standard panes (motor, lights, analog) as much as possible
- New ad-hoc Uhlenbrock pane, only for other parameters than listed above
- Support of English and German versions, with terms as defined in official Uhlenbrock documentation, where possible
Nigel Cliffe updated the Zimo definitions to extend the volume controls.
Nigel Cliffe provided a new Zimo decoder definition.
New / Updated signal definitions - icons
Suzie Tall updated the BN 1989 signal definitions. Changes include:
- Additional panel icons to support the new signal mast definitions.
- A modified icon which was stopping the original 2-head mast from being added to a panel.
- Twelve new signal mast definitions.
- An updated index.shtml with a bit more information, reference to BN source and links to the new masts.
- An updated aspects.xml with the addition of an unlit appearance and corrections to the appearance definitions.
Suzie Tall contributed a new signal system definition for the LMS speed signalling that was installed in parts of the UK in 1932 and continued in use until 1988. The definition is as complete as is possible from the available documentation and covers all variations over the entire period of operation.
Suzie Tall added a new BNSF-1996 signal system.
John Lang updated the NTC 1956 signal files.
Suzie Tall added non-rotating icons to the BNSF-1996 signal set.
Jim Duncan provided a set of icons for building an Armstrong tower control panel.
Suzie Tall updated the LMS-1932 and CR-2008 signal sets.
Kevin Dickerson added some British Rail signal icons
Kevin Dickerson arranged for an error message to be presented if an icon file can't be found, instead of having it fail silently.
Hardware / Systems
Paul Bender improved support in the generic network client for automatic configuration. This includes improvements to the generic mDNS/ZeroConf/Bonjour automatic configuration tools.
Paul Bender updated the JMRI SRCP support in both the client and server to better conform to the letter of the SRCP protocol standard and improve compatibility with other SRCP implementations.
Steve Williams fixed a problem with LocoNet Simulator's reading of data files.
B. Milhaupt updated the LocoNet Download Firmware tool to provide automatic identification of the firmware file's address format as well as extensive checking of the firmware file for evidence of corruption or out-of-range parameters. These improvements significantly reduce the risk of corrupting a device's firmware when using this tool. The associated help file was expanded to suit.
Paul Bender updated the XPressNet network connections (LIUSB-Server, LIUSB-Etherenet, and XnTCP) to allow automatic reconnection attempts in the event of a dropped network connection.
Paul Bender added mDNS support to the Lenz LIUSBEthernet adapter.
Ken Cameron made the following changes:
- Ken Cameron fixed a bug in NCE Macro Edit for updating macros.
- Added support for NMRA signal decoders on NCE-USB connected systems.
- Improved error message for not supported packets.
- Fixed NCE-USB version identification handling.
- Ken Cameron has fixed issue with NCE SB5/TWIN and ops mode programming. Was trying to use raw packet commands instead of specific ops mode programming commands in the USB.
Dave Heap made the following changes:
- Added some more NCE menu items to the list of available startup actions and buttons.
- Resolved the problem that caused function commands from JMRI or WiThrottles with NCE systems to be sent to seemingly random consist addresses.
- Fixed a resize issue with the NCE Packet Analyzer window.
Intellibox support received a communications update (patch 978) to improve reliability of sensor readout.
Allow Turnout icons to be "momentary". (Sensor icons could already do this)
Dan Boudreau made the following changes to operations:
- The data in operations files has changed with this release. Previously the files contained backward compatibility elements so that you could load a file created with the latest release and read it back using one of the very early releases of operations. Now the backward compatibility is limited to releases 3.4 and 3.6. In any case, you can always upgrade to a newer release of operations, it is only the ability to go back to an older version of the program using the latest data files that has changed.
- The lists that operations provides for scripts has changed significantly. Instead of
lists containing ids of the objects, the actual object is now passed in the list. For example a list
of cars in operations was a list of car ids, and not the cars themselves. If you use
scripts you will need to edit your scripts. Here's the changes you need to do for cars:
In each of your script files, search for "carId". You should find something like this:
for carId in carList:
car = cm.getById(carId)
Change the first line to:
for car in carList:
And delete the line that has "car = cm.getById(carId)".
For scripts that deal with trains, search for "trainId". You should find something like this:
for trainId in tList:
train = self.tm.getTrainById(trainId)
Change the first line to:
for train in tList:
And delete the line that has "train = self.tm.getTrainById(trainId)".
- New feature, you can now let the program create your locomotive consists for you. See Train Build Options "Build loco consist from single locos if needed" for more details. The program when building the consist can adjust the number of locos based on Horsepower per Ton (HPT) and the route's grades.
- New feature, you can now adjust all of your train departure times by a selected number of hours. See under "Tools" in the "Trains" window "Change Train Departure Times".
- New feature, you can now edit or view two locations at the same time.
- The train edit window now shows if there are road or load restrictions for the train.
- Fixed a bug in track copy where the car types serviced weren't copied to the new track.
- Fixed a bug in train copy where the train build options weren't copied to the new train.
- Fixed a bug in the router when the option to return a car to staging is enabled, and the car get's a custom load from staging.
- Made some improvements to car routing and build report messages.
- You can now configure the build report to always preview, saves paper! See Build Report Options under Trains->Tools.
- The program now blocks a kernel for your manifests and switch lists (a group of cars) by the order that you add cars to the kernel.
- New checkbox option for the Cars window. Under Tools in the Cars window are two new options, one shows the checkboxes, and the other resets the ones showing in the window. Useful if your doing an audit of your cars using a PC or portable device. Great for those that don't like to waste paper!
- Better routing out of staging for cars with custom loads or final destinations. The latest changes should reduce the chances of a build failure for cars in staging that used the Return When Empty feature.
- You can now specify a custom load when using the Return When Empty (RWE) feature for a car.
- Fixed an issue with Classification / Interchange tracks that have destination restrictions. Now if a car without a final destination is placed on a C/I track with destination restrictions, the program will only forward cars to that destination.
- Made some improvements to the train build report.
- Added three more manifest color options; orange, yellow, and gray.
- Improved the tabular format with regards to rolling stock locations and track names.
- Fixed a problem where non lead cars in a kernel didn't have the correct final destination shown in the Cars window.
- New manifest and switch list format. Two columns, one for pulls and one for spots, with track names centered in each column.
- Fixed a bug where a kernel's length (group of cars) wasn't being checked with regards to spurs with schedules
- Some build report improvement with regards to yard or interchanges that are full. Now only the first occurrence of a full yard or interchange is shown.
Pete Cressman made the following changes:
- Control Panel Editor
- NX warrants (eNtry/eXit) menu item was added to the warrants menu.
- Menu item Select panel items by Type was added to the Edit menu.
- Menu item Select panel items by Level was added to the Edit menu.
- Menu item Disable Selecting Shapes was added to the Shapes menu.
- Any item in a superimposed stack can be selected with Control-Shift-Click. See help CPE page
- Circuit Builder
- An Edit Portal Direction menu item was added ti=o the CircuitBuilder menu. Direction arrows may be displayed at Portal locations of a warrant route when the warrant is allocated. Use this menu item to configure the arrows so they point to show entrance to the block. Levels, rotation and scaling of an arrow can be done here also. with a right clck.
- Improved item selection when creating and editing OBlocks, Portals and OPaths
- Added error messages and fixed bugs for editing Portals in CircuitBuilder
- Item Palette
- Portal tab was added to the Item Palette. The icons used when editing Portals in Circuit Builder or showing direction may be modified. The "Set Default Icons" button sets the icons for all portals in the panel. The panel must reloaded for the change to take effect.
- Several bug fixes were made in the editing and updating icon families code.
- Positioning vertex handles of Polygons was improved. Note, handles of a selected Shape can only be grabbed from within the bounding rectangle of the shape.
- Either the display level or hidden property of a shape can be controlled with the "visibility/Level Control Sensor".
- Improved user interface and fixed bugs in Shape editor popup
- The Tracker Table keeps a history of Tracker events. Click on the "Status" field to display.
- Dragging and Dropping a Loco marker icon on an Indicator Track icon will launch a tracker on that train.
- Clicking on "persistent train marker" from a completed warrant (see below) will launch a tracker on that train.
- Time spent occupying a block is logged in the "Status: field
- The Warrant Table keeps a history of warrant events. Click on the "Status" field to display.
- NX warrants (eNtry/eXit) may create manual warrants.
- The train ID marker will persist after a warrant has terminated on the occupied Indicator Track icons. The Indicator Track icon must be configured to display markers.
- Warrant routes, either standard or NX, can have their location blocks (Origin, Destination, Via, Avoid) entered into the respective text fields by clicking on an Indicator Track icon of the Block. Clicking on the text field sets the target for a subsequent Indicator Track icon click.
- Additional Status messages have been added.
- Added logging warrant and tracking messages to file. Use Log menu item in Warrant menu.
- Added more options for creating NXWarrants
- Fixed bug in acquiring LearnMode throttle.
Ken Cameron has:
- Enabled startup features like scripts and panels to use portable filenames. This replaces the absolute pathnames with relative pathnames within the scope of other parts of JMRI like the users preferences.
- Enabled Logix references like scripts and sounds to use portable filenames. This replaces the absolute pathnames with relative pathnames within the scope of other parts of JMRI like the users preferences.
- Added a scroll pane for the virtual signalmast panel.
- Fix Bug 451
- Layout Editor Crossover - Block 1's connection point is now highlighted in pink or blue depending upon if a track segment is connected to aid identification
- Layout Editor Turnouts can now be connected together by moving the turnout so that the connection points overlap
- Layout Editor Turnouts - When connecting a new LH or RH Turnout to an existing turnout, the editor will automatically rotate the turnout to match the turnout that it is being connected to.
- Fixed an issue with distance UK Semaphore signals
- Improved correlation of ramp down speeds with block length in NX warrants
Added a "Power Button" item that you can configure to directly include a button. This is in addition to the existing "Open Power Controller" option.
Dispatcher - The delay trigger when running automatically is now correctly obeyed when using SignalMast Logics - KD
Layout Editor - Added a scroll bar to the top edit panel
Additions to Warrants
- Added "Halt All" button to Warrant List window
- Enabled recording warrant scripts when dark blocks are included in the route.
- Improved correlation of ramp down speed timing with block length in NX warrants
- Train manifests are now available in a JSON format.
- Train manifests are in the web server again.
- New feature for manifests and switch lists, the ability to add headers describing each of the car attributes. Select "Print Headers" in the "Manifest Print Options" You can also customize all of the header text, see under "Tools" in the "Manifest Print Options" window, "Edit Header Text".
- Made some improvements to the train build report.
- Fix a bug where the build report didn't always report which cars were ignored when all of the moves for a route location were consumed.
- The sorting for local moves has changed, if you sort by track, the program will sort the cars by the pick up track name. If by destination, the program will sort the cars by the set out track name.
- When a route is loaded from a panel file, the system will now check the turnouts and trigger the aligned sensor, rather than wait for a change to occur
- Fix a bug in the Routes GUI, whereby if the user removes the "TurnoutsAlignedSensor" it doesn't actually get removed.
Nigel Cliffe and Dave Heap fixed problems with international characters in four Python scripts:
Added sample scripts:
- jython/SensorToTurnout.py: takes Sensor inputs from an external system and maps them to Internal turnouts
- jython/SignalHeadFromSensors.py: takes Sensor inputs from e.g. an external signal system and drives SignalHead objects
Dave Sand fixed RosterCsvExport.py to use new string format for CV definitions.
Documentation / Help
Many additions to the tools for structuring conditional decoder definitions.
Peter Ulvestad updated the clinics information.
The JMRI Web server has been rewritten to support a more-unified appearance and to better
provide dynamic, user customizable content.
If you wish to browse the /prefs directory in your browser, but get the old web server home page instead, you will want to remove the index.html file from your User Files directory.
Older versions of the JMRI manuals and associated PDF files have been moved out of the JMRI distribution. They are now available on the web. This was done to make it easier to keep the manual up-to-date, and reduce the download size. You may have to update your bookmarks.
Egbert Broerse updated the signaling help.
OpenLCB library updated to better handle hub operations.
Several internal updates for how CV reading and writing is changed to improve handling of indexed CVs. If you have your own code or scripts that write or read CVs directly, check to see if we've broken anything, please.
Improved the handling of decoders that contain only long addresses, no short addresses.
Dave Heap improved the handling of DCC addresses. The decoder terminology has been standardized. There's more checking of values, to prevent erroneous behavior when an out-of-range value is entered.
Dave Heap improved handling of long addresses in NCE consists
The internals for handling CV read and write addressing have been extensively reworked. The change should be transparent (invisible) to users. If you do notice anything problems involving CV reading, writing, storage or anything else, please let us know.
Dave Heap made the following changes:
- Restored the ability to specify a fnmapping element by either output number OR name.
- Added an optional "(alt)" suffix to a fnmapping element.
- Added the facility to define "soundlabels" (like "functionlabels") in the decoder definition files.
- Can now add "functionlabels" and "soundlabels" to individual models in the decoder definition files. These override corresponding labels at the family level.
- Added a "soundlabel" element to the pane programmer, allowing sound labels to be displayed on panes.
- (A "functionlabel" pane element and user-editable sound labels are planned for the next release.)
- Added a new Grid Layout feature to the decoder pane programmer, for greater control of pane layouts.
- Added extra features to Grid Layout for the decoder pane programmer.
- Pane elements "label", "soundlabel", "row", "column", "grid" and "griditem" now support qualifiers.
- Added a "group" pane element that can be used to apply the same qualifier to multiple pane elements.
- The "pane" and "group" elements now support "include" and "exclude" attributes for decoder/family-specific configuration.
- Fixed an issue that caused a hang when reading all sheets of an ESU decoder with some systems.
- Fixed an issue with inherited attributes in Grid Layout for the decoder pane programmer.
Reformatted the decoder definition files using the xml/XSLT/normalizeDecoder XSLT transforms. This cleans up some ambiguous attributes, adds missing elements, and formats them into a consistent (comparable) style using xmllint. In the process some errors (usually missing elements) were found and fixed. There were also some refinements and additions to the XML schema for panes and decoders.
JMRI now implements a "transform-xslt" XML processing instruction for post-processing XML files with XSLT transforms. (If that doesn't mean anything to you, you can ignore the rest of this item). For an example of invoking this, see the test XML file and test XSLT transform.
Fixed a problem that would leave the wrong DCC address on the DecoderPro roster pane at startup under certain circumstances.
Fixed a bug that would cause programming crashes in DecoderPro when using simulators.
User request to only print or preview trains in the Trains window that are selected. (r26300)
Fix bug where characters would exceed the line width in the two column format, and tabular disabled. (r26301)
Fix problem with local move of utility car. (r26308)
User request to only show trains that can service a location (r26309)
Fix car type string length calculation (r26329)
Put the creation of each block xml element into a try/catch. There is an issue where the block data isn't being saved but at this stage I have no idea what the trigger is and have had no log files from a user to help narrow it down or replicate it. Doing this will at least prevent all block data from being lost during a save. (r26333)
Ensure that the file paths are correctly loaded from the configuration file, and that the user files (preferences:) path is loaded before other paths. Ensure that the scripts path ends with a file separator character.(r26344)
Minor improvement in how the program determines maximum location and track names for manifests and switch lists. (r26347)