JMRI Changelog

What's new in JMRI 5.7.6+R539a39880d Test Release

Apr 13, 2024
  • Hardware Support:
  • DCC++ and DCC-EX:
  • New connection setting to extend the transmit startup delay
  • Transmit startup pause now resumes when incoming message received
  • DCC4pc:
  • Improved how traffic is displayed in the monitor window.
  • MQTT:
  • Fixed issue with consists not being activated if created after the controlling throttle was created.
  • Fixed issue where JRMI may generate a non-unique client id when connecting to the MQTT broker - see Warnings.
  • OpenLCB / LCC:
  • Improved new Turnout address validation.
  • Updated the openlcb.jar file with PRs through 258.
  • Protected against an error that could occur on startup if JMRI has trouble reaching the network interface on Windows.
  • CDI configuration window now displays min and max values in the tooltip and enforces max/min values for integer input. The "Write" button is disabled when an out-of-range input has been entered.
  • Improved how Datagram Acknowledged and Datagram Rejected are displayed in the Monitor window.
  • Powerline:
  • Fix a problem what would cause the DMX512 connection to loop on startup.
  • New / Updated decoder definitions:
  • Kuehn:
  • Added function decoder F060
  • Lenz:
  • Update the Lenz Plus 2010 definition to include recent versions.
  • Piko:
  • New decoder file for Piko H0 KM ML4000 loco with special light decoder
  • Uhlenbrock:
  • Small error corrections Uhlenbrock decoder file
  • ZIMO:
  • MX decoder versions with new hardware added
  • CV's for new hardware versions added
  • Settings for shunting speed corrected (CV124 Bit0-1)
  • minor corrections
  • DecoderPro:
  • Label & Media pane, throttle function button "lock" behaviour was renamed as "latch", as per issue #12975. Documentation updated accordingly.
  • Dispatcher:
  • Replace boolean ResistanceWheelSet with TrainDetection, which supports...
  • Whole Train - the entire train is detected.
  • Head Only - only the front of the train can be detected.
  • Head and Tail - the front and rear are detected but not any bits in between.
  • Any TrainInfo files that are edited will be saved in the updated way and cannot be read by older versions.
  • ActiveTrain - now fires property change events when Allocated Section are added and removed. Previously only fired event on add.
  • When finding no next allocated section, 1st check for end of transit.
  • LogixNG:
  • A bug has been fixed in LogixNG when using LogixNG tables:
  • If an action or expression, for example the action Set turnout, reads data from a LogixNG table, for example the name of the turnout, and a memory is used for addressing the row or column in the table, the name of the memory was stored in the wrong place in the file. JMRI deals with this when the file is loaded so no user should be affected.
  • But if an existing file is loaded and then stored, the file will not work with JMRI versions pre 5.7.6.
  • ConditionalNGs can now be enabled/disabled by editing a LogixNG.
  • Scripts invoked by a ConditionalNG or Module can access current local variables. This makes it possible to use local variables as parameters for Jython scripts. See LogixNG Reference Chapter 13 for details.
  • The action Window to front has been improved and renamed to Window management. It can now show/hide a window, maximize/normalize/minimize a window and move the window to front or back.
  • The class jmri.jmrit.logixng.actions.NamedBeanType has been moved to jmri.jmrit.logixng.NamedBeanType. It should only affect JMRI developers.
  • Scripting:
  • YAAT 3.2: Add Hold and Release commands for signal heads and signal masts.
  • Signals:
  • Signal Systems:
  • Improved the FS-1987 signal system.
  • Throttle:
  • Throttle function button "lockable" behaviour was renamed as "latchable", as per issue #12975. Documentation updated accordingly.
  • Web Access:
  • add filter capability to web /tables
  • Web Server:
  • json: add whereLastSeen and whenLastSeen elements to type "car"
  • help: restore examples showing json syntax
  • home: don't hide /json and /simple links
  • Miscellaneous:
  • Improved the Italian translation around file locations and turnout states.

New in JMRI 5.7.5+R4933de1fc8 Test Release (Mar 10, 2024)

  • Hardware Support:
  • OpenLCB / LCC:
  • Updated the OpenLCB_Java library ot version 0.7.35 with improvements:
  • Better display of frames with leading zeros on their aliases
  • Better handling of unexpected alias collisions. These shouldn't actually happen if all goes well, but just in case it doesn't...
  • Adds support for the Verify Node Addressed message
  • Additions for better conformance with OpenLCB standards
  • Add the STL Editor tool to the OpenLCB/LCC menu. The tool is used to generate the STL logic for the RR-CirKits Tower LCC+Q. The Tower LCC+Q uses a subset of the Siemens Structured List PLC language.
  • New / Updated decoder definitions:
  • ZIMO:
  • LIPLDNW1 (N, TT) light bar
  • LIPLDNY1 (N, TT) light bar
  • LIPLDHW1 (H0, TT) light bar
  • LIPLDHY1 (H0, TT) light bar
  • LIPLDGY1 (G, 1, 2) light bar
  • LIPLDGW1 (G, 1, 2) light bar
  • Dispatcher:
  • Add an option to Ramp up and down using the speed profile such that the speed change takes place over the length of the section.
  • LogixNG:
  • Conversion to boolean has changed. Before JMRI 5.7.5, conversion from a string to boolean returned True if the string was not empty, and False if the string was empty. With JMRI 5.7.5, this has changed so that a string that's true (case insensitive) returns a boolean True and a string that's false (case insensitive) returns a boolean False. All other string values throw an exception. The earlier behaviour was not documented so it's unlikely that this affects users.
  • The old behaviour was based on how Jython converts a string to boolean. If you want the old behaviour, you can use the LogixNG formula function boolJython().
  • Local variables and Global variables can now be initialized to boolean values as well. True or false. Case insensitive.
  • The action Log local variables now has the option Show class name.If it is selected, the name of the class will be shown after the value. This is useful for debugging, when you want to know the type of the value.
  • The LogixNG function int() previously returned a Java Integer instead of a Java Long. This bug is now corrected. It shouldn't affect any existing LogixNGs. The difference between Integer and Long is that Long can handle much bigger integer values than Integer.
  • The LogixNG action Enable/Disable LogixNG has been added.
  • LogixNG formulas now supports Java arrays as well, for example if you use the Java method split() to split a string.
  • The LogixNG action For each now supports Java arrays as well, for example the result of the expression a_b.split("_").
  • The LogixNG action Set reporter has been added.
  • The actions Listen on Beans ... have been updated to fix a problem when several beans changes state at the same time.
  • Fixes a bug so that the methods toString(), getKey() and getValue() can be used for an item when using the action For each on a Map.
  • Adds the LogixNG functions strlen() in module String and length() in module Common.
  • Bug fix: The LogixNG function boolJython() now return false if the value is an empty array. It returns true if the value is a non empty array.
  • Bug fix: The LogixNG function evaluateMemory() didn't behaved as documented. It's now fixed.
  • The LogixNG functions cos(), tan(), atan(), sqr() and sqrt() has been added to the Math module.
  • Operations:
  • New feature allows users to quickly create a custom load for all car types.
  • Scripting:
  • Added three sample scripts:
  • AddPowerButton.py - shows how to add a button to the main PanelPro window. In this case, the button turns power on and off.
  • MainWindowToBack.py - moves the main PanelPro window to the back. Useful when you want PanelPro to start up with a panel at the front of the screen.
  • MenuItemDisable.py - shows how to disable menu items so they can't be used. Sample disables LocoNet ability to reset slots, and ability to start the WiThrottle server. Meant for e.g. club use.
  • Miscellaneous:
  • Improve handling of block values that contain IdTags across shutdown and startup.

New in JMRI 5.7.4+Rb028ee0124 Test Release (Feb 10, 2024)

  • Hardware Support:
  • LocoNet:
  • Several tools have improved layout when the screen size is reduced.
  • LocoNet Monitor has improved reporting of "Query Mode" messages.
  • MQTT:
  • Fixed missing topic unsubscribes when deleting turnouts, sensors, etc
  • Fixed missing topic unsubscribe on throttle release for cab functions
  • Added code to properly dispose of MQTT components
  • MRC:
  • MRC serial connections should use odd parity.
  • OpenLCB / LCC:
  • Updated script DisplayTrackCircuit.py to support the Tower +Que node
  • This script populates a set of events to match the traffic circuit and then creates a listener for them. That listener populates and maintains a memory to show text for the state of the traffic circuit.
  • Several tools have improved layout when the screen size is reduced.
  • Added an "ID Tool". This will cause the transmit LED on one physical node to flash. This can be a convenient way to identify which physical node underneath the layout is the one you're working with in JMRI, e.g. when you need to move a wire.
  • Configuration of large String fields now has an improved interface: You can see how many characters remain in the large field and word breaks are now respected.
  • The Event Table now has buttons to copy Sensor and Turnout user names into the relevant Event ID names. These only fill in blank Event ID names, they don't overwrite any names you might have already entered.
  • Fixed a bug in the event table that could cause duplicate event listings.
  • New / Updated decoder definitions:
  • MD Electronics:
  • New definition for the mXion DRIVE-L decoder.
  • PIKO:
  • Add CVs for PMW modulations, add tooltips
  • SoundTraxx:
  • Genesis OEM add new models
  • Uhlenbrock:
  • Add CVs for PMW modulations, add tooltips
  • LogixNG:
  • The action Table: For each can now loop thru the headers too. If indirect addressing is used for the row or column name, use the empty string to get the headers.
  • The action Table is added. It lets the user set the value of a cell in a LogixNG table.
  • The action Request update of sensor is added. It requests that the state of a sensor is updated from the layout, if possible. Not all connections supports this, for example LocoNet.
  • LogixNG has two new preferences which are disabled by default:
  • Use strict typing of global variables
  • Use strict typing of local variables
  • If strict typing is enabled, local and global variables that are initialized to a string, integer or floating number cannot be set to a value of another type. LogixNG will try to convert the new value to the desired type, for example a local variable of type floating number will be assigned the value 12.0 if it's assigned 12 and it will be assigned the value 32. if it's assigned the string "32.5".
  • Local and global variables that are initialized to another type, for example array, map or LogixNG table can't be assigned a new value.
  • If you want to use strict typing but still want to override this setting for a particular local or global variable, then initialize this variable to None. Variables that are initialized to None will not have strict typing,
  • A new preference is added that selects if the If Then Else action should have Execute on change or Always execute as the default.
  • The expression Sensor Edge no longer supports indirect addressing of the sensor. It has never really worked since Sensor Edge needs to listen on the sensor and it cannot listen on a sensor if indirect addressing is used.
  • If a panel is loaded and a Sensor Edge expression uses indirect addressing, an error message is added to the log:
  • Error during loading Sensor Edge expression IQDE:AUTO:0003 due to: Addressing must be Direct
  • where IQDE:AUTO:0003 is the system name of the expression.
  • The action Window to front as been added. It brings a window to the front and can be used if you for example want to have an icon on a panel that moves focus to another window.
  • The action Decode JSON is added. It decodes a JSON string in a local variable to a JsonNode tree and puts it in another local variable.
  • LogixNG formula now supports JSON as well. It's in particular useful together with the action Decode JSON. A JSON dataset can be indexed as a map or as an array, for example by MyJson{"decoder}{"model"}[4]. The result is a Json text node, so use the str() function to convert the value to a string afterwards.
  • Resources:
  • Added a blue medium LED.
  • Routes:
  • You can now specify where the control turnout should have its known state (the default old behavior) or its commanded state checked to see if the route should be set. This can be useful e.g. if you have feedback set on the turnout and want to react quickly to a commanded change.
  • Signals:
  • Signal Masts:
  • Fixed bug where no dialogue would display when Discovering Signalling Mast Pairs and Layout Block Routing is not enabled.
  • Cab Signals:
  • Initial support for creating ERTMS / ETCS Driver Interfaces
  • Turnouts, Lights, Sensors and other elements:
  • Fixed a bug where deleting the last (highest-numbered) Turnout would throw an exception.
  • Fixed a Turnout Table bug where an incorrect border may display in Turnout Feedback.
  • Miscellaneous:
  • The JOAL library has been updated to run natively on Windows and Linux machines.

New in JMRI 5.7.1+R41ea16dbb5 Test Release (Dec 18, 2023)

  • Hardware Support
  • CBUS
  • CBUS serial connections have been updated to use a new serial library.
  • Console - Improved Statistics display
  • C/MRI
  • C/MRI serial connections have been updated to use a new serial library.
  • EasyDCC
  • EasyDCC serial connections have been updated to use a new serial library.
  • Lenz XPressNet
  • Lenz XPressNet connections have been updated to use a new serial library.
  • LocoNet
  • LocoNet serial connections have been updated to use a new serial library.
  • MERG
  • MERG CAN serial connections have been updated to use a new serial library.
  • MRC:
  • MERG CAN serial connections have been updated to use a new serial library.
  • NCE:
  • Support for PH5 added:
  • This required rewriting how memory addresses were managed for all NCE systems. This required significant code changes for anything where JMRI is addressing memory in the command stations.
  • NCE Packet Monitor - added new baud rate selection for new version of device.
  • OpenLCB / LCC:
  • OpenLCB/LCC serial connections have been updated to use a new serial library.
  • Fixed an index exception while the Event Table is writing a CSV file.
  • Powerline:
  • Powerline connections have been updated to use a new serial library.
  • RFID:
  • RFID connections have been updated to use a new serial library.
  • SPROG:
  • SPROG serial connections have been updated to use a new serial library. This should fix the incompatibility with recent macOS versions.
  • TMCC:
  • TMCC serial connections have been updated to use a new serial library.
  • Zimo MXULF:
  • ZIMO serial connections have been updated to use a new serial library.
  • New / Updated decoder definitions:
  • Logic Rail Technology:
  • Added a definition for the LightEFX16.
  • Technologistic (train-O-matic):
  • Added Lokommander II Next18 decoder used in NMJ Skd224 models
  • PanelPro:
  • The path for the backupPanels directory has been fixed so that it now refers to the user files location instead of the profile location. This only affects the backup files location when user data is shared by multiple profiles.
  • The File ⇒ Show file history content has been enhanced. The app entries show the JMRI version. The Store entries show the name of the file that was created.
  • Signals:
  • Signal Systems:
  • The FS-1987 signal system was updated to have better aspect ordering.
  • Throttle:
  • Throttle Save menu entry behaviour was updated. Documentation updated accordingly.
  • Default Throttle UI on a new JMRI setup are now using icons and colors, can be reverted to classic in Preferences (see “Enable button icons when available“ and “Use large speed slider and control buttons“ throttle preferences entry )
  • Where Used:
  • Add Logix, LogixNG and Panels to the Reporter where used.
  • Web Server:
  • Add browser WebSocket support message to About page
  • Miscellaneous:
  • Added a SPI mechanism for extending the Tools menu.
  • The Linux and macOS application launchers and the Ant build process have been updated to allow access to jar files in the settings:lib/ directory. This gives creators of JMRI plug-ins a way to distribute their code separate from JMRI.
  • The Windows application launcher has been updated to allow access to jar files in the settings:lib/ directory. This gives creators of JMRI plug-ins a way to distribute their code separate from JMRI.
  • Plugins can now have help files, including images and css files, withing the JAR file. See PR #12705 and JmriPlugin for example and documentation.
  • Improve how JMRI avoids opening a new window on top of an existing one.
  • JMRI is now using a new serial library. See the above hardware section for which types of connections have been migrated to this new library.

New in JMRI 5.6+R89a87446cb (Dec 15, 2023)

  • Hardware Support:
  • BiDiB:
  • Eckart Meyer has provided a first implementation for the BiDiB system connection.
  • C/MRI:
  • Provided an extra copy of the output data when preparing C/MRI output data for a "T" ("Transmit") message type. This prevents a "data buffer overrun" in a pre-configured buffer when the output data changes when the process assemble the data. (The previous implementation could run out of available bytes in the buffer, and the data would not be sent.)
  • Fix the Update button on the sensor table for C/MRI sensors.
  • DCC++ and DCC-EX:
  • Call "Roster Export to DCC-EX" from DCC++ menu
  • Traffic Monitor - Added option to suppress the parsed text
  • New Virtual LCD window
  • LocoNet:
  • Shutdown LocoNetOverTcp connection cleanly when program ends
  • LocoNet Server and LocoNet Client have been removed. If you are using these, you need to change the connection to LocoNet over TCP instead.
  • Added a DecoderPro definition for the DS78V. This required code changes, so this definition will not work with earlier versions of JMRI.
  • The jython/loconet/LnEditEvolutionRoutesAndOpSw.py script has been updated to version 2.0. This script allows you to configure the OpSw and routes in the new Digitrax Series 7 boards.
  • The jython/loconet/PGM_DS74_GEN.py can be used to program DS74 boards from a configuration held in a text file.
  • Fix NPE, and decode Extended Accessory Signal Aspect IMM commands
  • Fix LnSendTool.py to correctly send signal aspects up to 255 NMRA 2.4.3
  • Added LocoNet Monitor support for PM74.
  • Improved the internal queuing mechanism for transmitted messages. This will prevent messages being delayed occasionally.
  • MQTT:
  • Improve threading on MQTT Reporters to reduce latency.
  • Added support for Track Power control
  • Added support for throttle control - speed, direction, and functions
  • Added support for Command Station consists
  • Fixed bug that stopped retained MQTT messages from being received on start up.
  • Clear Last Will and Testament on startup
  • Fixed issue with invalid throttle speed message causing MQTT to disconnect
  • Improved robustness of MQTT Event Listener exception handling
  • Fixed issue with MQTT LWT messages
  • Changed throttle loco address placeholder in MQTT topics to {0} for consistency with other objects
  • Changed throttle function placeholder in MQTT topics to {1} for consistency with other objects
  • Fixed an issue in introduced in 5.5.5 where the incorrect default topics were used for Direction and Function. The documenation was correct but the code wasn't.
  • JMRI will now use the railroad name from the preferences when creating the client ID. This will make it easier to identify the JMRI connection in the MQTT broker logs.
  • OpenLCB / LCC:
  • Add upload and download of the CS-105 consisting information to and from the DecoderPro roster entry's consisting bits.
  • Added two new jython/LCC/CSVToNodeBackup.py and jython/LCC/NodeBackupToCSV.py scripts for converting node backup files back and forth to CSV files.
  • OpenLCB library updated through PR 231.
  • Added a contextual menu (right click, ctrl click) to tabs in the CDI display that contains "Copy" and "Paste" options. Copy and paste works both within one window and across windows. You can only paste into a tab of the same type from which you copied. The data stored in the clipboard is in the format of the usual backup files.
  • Added a Send PIP Inquiry button to the Send tool
  • The presentation of the "Send Frame" tool was improved.
  • Fixed some subtle bugs when pasting CDI panes.
  • Improved how tab numbering is done when creating a CDI display.
  • Added the invert option to OpenLCB/LCC Turnouts.
  • Added the ability to send Identified message as Valid/Invalid/Unknown to the Send Message tool.
  • Fixed a bug that could cause an exception when closing a configuration window.
  • Better aligned the Event IDs displayed in the monitor window.
  • Updates to most recent OpenLCB Java library, which includes
  • Better status logging of save and restore operations
  • Allows user to change the default backup filename using a script like jython/LCC/ChangeDefaultBackupFileName.py
  • Fixes a problem that could cause the configuration dialog to not open for certain nodes, including the DCC-LCC Gateway.
  • Fixes the display of the "Simple Protocol" availability bit
  • Added Window and Help menus to the Configure Node window.
  • The Configure Nodes window will now remember your selected sort order from one run to the next.
  • Added Window and Help menus to the Configure Node window.
  • Added support for multiple OpenLCB connections in Signal Masts add/edit dialog.
  • Added GUI Icons for OpenLCB signal masts in the add/edit dialog.
  • Fixed a bug where doing Quit while a CDI window is open with changes didn't properly handle user response to the Cancel/Quit dialog box.
  • Update openlcb.jar to Maven Central version 0.7.33
  • Improve the layout of the firmware download page.
  • Added SPROG DCC Ltd PI-LCC Raspberry Pi CAN adapter
  • Added SPROG DCC Ltd USB-LCC CAN adapter
  • Fix a problem that would sometimes leave the node list improperly sorted
  • Reduced the start up delay when opening the OpenLCB hub.
  • Changed the formatting of the CSV file written by the Event Table so that multiple paths are broken out into multiple columns
  • Raspberry Pi GPIO pins:
  • Added support for Turnouts in the RPi simulator.
  • Roco z21/Z21:
  • JMRI will now leave the layout power unchanged when it terminates. Previously, it would turn the power on if it was off.
  • Removed a spurious error message from the Z21 Simulator connection.
  • RFID:
  • New Getting Started document
  • Script to update Car/Locomotive Tables when new/changed RFID tag seen
  • SPROG:
  • Track power ON at startup option would turn on track power but not send packets, requiring track power to be cycled. Fixed.
  • Added PI-LCC Raspberry Pi CAN adapter for OpenLCB
  • Added USB-LCC CAN adapter for OpenLCB
  • TAMS:
  • New decoder definition for the LD-G-9 decoder.
  • New / Updated decoder definitions:
  • BLI:
  • Fix a problem where the Paragon 2's horn selection wasn't showing.
  • Digitrax:
  • Updated the Series 7 SFX decoder definition.
  • Doehler & Haas:
  • added PD06A, PD18A, PD18MU and PD21A and 2nd generation-decoder of DH-series
  • disable unimplemented CV by PD-series
  • new definition-files for FW 1.13 for SD*-, FW 1.15 for SH*-, FW 3.13 for DH*-decoder
  • ESU:
  • The LokPilot Basic 1.0 decoder definition is now product-ID specific.
  • Added "LokSound 5 micro DCC Direct Atlas Legacy".
  • Added support for "Tone Control" for LokSound 5 (requires firmware 5.9.159 or higher).
  • LEB:
  • Added the LEB signal decoders
  • Piko:
  • Add CVs for Extended Function Mapping Shift Bank 1 & 2
  • Add Decoders for Piko BR 93 TT XP 5.1 Sound, Piko BR 55 TT XP 5.1 Sound, Piko Smart Decoder XP 5.1 Sound Blank
  • Support of Decoder XP5.1 FW 1.1 to FW 1.9 and Update Decoder Definitions, Changing pane layout
  • Public Domain and DIY decoders:
  • Updated to support FREDi v2.2
  • FREDi - Cleanup; Removed obsolete (leftover) settings from one of the sub-files
  • QSI:
  • Added function labels for Ver 6 Steam and Diesel definitions
  • SoundTraxx:
  • TSU2/BLU/ECO ID update with some model additions
  • Added a definition for the Blunami PNP8.
  • TCS:
  • FW89 add V2 add highVersionID
  • Technologistic (train-O-matic):
  • Support for the latest v6 firmware version of the Lokommander II decoders.
  • productID support for all train-O-matic decoders, allows for automatic decoder detection.
  • Support for the FD Micro function decoder family.
  • Uhlenbrock:
  • Some translations to German and pane design changes
  • DecoderPro:
  • Added ability to identify Dietz decoder models with CV128
  • Moved an excessive warning message to being a debug message
  • Now looks for .txt extension on files being imported from the LokProgrammer.
  • DecoderPro can now identify products in the HN7000 decoder family.
  • Fixed a bug that prevented output labels from properly showing up in some decoder definitions.
  • Dispatcher:
  • In auto trains, after stopping, or going to manual, resume correctly even if in a section with no signal.
  • Check each section against reserved sections for conflicting blocks.
  • Do not turn off block alternate colour when it has already be reallocated.
  • Add TransitAction TERMINATE
  • Add TransitAction LOADTRAININFO
  • Process Delays for Active/InActive sensor actions
  • Process delays for OnTrainStop
  • Remove delays for Exit Section as they cannot be processed
  • Layout Editor:
  • A number of issues with the Shape tool have been resolved including Java exceptions and the possibility of truncated shape lines.
  • The Layout Editor help page has been updated with details for using Shapes.
  • Previously, Reporter icons would display "<no report>" when the report information was null, i.e. there was no information available from the Reporter. This has been changed to a hyphen ("-") when there's no information available to reduce screen clutter on complex panels.
  • Labels and icons on a panel can now have one or more classes. This is useful if the label/icon is controlled by LogixNG.
  • Add option(s) for restoring block values, issue #12459
  • The LogixNG Icon has been added to the toolbars. The LogixNG Icon can run inline LogixNGs by clicking on the icon or text label when converted to text.
  • The Audio Icon has been added to the toolbars. The Audio Icon can play a sound on a web panel, for example a Tablet.
  • NX - Entry/Exit Tool:
  • Fix Both Way route selection.
  • Validate the sensor selections for the Add Pair action.
  • Check for LogixNG references before deleting an Entry/Exit pair.
  • LogixNG:
  • Note: If tables and panels are stored with this JMRI version, the file might not load in a previous version of JMRI if it includes LogixNG. This is because JMRI now stores some LogixNG data in a different way than before.
  • New actions:
  • The Icon/Label by class on panel action is added. It allows LogixNG to control all icons/labels of a class.
  • The action Throttle function has been added. It's similar to the action Throttle, except that it only sets a function, not speed or direction, and that it doesn't have any child actions.
  • The action Audio icon on web panel is added to the category Display. This action can tell an Audio icon on a Panel editor to play the sound when the panel is shown in a web browser, for example on a tablet or mobile phone.
  • The action Timer has been improved. It can now be used within a LogixNG module. It also supports local variables to tell the different delays for the timers in the Timer action.
  • To use the Timer action in a LogixNG module, have an Always true expression as Start expression for the Timer action, together with the option Start/Stop by Start expression selected.
  • The action Block and the expressions Block, Dispatcher and Sensor has been refactored.
  • Improved actions:
  • The action Sequence is now safe to use in LogixNG modules. The action had a bug which made it sometimes fail if it was used in a module and that module was called from several ConditionalNGs at once.
  • A bug in the LogixNG action Logix has been fixed. The Logix feature When triggered didn't work with the LogixNG action Logix but has now been resolved.
  • The action On Change has been renamed to Logix Action.
  • The Entry/Exit action can activate and deactivate Entry/Exit routes, including activating a reversed route if the Entry/Exit pair has the Both Way option enabled.
  • The action Audio no longer let the user select an Audio buffer when edition the action. LogixNG can only act on Audio sources and the Audio listener so there is no point in selecting an audio buffer for LogixNG.
  • New expressions:
  • The expression File as flag has been added. It returns true if a particular file exists.
  • The Audio expression has been added. It lets LogixNG listen on an Audio and take appropriate action.
  • The expression Timer has been added. It returns False until some time has passed. It then returns True once and the timer starts again. This expression is intended to be used together with the action Sequence.
  • Improved expressions:
  • Warrant expression was not listening for warrant events. Fixed along with the long description.
  • The expression Entry/exit can now check if a entry/exit is reversed or bidirectional.
  • Other improvements:
  • A new LogixNG icon has been added to Panel Editor. When the icon is clicked, it will execute the inline LogixNG of that icon. If the inline LogixNG has several ConditionalNGs, the ConditionalNGs will be executed in the order they got created.
  • A new option is added to the ConditionalNG table when editing a LogixNG. By default, all the ConditionalNGs are executed when the panel is loaded if the LogixNG is enabled. But if the Startup checkbox is unchecked, the ConditionalNG will not be executed when the panel is loaded. This is in particular useful for the LogixNG icon that's added in this JMRI version.
  • A new tool Where Used has been added to LogixNG. It shows where in the LogixNG tree an item is used. The tool is found on menu item Tools ? LogixNG ? Where Used.
  • Add the GET_BLOCK_WARRANT and GET_BLOCK_TRAIN_NAME OBlock actions to the OBlock Logix import.
  • Operations:
  • Improvements to the routing code. Program will not use an interchange track if the same train can drop and pull a car.
  • Fixed a bug with export routes.
  • Fixed close on Save for several windows.
  • New tools "Preview and Print Car routing report" in the "Set Car" window that provides the train routing for a car that has a final destination.
  • New tool "Show Staging and Schedules by Car Type and Load" in the "Schedules" window that shows which car types and loads are shipped from staging.
  • New feature for spurs, the ability to prevent a car's load change. Useful when the spur/schedule is used for a RIP track.
  • New feature for staging, planned pickups.
  • Improvements to the car, locomotive, and train preview and print tools.
  • Minor improvement to the train build report when routing.
  • Improvements to the router when determining a valid route where multiple trains are using the same route.
  • Updates to the OperationsPro help.
  • To see all changes to OperationsPro, use the link below
  • OperationsPro Changes
  • Script to update Car/Locomotive Tables on update to Id Tag Table User Name
  • Panel Editor:
  • Labels and icons on a panel can now have one or more classes. This is useful if the label/icon is controlled by LogixNG.
  • A new LogixNG icon has been added to Panel Editor. When the icon is clicked, it will execute the inline LogixNG of that icon. If the inline LogixNG has several ConditionalNGs, the ConditionalNGs will be executed in the order they got created.
  • It's now possible to select an icon below another icon. Right-click on the icon to open the popup menu of the icon. If there are any icons at the mouse position below this icon, the sub menu Icons below will appear at the end of the popup menu. The sub menu will contain all the icons below this icon. These menu items will open the popup menu for for its icon.
  • A new Audio icon has been added to Panel Editor. It can be used to play audio on a web panel, or let the user start playing sound in JMRI by clicking on the Audio icon. When editing the panel, the popup menu for the icon has a new sub menu Web panels that sets the options for how the icon should act on a web panel.
  • If the icon is used to play sound on a web panel, the option Hide when not editing might be useful if the user shouldn't see the icon. The icon plays the sound even if it's not visible.
  • The LogixNG action Audio icon on web panel can be used to tell the Audio icon to play the sound when it is displayed on a web browser, for example on a tablet or mobile phone.
  • Control Panel Editor:
  • Labels and icons on a panel can now have one or more classes. This is useful if the label/icon is controlled by LogixNG.
  • Preferences:
  • Custom default.lcf Logging Control Files will cease to take effect.
  • To create a custom default_lcf.xml in the new Logging Configuration format, see JMRI Debugging and Logging
  • The Shutdown preference has two options for ignoring special kinds of changes. The first is to ignore fast clock changes, the second ignores the text and background color changes for sensors that have been changed to panel labels.
  • The startup action Open file has been renamed to Load table content and panels.
  • Each startup action now has an Enabled checkbox so that each startup action can be enabled/disabled.
  • Scripting:
  • Add "idtags" as a script shortcut to the manager like "turnouts" and "sensors"
  • Add a "jython/RunSystemCommandExample.py" sample for how to run a system command from a JMRI script.
  • Scripts that output Logging statements with log4j should be updated to import sl4fj logging.
  • See here for some examples on how to do this.
  • Scripts that output Logging statements with log4jv1.x ( org.apache.log4j ) imports will stop working and should be updated to use SLF4J logging.
  • See here for some examples on how to do this.
  • TurnoutStatePersistence.py was not correctly updated to use SLF4J in 5.5.3, fixed in 5.5.4
  • YAAT: Change function number limit from 28 to 68.
  • YAAT: Add a random delay time: Wait for <n> [to <n>] seconds
  • Signals:
  • Signal Systems:
  • Pino Di Biasi provided a Swiss Railways (SBB in German, CFF in French and FFS in Italian) signal system definition.
  • The aspects in the FS-1987 signal system were updated.
  • The Italian FS-1987 signal system was updated for better operation.
  • Switchboard Editor:
  • Some improvements to how text is sized that will make the display occupy space a little better.
  • Turnouts, Lights, Sensors and other elements:
  • UI improvements to the Turnout Table.
  • Memory Usernames for IMCURRENTTIME and IMRATEFACTOR can now be loaded from xml file.
  • Fixed a bug that would cause problems when DELAYED feedback was selected.
  • Virtual Sound Decoder:
  • Added LayoutEditor turntable support for VSD navigation through a panel.
  • Fixed a bug with wrong direction in an oval layout.
  • Minor change on the Manager window GUI. The windows for adding a VSDecoder and to handle the option now are centered to the manager window. This is not a functional change.
  • Removed unimplemented methods for "AudioMode" and "DefaultVSDFileName".
  • Removed deprecated method isPlaying - use Audio.STATE_PLAYING.
  • Added optional portable file access in VSD. To be used in Roster Media (VSDecoder_Path) and VSD Preferences (Default VSD File Path). For Portable File Access see here.
  • Take actual speed instead of nominal speed for the distance calculation (impact for steam1).
  • New option "chuff-fade-out" for steam1, see the documentation.
  • Warrants:
  • Fixed problems that were causing Learn Warrant to fail
  • Web Server:
  • json car, engine: remove location, set unknown flag, remove from train
  • Web Access:
  • panel.js - add data-panel-name attribute to support panel-specific css
  • Web tables: add click toggle for several additional columns
  • JSON Server: support for updating SignalHead and SignalMast Lit and Held
  • JMRI Web Frame Server can now access many of the Dialog popup boxes.
  • Other Tools:
  • The Power Control now defaults to display all connections.
  • Handle ServerSideIncludes for /help folder #12638, makes Help from the local web server match the online version
  • Miscellaneous:
  • IdTags now request the main IdTagManager instead of requesting a ProxyIdManager to get better initialization.
  • Added JMRI version number to the bottom of generated Javadoc.
  • Updated the Java Native Access (JNA) library to version 5.13.0. Updated the Pure Java Comm library to a custom version that should work better on Apple Silicon (M1, M2) Macs.
  • A signal handler has been added to the Shutdown manager such that a "kill <pid>" command on Mac or Linux will do a normal shutdown. This is particularly useful for e.g. running headless on an RPi. "kill -HUP <pid>" will cause JMRI to quit and restart. In addition, the Mac and Linux startup scripts were updated to pass these signals on to the running process. Together, this will allow you to run JMRI as a service on Mac and Linux, including the RPi.
  • The external libraries used for Logging have been updated.
  • The Hide when empty and not editing menu item has been added to the right click pop-up menus for block content labels, memory labels and LogixNG global variable labels. This applies to Panel Editor, Control Panel Editor and Layout Editor panels.
  • Added a jython/test/loconet directory for LocoNet-specific scripting tests, along with an initial test.
  • Logging Configuration Files have moved to the xml format, eg. default_lcf.xml
  • Custom default.lcf Logging Control Files will cease to take effect.
  • To create a custom default_lcf.xml in the new format, see JMRI Debugging and Logging
  • Logging levels ( eg. INFO, DEBUG ) can be changed for the current session in Display / Edit Log Categories
  • Logging Libraries have been fully updated to Log4J 2.20
  • The Rolling Log files have been renamd from messages.log.1 and messages.log.2 to messages.1.log and messages.2.log
  • The way data is entered in memory icons, block icons and global variable icons have been improved.
  • You can now set the preferences to open the RailCom table at startup.
  • The analog fast clock now shows when the fast clock has been stopped.
  • Updated batik-transcoder 1.14 to 1.17, resolving a security issue
  • Improvements to Dialog boxes when displayed with "Always On Top" window frames present.
  • Improved Unrecoverable Error Dialog.
  • JMRI now has a "Software Bill of Materials" (SBOM) distributed with it. Although this won't matter to most users, it allows people to determine via the standardized SPDX mechanism the libraries that JMRI contains and the versions being used. Providing this is a small step toward more automated distribution.
  • UI improvements for the Display / Edit Log Categories dialog.
  • (For developers) Our CI process has been updated to require the @Override annotation on overriding methods and removal of unused import statements.
  • Fixed a validation errors in the xml/schema/auxiliary-configuration.xsd file.
  • Fixed a problem where the run/pause button would not properly show when the Nixie, LCD or Pragotron clocks were resized.
  • Fixed a problem that prevented JMRI from launching on macOS if Java 21 was in use. (Java 11 is still the recommended one)
  • Improved the "Updating Decoder Definitions" page.

New in JMRI 5.5.8+R41dc14dfe0 Test Release (Dec 8, 2023)

  • Fix a problem where the Paragon 2's horn selection wasn't showing.

New in JMRI 5.5.7+R0d26427e10 Test Release (Nov 29, 2023)

  • Hardware Support:
  • LocoNet:
  • Added LocoNet Monitor support for PM74.
  • Improved the internal queuing mechanism for transmitted messages. This will prevent messages being delayed occasionally.
  • MQTT:
  • JMRI will now use the railroad name from the preferences when creating the client ID. This will make it easier to identify the JMRI connection in the MQTT broker logs.
  • OpenLCB / LCC:
  • Update openlcb.jar to Maven Central version 0.7.33
  • Improve the layout of the firmware download page.
  • Added SPROG DCC Ltd PI-LCC Raspberry Pi CAN adapter
  • Added SPROG DCC Ltd USB-LCC CAN adapter
  • Fix a problem that would sometimes leave the node list improperly sorted
  • Reduced the start up delay when opening the OpenLCB hub.
  • Changed the formatting of the CSV file written by the Event Table so that multiple paths are broken out into multiple columns
  • Raspberry Pi GPIO pins:
  • Added support for Turnouts in the RPi simulator.
  • Roco z21/Z21:
  • Removed a spurious error message from the Z21 Simulator connection.
  • SPROG:
  • Added PI-LCC Raspberry Pi CAN adapter for OpenLCB
  • Added USB-LCC CAN adapter for OpenLCB
  • New / Updated decoder definitions:
  • ESU:
  • Added "LokSound 5 micro DCC Direct Atlas Legacy".
  • Added support for "Tone Control" for LokSound 5 (requires firmware 5.9.159 or higher).
  • Technologistic (train-O-matic):
  • Support for the FD Micro function decoder family.
  • Layout Editor:
  • NX - Entry/Exit Tool:
  • Validate the sensor selections for the Add Pair action.
  • Check for LogixNG references before deleting an Entry/Exit pair.
  • LogixNG:
  • The expression Entry/exit can now check if a entry/exit is reversed or bidirectional.
  • The Entry/Exit action can activate and deactivate Entry/Exit routes, including activating a reversed route if the Entry/Exit pair has the Both Way option enabled.
  • Turnouts, Lights, Sensors and other elements:
  • Fixed a bug that would cause problems when DELAYED feedback was selected.
  • Web Server:
  • Handle ServerSideIncludes for /help folder #12638, makes Help from the local web server match the online version
  • Miscellaneous:
  • Improved the "Updating Decoder Definitions" page.

New in JMRI 5.5.5+R20456fe2e6 Test Release (Oct 8, 2023)

  • New warnings for this release:
  • XML files with table contents and panels have been changed in JMRI 5.5.5. It's therefore not possible to load an xml file with tables and panels that has been created with JMRI 5.5.5 or later with a JMRI version pre 5.5.5.
  • MQTT Connection - Throttle loco address and function placeholders in MQTT topics have changed from $address and $function to {0} and {1} for consistency with other objects.

New in JMRI 5.5.3+R14eed294c9 (Aug 8, 2023)

  • Hardware Support:
  • C/MRI:
  • Provided an extra copy of the output data when preparing C/MRI output data for a "T" ("Transmit") message type. This prevents a "data buffer overrun" in a pre-configured buffer when the output data changes when the process assemble the data. (The previous implementation could run out of available bytes in the buffer, and the data would not be sent.)
  • DCC++ and DCC-EX:
  • Call "Roster Export to DCC-EX" from DCC++ menu
  • Traffic Monitor - Added option to suppress the parsed text
  • LocoNet:
  • LocoNet Server and LocoNet Client have been removed. If you are using these, you need to change the connection to LocoNet over TCP instead.
  • OpenLCB / LCC:
  • OpenLCB library updated through PR 231.
  • Added a contextual menu (right click, ctrl click) to tabs in the CDI display that contains "Copy" and "Paste" options. Copy and paste works both within one window and across windows. You can only paste into a tab of the same type from which you copied. The data stored in the clipboard is in the format of the usual backup files.
  • Added a Send PIP Inquiry button to the Send tool
  • Roco z21/Z21:
  • JMRI will now leave the layout power unchanged when it terminates. Previously, it would turn the power on if it was off.
  • SPROG:
  • Track power ON at startup option would turn on track power but not send packets, requiring track power to be cycled. Fixed.
  • TAMS:
  • New decoder definition for the LD-G-9 decoder.
  • New / Updated decoder definitions:
  • Doehler & Haas:
  • added PD06A, PD18A, PD18MU and PD21A and 2nd generation-decoder of DH-series
  • disable unimplemented CV by PD-series
  • new definition-files for FW 1.13 for SD*-, FW 1.15 for SH*-, FW 3.13 for DH*-decoder
  • Piko:
  • Add CVs for Extended Function Mapping Shift Bank 1 & 2
  • QSI:
  • Added function labels for Ver 6 Steam and Diesel definitions
  • Uhlenbrock:
  • Some translations to German and pane design changes
  • Scripting:
  • Add a "jython/RunSystemCommandExample.py" sample for how to run a system command from a JMRI script.
  • Scripts that output Logging statements with log4j should be updated to import sl4fj logging.
  • See here for some examples on how to do this.
  • Signals:
  • Signal Systems:
  • Pino Di Biasi provided a Swiss Railways (SBB in German, CFF in French and FFS in Italian) signal system definition.
  • Virtual Sound Decoder:
  • Fixed a bug with wrong direction in an oval layout.
  • Minor change on the Manager window GUI. The windows for adding a VSDecoder and to handle the option now are centered to the manager window. This is not a functional change.
  • Removed unimplemented methods for "AudioMode" and "DefaultVSDFileName".
  • Miscellaneous:
  • The external libraries used for Logging have been updated.
  • The Hide when empty and not editing menu item has been added to the right click pop-up menus for block content labels, memory labels and LogixNG global variable labels. This applies to Panel Editor, Control Panel Editor and Layout Editor panels.
  • Added a jython/test/loconet directory for LocoNet-specific scripting tests, along with an initial test.

New in JMRI 5.3.8+R3118d386b3 (Jun 24, 2023)

  • Hardware Support:
  • OpenLCB / LCC:
  • Fixed a bug that was sometimes preventing the consumer node name info from displaying in the Event Table.
  • Fix some minor bugs in DecoderPro's exporting of roster entries to the CS-105 command station and to backup files.
  • Improved instructions for DecoderPro's import from and export to TCS CS-105 command stations.
  • Fix a problem that could cause an upload via the Memory Tool to fail.
  • New / Updated decoder definitions:
  • ZIMO:
  • Added some more german translation for MX-, MS- and MN-Decoders
  • Some small corrections
  • Layout Editor:
  • Fixed a problem that was causing Memory and Block contents to be slow to update.
  • LogixNG:
  • For the action For each, Variable is renamed to Local variable to make it consistent with the naming of the rest of LogixNG.

New in JMRI 5.3.7+Rdeb1a36dce (Jun 10, 2023)

  • Is your current version older than JMRI 4.12? If so, then update to JMRI 4.12 first, and ensure everything works correctly: check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Store your configuration and panel files under a new name and use those from now on. Then continue with step 2.
  • If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this), then it's very important that you update to JMRI 4.12 and carrying out the migration process described in the JMRI 4.12 release note before updating to any later release.
  • Is your current version older than JMRI 4.20? Then update to JMRI 4.20 first, and ensure that works correctly (check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Save your preferences again. Store your configuration and panel files under a new name, use those from now on, and go on to step 3.
  • Is your current version older than JMRI 4.24? Then update to JMRI 4.24 first, and ensure that works correctly (check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Save your preferences again. Store your configuration and panel files under a new name and use those from now on.
  • Is your current version older than JMRI 5.0? Then update to JMRI 5.0 first, and ensure that works correctly (check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Save your preferences again. Store your configuration and panel files under a new name and use those from now on.
  • You can then install this release.

New in JMRI 5.3.4+Raae2040ea3 Test Release (Mar 11, 2023)

  • Hardware Support:
  • CBUS:
  • The CBUS Hub Control can be used to share the CBUS connection locally and onto a LAN.
  • LocoNet:
  • Added support for the programming protocol used by Digitrax Series 7 boards (DS74, SE74, etc)
  • OpenLCB / LCC:
  • Hub Control - UI Update, line termination characters optional for incoming feeds.
  • When downloading firmware to multiple boards, it can be a pain to have to select the file over and over. This was changed to make the selected file (hence directory, etc) persistent from one download frame to the next.
  • Show more information in the node selector when doing firmware downloads.
  • Updated the default filename when doing backups to contain more identification info.
  • The OpenLCB library was updated to the current contents as of PR #214
  • There's a new "Event Table" tool that shows all the events on the network and which nodes produce and consume them.
  • There's a new "Memory Tool" that lets you get the contents of node memory spaces into a local binary file, and put the contents of a file back into a node memory space.
  • Now shows more about JMRI nodes in the Configure Nodes window.
  • Updated the openlcb.jar library to version 0.7.32 including multiple GUI, functional and error handling improvements.
  • New / Updated decoder definitions:
  • Digitrax:
  • Added SE74 usage information to the Digitrax/LocoNet hardware help page, including specific guidance for configuring JMRI's signaling, and typo fixes.
  • Added DecoderPro definitions for the DS74 and SE74 OpSwitches.
  • Added a loconet/LnEditEvolutionRoutesAndOpSw.py script that lets you configure the routes in a Digitrax Series 7 board e.g. DS74 and DS74.
  • DecoderPro:
  • The decoder index is being written in a more compact form to improve the time spent reading it at startup.
  • Two new decoder-index attributes suppressFunctionLabels and suppressRosterMedia can be used to suppress those panes in the DecoderPro GUI.
  • Two new import and two new export options have been added to DecoderPro.
  • You can directly export a DecoderPro roster entry to a TCS CS-105 command station roster entry.
  • You can directly import a TCS CS-105 command station roster entry to a DecoderPro roster entry.
  • You can export a roster entry to a CDI backup file for restoring into a train entry in the TCS CS-105 command station.
  • You can import a CDI backup file to a roster entry.
  • For more information see the TCS CS-105 page.
  • LogixNG:
  • The expression Linux Line Power has been added.
  • Operations:
  • Improved passenger car blocking when using kernels, caboose, or car with FRED
  • Fix Java exception when using the Set Car window and a final destination.
  • Panel Editor:
  • The show hidden items selection was not being stored properly. The fix may cause unexpected changes the first time a PE panel is loaded.
  • Control Panel Editor:
  • The show hidden items selection was not being stored properly. The fix may cause unexpected changes the first time a CPE panel is loaded.
  • Scripting:
  • Add a PanelControlsContents.py script which lets you set a panel to controlling the layout or not.
  • Signals:
  • Signal Systems:
  • Updated AAR-1946 aspect mappings.
  • Updated the appearances in the Reading-1954 system.
  • Timetable:
  • Add action buttons to duplicate the Timetable data items.
  • Add the logic to calculate the train route durations.
  • Miscellaneous:
  • Updated the plantuml library to version 1.2023.1. This is used to create program documentation.
  • When downloading firmware to multiple boards, it can be a pain to have to select the file over and over. This was changed to make the selected file (hence directory, etc) persistent from one download frame to the next.

New in JMRI 5.3.3+R77156098f8 Test Release (Feb 10, 2023)

  • The list of included changes is available from our GitHub code repository:
  • Hardware Support:
  • LocoNet:
  • Changed handling of LACK messages during programming to avoid a recently-uncovered conflict with attached DT602D throttles
  • Added a new jython/loconet directory to contain new LocoNet-specific scripts
  • Added a jython/loconet/LoconetOpsModeSimpy that works with LocoNet simulator to simulate ops-mode writes and reads
  • OpenLCB / LCC:
  • Updated library to pick up fix to line-ends in hub
  • Powerline:
  • Ken Cameron added DMX support
  • New / Updated decoder definitions:
  • TCS:
  • Fixed problems in the sound CV definitions for Bachmann FT, Bachmann GP35, Bachmann RS3 and WOW Diesel V5-121 decoders
  • DecoderPro:
  • Improve how filename extensions are handled when exporting the complete roster
  • Updated list of NMRA-registered manufacturer IDs
  • Improved how split enum-style variables are handled
  • Dispatcher:
  • Fix allocating over occupied blocks in IntermediateSections
  • LogixNG:
  • Pressing the F8 key when the spash screen is visible disables all the LogixNGs
  • Pressing the F9 key when the spash screen is visible prevents LogixNG being activated
  • A bug that prevented the Shut down task action to work correctly has been fixed
  • Operations:
  • Fixed a problem when a location has multiple spurs and the spur's schedule forwards the car to another spur at the same location with a schedule The car's load can incorrectly change to the default "E" or "L" load
  • Scripting:
  • Cliff Anderson contributed a new TurnoutsMasterSlavepy script
  • Fixed the SetAllTurnoutsClosedpy and SetUnknownTurnoutsClosedpy scripts so they would properly delay on polled systems such as C/MRI
  • Added a new SetAllTurnoutsThrownpy script and tests
  • Added a new Shutdownpy script to shut down JMRI
  • Added a new Restartpy script to restart JMRI
  • Added a new jython/loconet directory to contain new LocoNet-specific scripts
  • Added a jython/loconet/LoconetOpsModeSimpy that works with LocoNet simulator to simulate ops-mode writes and reads
  • Signals:
  • Signal Systems:
  • Pino Di Biasi updated the Italian signal system
  • Robert Raggi provided the new Reading 1954 signal system
  • WiThrottle Server:
  • Added an option to request steal from client when an address is already in use
  • Miscellaneous:
  • Added page breaks when printing panel XML files via browser (using XSLT)
  • Improve how fractional clock rates are displayed on the analog clock
  • The shutdown process is now run in a separate thread and not on the GUI/Layout thread

New in JMRI 5.3.2+R7ca3b1ca43 Test Release (Jan 14, 2023)

  • New warnings for this release:
  • Some images in the resources/icons folder have been renamed. Spaces have been changed to underscore. It's images in the resources/icons/ItalianSignals/ACEI, resourcesiconsItalianSignalsPrototypical, resources/icons/smallschematics/aspects/NW-1981, resources/icons/smallschematics/aspects/NYC-1956, xml/signals/FS-1987, xml/signals/NW-1981, xml/signals/NYC-1956 and resources/icons/SNCF/Small folders that have been renamed. If you are using these images directly, you will need to update the reference.

New in JMRI 5.1.4+R101f36af1e Test release (Sep 14, 2022)

  • Hardware Support:
  • LocoNet:
  • The DCS240+ doesn't accept service-mode read requests for about 350-400msec after the completion of the prior one. A short delay has been added to handle this.
  • NCE:
  • Internationalization of the NCE tools was completed. New items are available for translation.
  • OpenLCB / LCC:
  • Updated openlcb.jar to pick up "send AMD in response to AME" fix.
  • SPROG:
  • Added option for offset between CBUS events and DCC accessory addresses for [Pi-]SPROG 3 Plus firmware 3.e Beta 2.
  • New / Updated decoder definitions:
  • SoundTraxx:
  • Updates to ECO & TSU2, add Genesis Caboose
  • Uhlenbrock:
  • Added a new definition for Lissy Receiver #68600, 68610 and #68620. Use LNCV programming.
  • Added definitions for the UB 73310 and UB 73416 decoders.
  • DecoderPro:
  • Menu items were harmonized with the button alternatives.
  • Internationalization:
  • See NCE tools above.
  • LogixNG:
  • The popup menu in the ConditionalNG editor is changed. All the categories are sub menus to the Add menu item. When a new action or expression is to be created, it is selected directly in the popup menu.
  • The expression Local variable as analog value has been added.
  • LogixNG now prints (Listen) or (No Listen) when memories are used as addressing. It also prints ::: No Listen for expressions where the option Listen is unchecked.
  • Web Server:
  • Added Camera webThrottle to Web Server.
  • Camera webThrottle provides integrated support for controlling trains with integrated POV or overhead IP based cameras.
  • Throttle Learn More page has been added for the camera throttle that covers setup and connecting the cameras to the engine throttle.
  • Miscellaneous:
  • The French JMRI Help pages were updated for responsive display.
  • They will appear when using the French locale, or from their own starting page.
  • SpotBugs has been updated to 4.7.2
  • The local help stub file has been moved from the settings location to the home location. This fixes a problem introduced by recent versions of Ubuntu and its derivatives.

New in JMRI 5.1.3+R0f2da29e92 Test release (Aug 14, 2022)

  • Hardware Support:
  • CBUS:
  • Updated [Pi-]SPROG (3v2|Plus) NV edit GUI
  • Added Pi-SPROG 3 (not v2) NV edit GUI
  • NCE:
  • Fixed a problem adding sensors with names like NS50:1
  • OpenLCB / LCC:
  • Several fixes to JMRI's OpenLCB hub to reduce chance of duplicated traffic.
  • Added ConsumerID, ProducerID buttons to OpenLCB console
  • Piko:
  • A new definition file was added for the Uhlenbrock LocoNet IR Receiver #63830, that can connect the Piko Digi-fern Remote Control to LocoNet.
  • Raspberry Pi
  • A simulator is now added that simulates a Raspberry Pi. The simulator is very simple and is mostly intended to be able to load panels for a Raspberry Pi on a non Pi computer like Windows.
  • SPROG:
  • Updated [Pi-]SPROG (3v2|Plus) NV edit GUI
  • Added Pi-SPROG 3 (not v2) NV edit GUI
  • Added F29+ support to SPROG Command Station mode.
  • New / Updated decoder definitions:
  • An include file enum-WeekdaysSun.xml that can be used to create a drop down of Weekdays was added to xml/decoders/parts/
  • Dapol:
  • Two Dapol Imperium DCC Decoders have been added.
  • 860015: Next 18 6 Function decoders (NEM 662).
  • 860019: 21 PIN 6 Function decoders (21MTC/NEM 660/MTX interface Standard).
  • Digikeijs (Digirails):
  • New decoder definition for DR5088RC with LNCV programming capabilities.
  • Thanks to Dennis Cherry for testing on actual hardware.
  • Awaiting response from Digikeijs to complete the settings stored in LNCV4.
  • The Stationary family of decoders was renamed to Feedback (Inputs).
  • Digitrax:
  • Add support for DCS240+
  • Technologistic (train-O-matic):
  • Added support for Lokommander II decoders. Including automatic identification of the right decoder type based on productID.
  • Uhlenbrock:
  • Updated the Lissy Reporter support, including improved display of the messages. Note that this has changed the format of the reports, so users who have written scripts to use this might need to check and update them.
  • Added a decoder definition to configure the 63810 Mobile Station Adapter.
  • Use the LNCV tool to program.
  • Added decoder definitions for Occupancy Feedback modules #63320/40 (2-rail) and #63330/50 (3-rail).
  • Use the LNCV Tool for programming.
  • Added Funk-Master LN+DCC 66410 definition. Renamed model 66400 FunkMaster to Funk-Master LN.
  • Added a decoder definition to configure the 63450 LocoNet Display module, also with LNCV
  • New definition to program the IRIS LocoNet IR-Receiver #63830.
  • Fixed a bug in the Switch Module #63410 definition that could mix up combined CV values of type XXXXC.
  • Added setting Route 1 in the Track Control Signal indicator #69230
  • Added a decoder definition to configure the 63400 LocoNet Switch Control module
  • DecoderPro:
  • To simplify writing a decoder definition, variable declarations for decimal and hex values without a "mask" with max > 255 now will get an appropriately sized mask assigned so that they store any valid entry.
  • Variables with a max <= 255 or with an explicit mask are not affected.
  • In decoder definitions, enumVal variables can now use a so-called "radix" mask to map values on specific digits in the CV value. Requires decoder-4-15-2.xsd schema in the xml declaration.
  • Values of type DecVar can now be presented using an offset and factor to reflect their application. For example if address 1 had to be entered as 0 (and 2 as 1) an offset of +1 would fix this for the user. Likewise, a factor of 50 would present a setting "in steps of 50 milliseconds" in ms units while saving it in the CV just like it used to.
  • Requires schema decoder-4-15-2.xsd. When a min or max is applied, the author should update that for the numbers as entered. Entries smaller than the offset are replaced by 0.
  • Dispatcher:
  • Support transits and sections that use multiple panels connected by edge connectors.
  • The "Use connectivity from Layout Editor panels" option in Dispatcher Options no longer uses a specified panel. All Layout Editor panels are used for layout connectivity.
  • LogixNG:
  • The action Simulate turnout feedback has been added. It's useful to simulate feedback based turnout actions when a simulator connection is used, for example the LocoNet simulator.
  • The expression Connection name has been added. It's useful together with Simulate turnout feedback so that simulation only happens for simulated connections.
  • The action For each has been added. It's useful when you want to loop thru all items in a list, for example all the sensors in the sensor manager.
  • The formula function new has been added. It allows you to create a new instance of a class.
  • Several formula constants have been added. See the modules Java and Layout. Examples are constants like sensors and turnouts that gives you direct access to the managers. And InstanceManager that gives you direct access to the instance manager. The constants null and None has the null value in Java, the None value in Jython.
  • The action Listen On Beans - Table is improved.
  • The action Listen On Beans - Local variable has been added. It can be used together with the For each action to listen to all beans of a manager.
  • The expressions Local Variable and Memory now have the choice "Type" which allows you to select whenether the data should be treated as a number or a string. If "Number" is choosen, it's required that both operands are numbers. Otherwise an exception will occur.
  • The action Local Variable can now copy the value of a reference.
  • The action If Then Else now supports Else_If statements.
  • The new category Flow Control is added. The actions Call Module, For, For Each, Table: For Each and Sequence are moved to this category, as well as the expression Call Module.
  • The actions Break, Continue, Error, Exit and Return have been added to the Flow Control category.
  • The expressions And and Or now have the option to only evaluate the sockets that are needed for the result.
  • Speedometer:
  • Expanded user documentation
  • Miscellaneous:
  • jmri.jmrix.SystemConnectionMemoManager has new utility methods to find a connection by its connection name.
  • LocoNetSystemConnectionMemo memo = SystemConnectionMemoManager.getConnection("L2", LocoNetSystemConnectionMemo.class);
  • LocoNetSystemConnectionMemo memo = SystemConnectionMemoManager.getConnectionByUserName("LocoNet", LocoNetSystemConnectionMemo.class);
  • MqttSystemConnectionMemo memo = SystemConnectionMemoManager.getConnection("M", MqttSystemConnectionMemo.class); MqttSystemConnectionMemo memo = SystemConnectionMemoManager.getConnectionByUserName("MQTT", MqttSystemConnectionMemo.class);
  • The PlantUML library has been updated to the current version. This is used for developer documentation.

New in JMRI 5.1.1+Redc443cff0 Test release (Jul 8, 2022)

  • New / Updated decoder definitions:
  • Massoth:
  • New decoder definition for "Pulsed Smoker for round boilers" (product nr 8415001
  • DecoderPro:
  • Fixed a problem preventing import of CSV files exported from JMRI.
  • Dispatcher:
  • Separated reverse at end delays from reset delays
  • Allow a next traininfo to be run at successful termination using the same loco info
  • LogixNG:
  • The MQTT action now has the option Remove channel from topic.
  • Preferences:
  • A Shutdown preference has been created to support the StoreAndCompare process that detects changes to PanelPro tables and panels.
  • Turnouts, Lights, Sensors and other elements:
  • Fixed a spurious error message when creating some internal items.
  • Miscellaneous:
  • Several of the PanelPro tables, such as Routes and Logix, display a reminder to store changes before quitting. There are a number of issues with this approach.
  • Only some of the tables have the reminder.
  • Panel changes don't have a reminder.
  • The reminder does not occur when quitting, or if it does, it is too late.
  • The JMRI 5.1.1 test release has a global store reminder when running PanelPro. DecoderPro is not affected. Any change that affects the stored layout data file will trigger a reminder with an option to do a store before the final shutdown.
  • The global store reminder process is controlled by a new Shutdown option in JMRI Preferences. This is located between Start Up and Display. There are a number of scenarios where the global store reminder is not appropriate, such as running PanelPro using automatic start up and shutdown. See Shutdown Preference for details.
  • What is considered a change that needs to be stored? The process creates a temporary stored file and compares it to the last loaded file. If they are different, a store notification will occur. The comparison is a line by line compare, not a logical content comparison. Listed below are some of the implications of the process.
  • Running PanelPro without loading a layout data file, such as running Operations, a WiThrottle server, etc. Since there is no file to compare to, it is assumed that there might be additions that need to be stored.
  • External events that make changes. Examples are scripts that create new table entries, new hardware that can generate table entries, such as adding a DS64 on LocoNet, etc.
  • JMRI version changes. These can be significant, such as new features. Or trivial because the sequence of rows are in a different order in the layout data file. This last one affects layout data files from JMRI 4.26 that use signal heads and SSL.
  • The compare process stops with the first occurrence of a potential change. The details of the compared lines are listed in the JMRI system console (Help => System Console).
  • Minor changes to resolve Spotbug OS_OPEN_STREAM_EXCEPTION_PATH
  • Minor changes to resolve Spotbug ST_WRITE_TO_STATIC_FROM_INSTANCE_METHOD

New in JMRI 5.0+Rc441642522 (Jun 22, 2022)

  • Hardware Support:
  • C/MRI:
  • Added CmriExample.py, a sample script for directly sending a C/MRI frame.
  • CBUS:
  • Lawicell devices - added RTR CAN Frame support.
  • The consist tool is now available for the Pi-SPROG 3v2 in command station mode, the SPROG 3 Plus and the MERG CANCMD.
  • Console - Added Throttle speed / direction translations.
  • DCC4pc:
  • DCC4pc now has multi-system capability
  • DCC++ and DCC-EX:
  • handle new locoState reply to sync speed, dir and Fkeys
  • Add throttle commands and replies to simulator
  • Updated to take advantage of Version 4 changes
  • KPF-Zeller:
  • Initial support for the KPF-Zeller roller speedometer.
  • Improved the speed calibration
  • LocoNet:
  • Updated some new IPL report messages
  • Add configuration support for UR93, LNWIs. Allow updates for individual parameters.
  • Added Digitrax DCS210Plus command station
  • A storm of LocoNet messages could result if certain command station models have track power turned off whem JMRI starts. The status enquiry messages would fail, and JMRI would repeat them in an effort to get complete information from the layout. This release no longer retries messages in that case. If you are not getting initial status from some devices on your layout, you should power up your LocoNet system, including track power, before starting JMRI.
  • Configuration - Permit disabling of interrogate messages.
  • Slotmonitor - better guess the column widths
  • The DCS240 command station type was defaulting to the standalone programmer mode. If a user was not paying attention, they would have issues trying to use all of the command station capability.
  • Some message interpretation features provided by "LocoNet Monitor" have been 'refactored' and slightly improved.
  • MERG:
  • The consist tool is now available for CBUS.
  • MQTT:
  • Native MQTT SignalMasts are available.
  • Splash screen shows connection address
  • LogixNG has now support for MQTT. If a MQTT connection is defined, the category MQTT is visible with the LogixNG actions Publish and Subscribe.
  • Handled a case in MQTT signal masts that would cause a spurious error message.
  • Added a script to echo SignalHeads to MQTT
  • OpenLCB / LCC:
  • Lawicell devices - added RTR CAN Frame support.
  • Throttle support. JMRI Throttles can now operate OpenLCB locomotives on OpenLCB / LCC Command Stations via the Traction Protocol draft.
  • Monitor Log updates. Decodes and prints the Traction Protocol messages in the Monitor Log window.
  • Accessibility changes. The network browser / tree is now navigable using keyboard shortcuts. On the Configuration Editor panel the keys F6 and Shift+F6 can be used to navigate between subsequent sections of the configuration and the bar of buttons at the bottom.
  • Test Event button. In the Configuration Editor the Event panels have a new button More... which opens a dropdown. In the dropdown there is a Trigger button which sends the given event. This is useful for testing. In the same dropdown there is a Create Sensor button which for JMRI will create a single-event sensor.
  • Bug fixes. Fixes memory leak when opening many different nodes' Configuration Editor windows. The CAN Interface engine now correctly supports sending a message to a Destination Node ID for which there is no currently registered Alias in the Alias Map. The outgoing message will be enqueued and an alias lookup interaction is triggered.
  • SPROG:
  • The consist tool is now available for the Pi-SPROG 3v2 in command station mode and for the SPROG 3 Plus.
  • TMCC:
  • Enabled functions 23-27 in the throttle.
  • Uhlenbrock Intellibox:
  • Improved handling of the decoder functions.
  • New / Updated decoder definitions:
  • Added multiple SUSI accessory decoder definitions.
  • Digitrax:
  • Added Kato EM13 in Digitrax family: newer versions of this decoder have a Digitrax manufacturer code and a full fledged Digitrax SW.
  • Doehler & Haas:
  • Added PD10MU: This is a specific decoder for ModellBahn Union / DM-Toys. Same SW as PD12A, but N scale form factor.
  • ESU:
  • Fixed a problem introduced in JMRI 4.99.3 that prevents the function settings from being properly stored.
  • Massoth:
  • New decoder definition for "Pulsed Smoker for round boilers" (product nr 8415001
  • MD Electronics:
  • Added a definition for the MDE HDD turntable decoder.
  • SoundTraxx:
  • TSU2 Genesis Diesel - add SD70ACU and Dash 9-44CW
  • TSU Genesis Steam - N Challenger add CV and change some default value per user request
  • Tam Valley Depot:
  • QuadLN_S - added support for new firmware version 3.1 features
  • ZIMO:
  • added new decoder definitions for Firmware v40.x
  • Updated some MX640-series definitions, adding menu items for on-track operations.
  • Fixed the coding for CV155 Half Speed Settings
  • Added MX605N: Zimo non-sound decoder for Kato N ICE4 - same form factor as Kato EM13. Note that MX605 (already in DecoderPro) is the sound-version of MX605N.
  • DecoderPro:
  • Added accessible names to the (simple) variables displayed on programming panes.
  • Decoder definitions can now add items to the main programmer-pane window menu.
  • You can now write out just edited CV values to a CSV file.
  • The programmer pane "display" element now supports a "viewOnly" attribute. For more information see the Create a Custom Programmer page.
  • Improved handling of improper input in variables.
  • Improved accessibility of programming mode selections.
  • Improved accessibility of some buttons.
  • Dispatcher:
  • Fix XCrossings allocation.
  • Improve AutoEngineer. Permit unlimited number of Auto Trains.
  • Fixed bouncing speed slider in manual mode.
  • Size AutoTrainsWindow correctly when going between auto and manual with use scroll bars off.
  • Enabled disaplay scale speed for running with speed profiles.
  • Internationalization:
  • Spanish translation added to decoder and programmer panes
  • Rodrigo Rodriguez translated much of the GUI into Spanish.
  • Layout Editor:
  • Use the actual turnout state for the turnout circle when that option is used. This corrects the color for turnouts using the continuing route option when set to thrown.
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Update the layout block occupancy sensor when the occupancy sensor for the related block has been added, removed or changed to a different sensor.
  • Improved XSLT display of all elements.
  • Fixed an error when an anchor point only had one track segment assigned.
  • Improved display of certain images when rotated for display.
  • Logix:
  • A single Logix can now be exported to LogixNG. Open Tools -> Tables -> Logix and select Export to LogixNG for the Logix you want to export.
  • Change the system name input for the Copy command to use a combo box. This makes it easier to select an existing Logix as the copy destination.
  • LogixNG:
  • A single Logix can be imported to LogixNG. See the section Logix for more information.
  • The action Throttle has been updated. It now also has the child sockets Function and FunctionOnOff. These are optional. If both are connected, the Throttle action sets or resets this function. The child Function tells the function number and the child FunctionOnOff tells if the function should be On (True) or Off (False).
  • The action Local Variable now supports Block and Reporter. For Memory, Block and Reporter, there is a new option Listen that selects whenether the action should listen on changes for the Memory, Block or Reporter.
  • The actions Memory and Local variable and the expressions Memory and Local variable have improved support for LogixNG Tables.
  • Copy now works in the LogixNG table. With Copy, you can copy the entire LogixNG to a new LogixNG with all its ConditionalNGs.
  • Improved XSLT display of all elements.
  • Several severe errors have been fixed when doing a copy of a LogixNG action or expression.
  • If a female socket of the action Sequence is removed, the socket after it is also removed.
  • The action Clock Rate has been added. It sets the rate of the fast clock.
  • Global Variables has been added. A Global Variable is similar to a Local Variable, except that it is shared among the ConditionalNGs.
  • Global variables and Local variables can now be initialized with a script expression or a script file.
  • The action Listen on beans now protects against removal of the beans it's listening to.
  • The Edit local variables dialog can now be resized so that the table grows and shrinks when it's resized.
  • Update the Sequence action to reset itself when done if the continuous option is not selected.
  • Support for MQTT has been added. If a MQTT connection is defined, the category MQTT is visible with the actions Publish and Subscribe.
  • Fixed a bug where a LogixNG action SignalHead and the LogixNG expression SignalHead failed to load the name of the signal head when loading a panel stored by a previous JMRI version.
  • The action Script and the expression Script now supports both Jython and ECMA Script (JavaScript). As a result, the option Jython command is now renamed to Single line command.
  • Operations:
  • Improved the build report
  • Panel Editor:
  • Tooltips can now be edited in Panel Editor.
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Improved XSLT display of all elements.
  • Improved display of certain images when rotated for display.
  • Control Panel Editor:
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Improved display of certain images when rotated for display.
  • Preferences:
  • Improved handling of the dirty bit, which controls whether you're prompted to save preferences.
  • Resources:
  • Inobu One provided new single-crossover icons and additional double-crossover USS icons.
  • RFID:
  • Updated: Tags are recorded in a table. If there is a Car (from OperationsPro) associated with this tag, the Road name and Car number are shown. The location and Track are shown in ComboBoxes which the user can set and then click on a button to set to the new Location and Track. Another button shows the Car in the Edit Car window. If there is no associated car, a button opens a window with a list of Road names. The user can select a road name and the second list shows all car numbers for that road. Once a car number has been selected a button sets the tag in that Car. By default the only visible road names and numbers are for cars that do not have a tag. A checkbox shows all cars, including those with tags.
  • The window is opened from the "RFID" menu choice (there is one for each RFID connection). The first choice opens the standard Serial Monitor Pane. This new Pane is opened from the second choice. The help screen can be viewed from the monitor pane, or via a link in the Hardware RFID connection frame.
  • Routes:
  • Provide the ability to copy the content from an existing route when creating a new route.
  • Scripting:
  • Example scripts related to MQTT moved from jython directory to jythonMQTT directory.
  • Initial, very experimental, Python 3 support is available for macOS and Linux.
  • Added simpler accessors to InstanceManager for use in Py3 scripts. See jython/test/InstanceManagerTest.py
  • Added waitSignalMastState, waitSignalHeadState to AbstractAutomat support.
  • Added shortcuts for transits and sections.
  • Signals:
  • Signal Systems:
  • Allow user-modified signal systems to provide their own copy of an existing aspects.xml file.
  • New SNCF-2015 French signal system
  • Signal Masts:
  • Native MQTT masts are available
  • Improved XSLT display of all elements.
  • Simple Signal Logic:
  • Improved XSLT web display to include sensors
  • Switchboard Editor:
  • The menu options to label a switch were enhanced to allow hiding the system name in case a user name is configured. This was suggested by Phil-Klein.
  • Timetable:
  • Add a Copy Stops button. This is used to copy the stops for an existing train to the new train.
  • Throttle:
  • Restored tab and shift+tab shortcuts to browse through throttles inner windows
  • Address Panel is now focused as a default when opening a new throttle
  • Add capability to display/print throttle files in easy-to-read browser format (using XSL transform)
  • If there are at least two connections that have support for throttles, a new menu appears that lets you open a throttle for a particular connection.
  • Fixed a problem causing a spurious error dialog when opening a roster entry in a throttle
  • Turnouts, Lights, Sensors and other elements:
  • Improved XSLT display of all elements.
  • The order of presenting these elements in combo boxes has been changed to make it more consistent. They now list all user names first, followed by ones with just system names. This also fixes a problem where some items are not listed in the combo box.
  • The process for adding multiple Lights/Sensors/Turnouts/Reporters has been improved. Existing items are no longer skipped, so you get the sequential items you asked for. Some error messages have been clarified.
  • Virtual Sound Decoder:
  • Added a new version of "advanced location following". This is now based on a LayoutEditor panel and hence much easier to setup. See the documentation for details.
  • Warrants:
  • Additional bug fixing and enhancements to Shared Warrants. SWs are useful to animate the simultaneous operation of multiple trains. Be aware that SWs may mutually block movement that can only be resolved by aborting at least one of them. Regular warrants avoid such deadlocks due to the priority of their launch times.
  • SWs will not allocate any blocks beyond or at a "hazard" (occupation by foreign train, passage beyond a stop signal, conflict with another warrant)
  • If a ramp down to stop at a "hazard" stops before entering the next block, the restart is done automatically when the condition clears.
  • If a ramp down to stop at a "hazard" overruns into the next block, the SW will allocate the next block if that is permissible. Whether or not, i.e. the position of the train is marked yellow or blue, use the normal Control commands to restart. "Resume" if the "hazard" was occupation or a warrant, or wait for the signal change to an allowable speed.
  • The messages to the status field of the warrant Table and other information can be displayed to the console by clicking the "Trace Warrants" button in Warrant Preferences.
  • Additional bug fixing and enhancements to Shared Warrants. SWs are useful to animate the simultaneous operation of multiple trains. Be aware that SWs may mutually block movement that can only be resolved by aborting at least one of them. Regular warrants avoid such deadlocks due to the priority of their launch times.
  • SWs will not allocate any blocks beyond or at a "hazard" (occupation by foreign train, passage beyond a stop signal, conflict with another warrant)
  • If a ramp down to stop at a "hazard" stops before entering the next block, the restart is done automatically when the condition clears.
  • If a ramp down to stop at a "hazard" overruns into the next block, the SW will allocate the next block if that is permissible. Whether or not, i.e. the position of the train is marked yellow or blue, use the normal Control commands to restart. "Resume" if the "hazard" was occupation or a warrant, or wait for the signal change to an allowable speed.
  • The messages to the status field of the warrant Table and other information can be displayed to the console by clicking the "Trace Warrants" button in Warrant Preferences.
  • Any warrant, regular or shared, will not allocate blocks beyond a restricted block. A block is restricted if it is:
  • Allocated to another warrant.
  • Occupied by an unknown train.
  • Signal protects it from entry.
  • When entering a block, the warrant will allocate as many blocks as it can up to the next restricted block or its limit.
  • Shared warrants only allocate up to a maximum of 2 blocks. (limit is 2)
  • Regular warrants will allocate the full route if no restricted block is found. (unlimited)
  • Crossovers typically use one turnout to control both switches. Often, each switch is track in different blocks. For such shared turnouts, throwing the switch in one block may change the path in another block and could cause a derailment.
  • Warrants now detect shared turnouts. Should the paths in the respective blocks have different settings for the turnout, the warrant will allocate the block sharing the turnout but not set its path.
  • The warrant will stop the train before entering the block. The train will continue when the conflict is resolved.
  • Block status of OUT_OF_SERVICE is informational. Warrants can allocate OUT_OF_SERVICE blocks.
  • The "Set" column of the Warrant List Table is removed. The "Allocate" column indicates the route. The path is set if the block is not in a restricted state.
  • When a warrant is running under a speed change restriction, The timing between throttle commands has be improved.
  • WiThrottle Server:
  • Added a "TelnetTrain.py" example to run a train from the Python command line.
  • Web Access:
  • Multiple updates to JavaScript libraries shipped with JMRI.
  • Web Server:
  • Support for display and interaction with (Control) Panel slipTurnoutIcons has been added to JMRI Web Server Panels.
  • This includes double and single slips, three-way turnouts and scissors with 2 or 4 turnouts.
  • Miscellaneous:
  • This is the first production release that requires Java 11. As part of that, there were extensive changes to the underlying infrastructure. See PR #10278 and following PRs with the Java 11 label.
  • Personal and development builds will now be called e.g. 4.99.1plus instead of the prior convention of calling them 4.99.2ish when developing between releases. This should only affect JMRI developers.
  • SpotBugs has been updated to 4.5.0
  • Improved accessibility of throttle keyboard shortcut help.
  • Developers: The Typescript and Javascript support has been updated.
  • The included 'ajv' and 'fast-deep-equal' web packages have been updated.
  • Improved XSLT display of many elements in panel XML files.
  • Remove the Store Only table content (No Panels)... option from the File menu used by the PanelPro tables.
  • When running the JmriFaceless application, the panels (PE/CPE/LE/SE) in the xml data file (aka Panel file) are not loaded.
  • Add a search feature to the JmriHelp local web page.
  • The method JUnitUtil.releaseThread(this) and JUnitUtil.releaseThread(this, delay) has been removed. Use JUnitUtil.waitFor(int time) instead. Replace the call JUnitUtil.releaseThread(this) with JUnitUtil.waitFor(JUnitUtil.DEFAULT_RELEASETHREAD_DELAY);
  • Improve Block tracking in the case of a broken train being rejoined.
  • Multiple updates to the Bachrus/KPF-Zeller speedometer support:
  • Improved GUI
  • Now handles programming on main without needing to go to service track first
  • Improved speed matching algorithm
  • Updated docs
  • Fixed an issue where ZSH-using developers might not be able to use ./runtest.csh
  • Update commons-io library to version 2.11.0 from 2.6. JMRI uses this for file selectors.
  • Updated jsoup library to 1.14.3 from 1.13.1. JMRI uses this when rebuilding help metadata.
  • Update for multiple hardware clocks.
  • Resolved multiple Spotbugs code warnings.
  • The xercesImpl library was updated to 2.12.2, which may change the content of some error messages.
  • The macOS and Linux startup scripts now will use a JVM found within a "jre" directory within the JMRI program directory. This lets you install a JVM (JRE or JDK) locally just for JMRI's use.
  • The Transit and Section classes have been refactored into an interface with DefaultTransit and DefaultSection implementations respectively. Similar transforms have been done to TransitManager and SectionManager. None of the production code nor distributed scripts needed changes, as you still create and access Transits and Sections via their managers obtained from the InstanceManager. The SectionType constants in Section has also been converted to an enum.
  • Many logging changes to resolve Spotbug SLF4J_FORMAT_SHOULD_BE_CONST
  • Added a new tool for maintaining translated properties files.

New in JMRI 4.99.9+R20a7adae24 Test release (May 30, 2022)

  • Hardware Support:
  • DCC++ and DCC-EX:
  • Add throttle commands and replies to simulator
  • MQTT:
  • Handled a case in MQTT signal masts that would cause a spurious error message.
  • Added a script to echo SignalHeads to MQTT
  • DecoderPro:
  • Improved accessibility of some buttons.
  • Internationalization:
  • Rodrigo Rodriguez translated much of the GUI into Spanish.
  • LogixNG:
  • The action Script and the expression Script now supports both Jython and ECMA Script (JavaScript). As a result, the option Jython command is now renamed to Single line command.
  • Turnouts, Lights, Sensors and other elements:
  • The process for adding multiple Lights/Sensors/Turnouts/Reporters has been improved. Existing items are no longer skipped, so you get the sequential items you asked for. Some error messages have been clarified.
  • Miscellaneous:
  • The xercesImpl library was updated to 2.12.2, which may change the content of some error messages.
  • The macOS and Linux startup scripts now will use a JVM found within a "jre" directory within the JMRI program directory. This lets you install a JVM (JRE or JDK) locally just for JMRI's use.
  • The Transit and Section classes have been refactored into an interface with DefaultTransit and DefaultSection implementations respectively. Similar transforms have been done to TransitManager and SectionManager. None of the production code nor distributed scripts needed changes, as you still create and access Transits and Sections via their managers obtained from the InstanceManager. The SectionType constants in Section has also been converted to an enum.
  • Many logging changes to resolve Spotbug SLF4J_FORMAT_SHOULD_BE_CONST

New in JMRI 4.99.8+Rc81de3c361 Test release (May 12, 2022)

  • LogixNG:
  • Fixed a bug where a LogixNG action SignalHead and the LogixNG expression SignalHead failed to load the name of the signal head when loading a panel stored by a previous JMRI version.
  • Miscellaneous:
  • Resolved multiple Spotbugs code warnings.

New in JMRI 4.99.6+R7578dc0c9b Test release (Apr 16, 2022)

  • LogixNG:
  • Several severe errors have been fixed when doing a copy of a LogixNG action or expression.
  • If a female socket of the action Sequence is removed, the socket after it is also removed.
  • Throttle:
  • Fixed a problem causing a spurious error dialog when opening a roster entry in a throttle
  • Miscellaneous:
  • Fixed an issue where ZSH-using developers might not be able to use ./runtest.csh

New in JMRI 4.99.4+R1d78b88a65 Test release (Mar 14, 2022)

  • Hardware Support:
  • C/MRI:
  • Added CmriExample.py, a sample script for directly sending a C/MRI frame.
  • KPF-Zeller:
  • Initial support for the KPF-Zeller roller speedometer.
  • LocoNet:
  • Added Digitrax DCS210Plus command station
  • A storm of LocoNet messages could result if certain command station models have track power turned off whem JMRI starts. The status enquiry messages would fail, and JMRI would repeat them in an effort to get complete information from the layout. This release no longer retries messages in that case. If you are not getting initial status from some devices on your layout, you should power up your LocoNet system, including track power, before starting JMRI.
  • Uhlenbrock Intellibox:
  • Improved handling of the decoder functions.
  • New / Updated decoder definitions:
  • ESU:
  • Fixed a problem introduced in JMRI 4.99.3 that prevents the function settings from being properly stored.
  • ZIMO:
  • Updated some MX640-series definitions, adding menu items for on-track operations.
  • DecoderPro:
  • You can now write out just edited CV values to a CSV file.
  • The programmer pane "display" element now supports a "viewOnly" attribute. For more information see the Create a Custom Programmer page.
  • Layout Editor:
  • Improved XSLT display of all elements.
  • Logix:
  • Change the system name input for the Copy command to use a combo box. This makes it easier to select an existing Logix as the copy destination.
  • LogixNG:
  • Copy now works in the LogixNG table. With Copy, you can copy the entire LogixNG to a new LogixNG with all its ConditionalNGs.
  • Improved XSLT display of all elements.
  • Panel Editor:
  • Improved XSLT display of all elements.
  • Routes:
  • Provide the ability to copy the content from an existing route when creating a new route.
  • Turnouts, Lights, Sensors and other elements:
  • Improved XSLT display of all elements.
  • Scripting:
  • Added waitSignalMastState, waitSignalHeadState to AbstractAutomat support.
  • Added shortcuts for transits and sections.
  • Signals:
  • Signal Systems:
  • New SNCF-2015 French signal system
  • Signal Masts:
  • Improved XSLT display of all elements.
  • Simple Signal Logic:
  • Improved XSLT web display to include sensors
  • Timetable:
  • Add a Copy Stops button. This is used to copy the stops for an existing train to the new train.
  • Warrants:
  • Additional bug fixing and enhancements to Shared Warrants. SWs are useful to animate the simultaneous operation of multiple trains. Be aware that SWs may mutually block movement that can only be resolved by aborting at least one of them. Regular warrants avoid such deadlocks due to the priority of their launch times.
  • SWs will not allocate any blocks beyond or at a "hazard" (occupation by foreign train, passage beyond a stop signal, conflict with another warrant)
  • If a ramp down to stop at a "hazard" stops before entering the next block, the restart is done automatically when the condition clears.
  • If a ramp down to stop at a "hazard" overruns into the next block, the SW will allocate the next block if that is permissible. Whether or not, i.e. the position of the train is marked yellow or blue, use the normal Control commands to restart. "Resume" if the "hazard" was occupation or a warrant, or wait for the signal change to an allowable speed.
  • The messages to the status field of the warrant Table and other information can be displayed to the console by clicking the "Trace Warrants" button in Warrant Preferences.
  • Miscellaneous:
  • Developers: The Typescript and Javascript support has been updated.
  • The included 'ajv' and 'fast-deep-equal' web packages have been updated.
  • Improved XSLT display of many elements in panel XML files.
  • Remove the Store Only table content (No Panels)... option from the File menu used by the PanelPro tables.
  • When running the JmriFaceless application, the panels (PE/CPE/LE/SE) in the xml data file (aka Panel file) are not loaded.

New in JMRI 4.27.1+Rb05d2d2208 (Feb 13, 2022)

  • Update From Older JMRI Versions
  • If you are currently using a version older than JMRI 4.20, please follow these instructions carefully:
  • Is your current version older than JMRI 4.12? If so, then update to JMRI 4.12 first, and ensure everything works correctly: check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Store your configuration and panel files under a new name and use those from now on. Then continue with step 2.
  • If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this), then it's very important that you update to JMRI 4.12 and carrying out the migration process described in the JMRI 4.12 release note before updating to any later relese.
  • Is your current version older than JMRI 4.20? Then update to JMRI 4.20 first, and ensure that works correctly (check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Save your preferences again. Store your configuration and panel files under a new name and use those from now on.You can then install this release.
  • Following this multi-step order of updating via stable major releases safeguards you against possible migration issues that can arise from skipping these versions.
  • New warnings for this release:
  • Example scripts related to MQTT moved from jython directory to jythonMQTT directory. This will require an update to any start-up actions that reference their location.
  • Hardware Support:
  • CBUS:
  • Lawicell devices - added RTR CAN Frame support.
  • DCC++ and DCC-EX:
  • handle new locoState reply to sync speed, dir and Fkeys
  • LocoNet:
  • Updated some new IPL report messages
  • Add configuration support for UR93, LNWIs. Allow updates for individual parameters.
  • MQTT:
  • Native MQTT SignalMasts are available.
  • Splash screen shows connection address
  • OpenLCB / LCC:
  • Lawicell devices - added RTR CAN Frame support.
  • RFID:
  • Updated: Tags are recorded in a table. If there is a Car (from OperationsPro) associated with this tag, the Road name and Car number are shown. The location and Track are shown in ComboBoxes which the user can set and then click on a button to set to the new Location and Track. Another button shows the Car in the Edit Car window. If there is no associated car, a button opens a window with a list of Road names. The user can select a road name and the second list shows all car numbers for that road. Once a car number has been selected a button sets the tag in that Car. By default the only visible road names and numbers are for cars that do not have a tag. A checkbox shows all cars, including those with tags.
  • The window is opened from the "RFID" menu choice (there is one for each RFID connection). The first choice opens the standard Serial Monitor Pane. This new Pane is opened from the second choice. The help screen can be viewed from the monitor pane, or via a link in the Hardware RFID connection frame.
  • TMCC:
  • Enabled functions 23-27 in the throttle.
  • New / Updated decoder definitions:
  • SoundTraxx:
  • TSU2 Genesis Diesel - add SD70ACU and Dash 9-44CW
  • TSU Genesis Steam - N Challenger add CV and change some default value per user request
  • ZIMO:
  • added new decoder definitions for Firmware v40.x
  • Dispatcher:
  • Fix XCrossings allocation.
  • Improve AutoEngineer. Permit unlimited number of Auto Trains.
  • Layout Editor:
  • Use the actual turnout state for the turnout circle when that option is used. This corrects the color for turnouts using the continuing route option when set to thrown.
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Update the layout block occupancy sensor when the occupancy sensor for the related block has been added, removed or changed to a different sensor.
  • Logix:
  • A single Logix can now be exported to LogixNG. Open Tools -> Tables -> Logix and select Export to LogixNG for the Logix you want to export.
  • LogixNG:
  • The action Throttle has been updated. It now also has the child sockets Function and FunctionOnOff. These are optional. If both are connected, the Throttle action sets or resets this function. The child Function tells the function number and the child FunctionOnOff tells if the function should be On (True) or Off (False).
  • A single Logix can be imported to LogixNG. See the section Logix for more information.
  • The action Local Variable now supports Block and Reporter. For Memory, Block and Reporter, there is a new option Listen that selects whenether the action should listen on changes for the Memory, Block or Reporter.
  • The actions Memory and Local variable and the expressions Memory and Local variable have improved support for LogixNG Tables.
  • Panel Editor:
  • Tooltips can now be edited in Panel Editor.
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Control Panel Editor:
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Resources:
  • Inobu One provided new single-crossover icons and additional double-crossover USS icons.
  • Scripting:
  • Example scripts related to MQTT moved from jython directory to jythonMQTT directory.
  • Signals:
  • Signal Systems:
  • Allow user-modified signal systems to provide their own copy of an existing aspects.xml file.
  • Switchboard Editor:
  • The menu options to label a switch were enhanced to allow hiding the system name in case a user name is configured. This was suggested by Phil-Klein.
  • Throttle:
  • Restored tab and shift+tab shortcuts to browse through throttles inner windows
  • Address Panel is now focused as a default when opening a new throttle
  • Warrants:
  • Additional bug fixing and enhancements to Shared Warrants. SWs are useful to animate the simultaneous operation of multiple trains. Be aware that SWs may mutually block movement that can only be resolved by aborting at least one of them. Regular warrants avoid such deadlocks due to the priority of their launch times.
  • SWs will not allocate any blocks beyond or at a "hazard" (occupation by foreign train, passage beyond a stop signal, conflict with another warrant)
  • If a ramp down to stop at a "hazard" stops before entering the next block, the restart is done automatically when the condition clears.
  • If a ramp down to stop at a "hazard" overruns into the next block, the SW will allocate the next block if that is permissible. Whether or not, i.e. the position of the train is marked yellow or blue, use the normal Control commands to restart. "Resume" if the "hazard" was occupation or a warrant, or wait for the signal change to an allowable speed.
  • The messages to the status field of the warrant Table and other information can be displayed to the console by clicking the "Trace Warrants" button in Warrant Preferences.
  • WiThrottle Server:
  • Added a "TelnetTrain.py" example to run a train from the Python command line.
  • Web Server:
  • Support for display and interaction with (Control) Panel slipTurnoutIcons has been added to JMRI Web Server Panels.
  • This includes double and single slips, three-way turnouts and scissors with 2 or 4 turnouts.
  • Miscellaneous:
  • Developers: The Typescript and Javascript support has been updated.

New in JMRI 4.99.3+R41d54e97f6 Test release (Feb 13, 2022)

  • Hardware Support:
  • CBUS:
  • Lawicell devices - added RTR CAN Frame support.
  • LocoNet:
  • Updated some new IPL report messages
  • Add configuration support for UR93, LNWIs. Allow updates for individual parameters.
  • OpenLCB / LCC:
  • Lawicell devices - added RTR CAN Frame support.
  • RFID:
  • Updated: Tags are recorded in a table. If there is a Car (from OperationsPro) associated with this tag, the Road name and Car number are shown. The location and Track are shown in ComboBoxes which the user can set and then click on a button to set to the new Location and Track. Another button shows the Car in the Edit Car window. If there is no associated car, a button opens a window with a list of Road names. The user can select a road name and the second list shows all car numbers for that road. Once a car number has been selected a button sets the tag in that Car. By default the only visible road names and numbers are for cars that do not have a tag. A checkbox shows all cars, including those with tags.
  • The window is opened from the "RFID" menu choice (there is one for each RFID connection). The first choice opens the standard Serial Monitor Pane. This new Pane is opened from the second choice. The help screen can be viewed from the monitor pane, or via a link in the Hardware RFID connection frame.
  • DecoderPro
  • Added accessible names to the (simple) variables displayed on programming panes.
  • Decoder definitions can now add items to the main programmer-pane window menu.
  • Dispatcher:
  • Fix XCrossings allocation.
  • Improve AutoEngineer. Permit unlimited number of Auto Trains.
  • Layout Editor:
  • Use the actual turnout state for the turnout circle when that option is used. This corrects the color for turnouts using the continuing route option when set to thrown.
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Update the layout block occupancy sensor when the occupancy sensor for the related block has been added, removed or changed to a different sensor.
  • LogixNG:
  • The action Throttle has been updated. It now also has the child sockets Function and FunctionOnOff. These are optional. If both are connected, the Throttle action sets or resets this function. The child Function tells the function number and the child FunctionOnOff tells if the function should be On (True) or Off (False).
  • A single Logix can be imported to LogixNG. See the section Logix for more information.
  • The action Local Variable now supports Block and Reporter. For Memory, Block and Reporter, there is a new option Listen that selects whenether the action should listen on changes for the Memory, Block or Reporter.
  • The actions Memory and Local variable and the expressions Memory and Local variable have improved support for LogixNG Tables.
  • Panel Editor:
  • Tooltips can now be edited in Panel Editor.
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Control Panel Editor:
  • Tooltip support for panel icons has been changed. See Tooltips for details.
  • Preferences:
  • Improved handling of the dirty bit, which controls whether you're prompted to save preferences.
  • Resources:
  • Inobu One provided new single-crossover icons and additional double-crossover USS icons.
  • Switchboard Editor:
  • The menu options to label a switch were enhanced to allow hiding the system name in case a user name is configured. This was suggested by Phil-Klein.
  • Throttle:
  • Restored tab and shift+tab shortcuts to browse through throttles inner windows
  • Address Panel is now focused as a default when opening a new throttle
  • Warrants:
  • Additional bug fixing and enhancements to Shared Warrants. SWs are useful to animate the simultaneous operation of multiple trains. Be aware that SWs may mutually block movement that can only be resolved by aborting at least one of them. Regular warrants avoid such deadlocks due to the priority of their launch times.
  • SWs will not allocate any blocks beyond or at a "hazard" (occupation by foreign train, passage beyond a stop signal, conflict with another warrant)
  • If a ramp down to stop at a "hazard" stops before entering the next block, the restart is done automatically when the condition clears.
  • If a ramp down to stop at a "hazard" overruns into the next block, the SW will allocate the next block if that is permissible. Whether or not, i.e. the position of the train is marked yellow or blue, use the normal Control commands to restart. "Resume" if the "hazard" was occupation or a warrant, or wait for the signal change to an allowable speed.
  • The messages to the status field of the warrant Table and other information can be displayed to the console by clicking the "Trace Warrants" button in Warrant Preferences.
  • WiThrottle Server:
  • Added a "TelnetTrain.py" example to run a train from the Python command line.
  • Web Server:
  • Support for display and interaction with (Control) Panel slipTurnoutIcons has been added to JMRI Web Server Panels.
  • This includes double and single slips, three-way turnouts and scissors with 2 or 4 turnouts.
  • Miscellaneous:
  • Improved accessibility of throttle keyboard shortcut help.
  • Developers: The Typescript and Javascript support has been updated.

New in JMRI 4.99.2+Racb4fb2437 Test release (Jan 17, 2022)

  • Hardware Support:
  • DCC++ and DCC-EX:
  • handle new locoState reply to sync speed, dir and Fkeys
  • MQTT:
  • Native MQTT SignalMasts are available.
  • Splash screen shows connection address
  • TMCC:
  • Enabled functions 23-27 in the throttle.
  • New / Updated decoder definitions:
  • SoundTraxx:
  • TSU2 Genesis Diesel - add SD70ACU and Dash 9-44CW
  • TSU Genesis Steam - N Challenger add CV and change some default value per user request
  • LogixNG:
  • The action Throttle has been updated. It now also has the child sockets Function and FunctionOnOff. These are optional. If both are connected, the Throttle action sets or resets this function. The child Function tells the function number and the child FunctionOnOff tells if the function should be On (True) or Off (False).
  • A single Logix can be imported to LogixNG. See the section Logix for more information.
  • Scripting:
  • Example scripts related to MQTT moved from jython directory to jythonMQTT directory.
  • Initial, very experimental, Python 3 support is available for macOS and Linux.
  • Added simpler accessors to InstanceManager for use in Py3 scripts. See jython/test/InstanceManagerTest.py
  • Signals:
  • Signal Masts:
  • Native MQTT masts are available
  • Miscellaneous:
  • SpotBugs has been updated to 4.5.0

New in JMRI 4.99.1+Rf3d7151af8 Test release (Dec 20, 2021)

  • Hardware Support:
  • DCC4pc:
  • DCC4pc now has multi-system capability
  • New / Updated decoder definitions:
  • ZIMO:
  • added new decoder definitions for Firmware v40.x
  • Logix:
  • A single Logix can now be exported to LogixNG. Open Tools -> Tables -> Logix and select Export to LogixNG for the Logix you want to export.
  • LogixNG:
  • A single Logix can be imported to LogixNG. Se the section Logix for more information.
  • Signals:
  • Signal Systems:
  • Allow user-modified signal systems to provide their own copy of an existing aspects.xml file.
  • Miscellaneous:
  • This is the first test release that requires Java 11. As part of that, there were extensive changes to the underlying infrastructure. See PR #10278 and following PRs with the Java 11 label.
  • Personal and development builds after this release will be called 4.99.1plus instead of the prior convention of calling them 4.99.2ish. This should only affect JMRI developers.

New in JMRI 4.26+R381c8dfc32 (Dec 16, 2021)

  • CBUS:
  • Andrew Crosland added new code to implement a Service provider Interface for CBUS module support.
  • Initial support is limited to a few modules and allows more human-friendly editing of Node variables.
  • Improvements to CBUS node support.
  • More module GUI editors added.
  • DCC++ and DCC-EX:
  • New sample script (SendDCCppMessages.py) to easily send DCCpp commmand list
  • Added support for new servo and vpin turnout messages
  • Store definitions as properties in created objects
  • Config Base Station now available as Startup action
  • Monitor, Send Command, and Config Base Station now multi-connection-aware.
  • New throttles now default to Forward instead of Reverse
  • SoundTraxx:
  • TSU2 Genesis OEM add new models
  • TAMS:
  • Added definition for Tams FD-R Basic 3, including Railcommunity norm RCN-277 mapping for future use on other decoders
  • DecoderPro:
  • Updated TCS Decoder identification processes to allow for 4-byte decoder with ids stored in CV's 253, 254, 255, and 256. Process only effects TCS decoders CV249 > 175.
  • LogixNG:
  • Add a Reporter Action which can be used to copy reports to memory variables or local variables.
  • Add a Reporter Expression which can compare reports to strings, memory variables or local variables.
  • Add Dispatcher Action and Expression.
  • Add a Table tab to Local Variable and Memory Actions. The table reference is used to identify the cell that has content that will be copied to the selected local or memory variable.
  • The Highlight row in ConditionalNG Editor option in Preferences ⇒ LogixNG has been added. This can be useful for seeing which row is currently selected.
  • The action Listen On Beans is improved.
  • The LogixNG actions Light, Sensor and Turnout can now set the states Unknown and Inconsistent.
  • The LogixNG action Show dialog has been added.
  • The LogixNG action Timeout has been added.
  • Fixed some issues with minor edge cases.
  • The LogixNG function hex2dec() has been added. It converts a hexadecimal number to a decimal number.
  • Operations:
  • Fixed exception when using "hyphen" feature without other characters.
  • Fixed the truncate feature when using utility cars.
  • Fixed automation bug when there are manifest warnings.
  • Fixed AutoHPT model and road bugs.
  • Fixed save after delete of car.
  • Enhancement, show how many warnings in the build report.
  • Enhancement, user can optionally update route departure times when changing train departure times.
  • Enhancement, added medium load priority.
  • Improved Show Schedules by Car Type and Load
  • Enhancement, added text color options to switch list and track comments.
  • Improved displayed comments for Yardmaster.
  • Improved displayed comments for Yardmaster by Track tool.
  • Fixed pick up car error on Manifests when using route blocking order.
  • Scripting:
  • For some hardware types, sensors.requestAll() can request a status update for any Sensors known to JMRI.
  • This is not possible for many hardware types, eg. Internal Connections.
  • For multiple hardware connections, sensors.updateAll() will query all connections.
  • Adds the LnBushbyForwarder.py jython script, to support Digitrax command stations by providing a mechanism to forward "special" LocoNet turnout control messages when "normal" LocoNet turnout control messages are seen for user-selected LocoNet turnout addresses. This may be useful when the Digitrax command station "Bushby" feature is enabled. More technical discussion of the issues associated with the Bushby feature may be found in the discussion of Command Station Turnout Command Rejection Avoidance Strategies in the general Digitrax help page.
  • Added ThreadingExample.py script to show how to defer work to the GUI/Layout script from an AbstractAutomat or other threaded script.
  • Added a new LnSendToolwithNCE script.
  • Added KeyListenerExample, a sample script that shows how to listen to the keyboard.
  • Signal Systems:
  • Swedish railway signaling system, SE-TSFS-2010, 2009 version of the "3H Signaling System", Module 3H
  • Fixed a bug in the CCOR-1967 set that kept one aspect from displaying properly.
  • A Norway 2001 system was added.
  • Signal Masts:
  • Add an address offset option for DCC Signal Mast Decoder signal masts.
  • Add the ability to select the aspect id for the unlit option.
  • USS CTC Logic:
  • Improve the USS CTC documentation and the jython/ctc/ sample script example of use
  • Multiple upgrades to improve the realism of the example panel's operation and appearance. Much help provided by Bob Milhaupt.
  • Throttle:
  • Several bug fix on function panel (related to xml store/load)
  • Moved the keyboard shortcut implementation from KeyListeners to Input and Action Maps, should work better
  • Fixed a problem with function keys due to changes in Java 8u311
  • Added ControlPanel.getSpeedSlider() for scripting
  • Added default throttle file preference, will be loaded when a new throttle is acquired and no specific roster entry exist for the used address
  • Documentation update
  • Minor bug fixes : Modifier keys were not showing on the keyboard control preferences screen and preference apply was not done immediately for throttle list window
  • Removed the global preference "Hide speed step selector" as it is available per throttle. Less complexity.
  • Transits:
  • Transits can now have unlimited number of sections.
  • Turnouts, Lights, Sensors and other elements:
  • Light Controllers triggered by Turnout now have Turnout stored in xml by DisplayName ( UserName, or SystemName if no userName set ), rather than SystemName.
  • Warrants:
  • Loss of control when train loses occupation detection (dirty track or pickup, unreliable sensor, etc) is fixed. Formerly trains could run uncontrolled at their current speed setting. An emergency stop is made and speed is set to zero upon loss of detection.
  • Calculation of ramp times and distances is improved. However, the need for good data of path lengths and train speed profiles remains.
  • The occasional freeze of the Warrant List Table is fixed.
  • The address column of the Warrant List table is changed to show a roster id instead of the DCC address. Un-rostered addresses may still be entered and the warrants run with such engines. In this case, the column entry is the address bracketed with $ signs.
  • Warrant activity can be "traced" on the console. An Enable/Disable button in Warrant Preferences activates this feature. Default is tracing disabled.
  • "Slow Speed Assistance" can be given when a train is inordinately late in getting to the next block of the script. This done only when train approaching the block has a speed less than a configurable percentage of throttle. If the train has not reached the block within 10 seconds of its scheduled script time, its speed is increased by one "Ramp Step Throttle Increment". This is done at 10 second intervals until either the train reaches the block or has attained the configurable percentage throttle speed. Upon entering the block the original script speed is restored.
  • This feature will allow balky engines with poor low speed characteristics to reach their destinations without stalling. The default throttle percentage for triggering Slow Speed Assistance is 2.5% and may be changed in Warrant Preferences. Slow Speed Assistance is disabled by setting this trigger speed to 0%.
  • Fixed a problem found in JMRI 4.25.7 with stopping logic.
  • Miscellaneous:
  • The JavaHelp system has been replaced by JmriHelp. See the Help page for details.
  • PanelPro main menu updates
  • Moved the Virtual Sound Decoder menu from the Debug menu to the Tools menu.
  • Moved Start WiThrottle Server and Start JMRI Web Server from Debug to Tools ⇒ Servers.
  • Updated website help pages including adding a section about the PanelPro menus to the main PanelPro help page.
  • The length of logging lines sent to the system console has been reduced by no longer including the date. The time is still included. If you have a copy of the 'default.lcf' file in your local JMRI setting directory, you won't see this change until you update it.
  • Access to the deprecated SecurityManager class has been removed; Java access security is now enforced by default.
  • Keith Usher provided a new mediumschematics searchlights icon set at resources/icons/mediumschematics/searchlights/
  • Fixed a problem with throttle function keys due to changes in Java 8u311
  • Limited support for native running on Apple Silicon is now available. Please note:
  • Anya DMX support doesn't work. We recommend that you don't try to configure that hardware, as crashes have been reported.
  • There is no support for the JInput library, which is used for JInput-specific connections.
  • There is no support for the BlueCove library, which is used for Digitrax over BlueTooth connections.
  • Sound support is currently limited, with work on-going.
  • JMRI runs fine, without the above limitations, in Rosetta (Intel emulation) mode on Apple Silicon macs. To run JMRI in native mode:
  • Install an Apple Silicon Java from Azul.
  • If needed, remove any Intel-mode Java installations. (These may cause JMRI to start in Intel-emulation mode)
  • Make sure you have Rosetta 2 installed. macOS requires this to launch a JMRI application from its app icon. (See FB9730830)
  • If you want to check whether JMRI is running in Apple Silicon native more or Intel emulation mode, select Context... from the JMRI Help menu. Then look for the `os.arch` value about 2/3 of the way down. If it's `aarch64`, JMRI is running on Apple Silicon natively. `x86_64` indicates Intel-simulation mode.
  • Basic support for TypeScript has been added to the webserver file system.
  • Users that have HighDPI scaling set to something different than 100% can now select whenether or not to force Java to use 100% scaling. To change it, go to Edit -> Preferences -> Display. The checkbox has the text Force 100% scaling when the OS uses higher scaling.
  • Fix error after deleting a Memory and suppressing messages.

New in JMRI 4.25.6+R56a369f047 Test (Nov 18, 2021)

  • Hardware Support:
  • CBUS:
  • More module GUI editors added.
  • MERG:
  • Support for CBUS CANMIO-SVO live updates during servo position setting
  • MQTT:
  • Add protection against a concurrent-modification error that can happen during very fast operations.
  • If the connection is disconnected, JMRI tries to reconnect.
  • LogixNG:
  • The action Listen On Beans is improved.
  • Operations:
  • Fixed pick up car error on Manifests when using route blocking order.
  • Scripting:
  • Added KeyListenerExample
  • , a sample script that shows how to listen to the keyboard.
  • Signals:
  • Fixed a bug in the CCOR-1967 set that kept one aspect from displaying properly.
  • Throttle:
  • Added ControlPanel.getSpeedSlider() for scripting
  • Added default throttle file preference, will be loaded when a new throttle is acquired and no specific roster entry exist for the used address
  • Transit:
  • Transits can now have unlimited number of sections.
  • Warrants:
  • Loss of control when train loses occupation detection (dirty track or pickup, unreliable sensor, etc) is fixed. Formerly trains could run uncontrolled at their current speed setting. An emergency stop is made and speed is set to zero upon loss of detection.
  • Calculation of ramp times and distances is improved. However, the need for good data of path lengths and train speed profiles remains.
  • The occasional freeze of the Warrant List Table is fixed.
  • the address column of the Warrant List table is changed to show a roster id instead of the DCC address. Un-rostered addresses may still be entered and the warrants run with such engines. In this case, the column entry is the address bracketed with $ signs.
  • Warrant activity can be "traced" on the console. An Enable/Disable button in Warrant Preferences activates this feature. Default is tracing disabled.
  • "Slow Speed Assistance" can be given when a train is inordinately late in getting to the next block of the script. This done only when train approaching the block has a speed less than a configurable percentage of throttle. If the train has not reached the block within 10 seconds of its scheduled script time, its speed is increased by one "Ramp Step Throttle Increment". This is done at 10 second intervals until either the train reaches the block or has attained the configurable percentage throttle speed. Upon entering the block the original script speed is restored.
  • This feature will allow balky engines with poor low speed characteristics to reach their destinations without stalling. The default throttle percentage for triggering Slow Speed Assistance is 2.5% and may be changed in Warrant Preferences. Slow Speed Assistance is disabled by setting this trigger speed to 0%.
  • Miscellaneous:
  • Simplify JmriHelp, eliminate static stub files.

New in JMRI 4.25.5+R8682bb138b Test (Nov 3, 2021)

  • Hardware Support:
  • DCC++ and DCC-EX:
  • new throttles now default to Forward instead of Reverse
  • Operations:
  • Improved Show Schedules by Car Type and Load
  • Enhancement, added text color options to switch list and track comments.
  • Improved displayed comments for Yardmaster.
  • Improved displayed comments for Yardmaster by Track tool.
  • Throttle:
  • Several bug fix on function panel (related to xml store/load)
  • Moved the keyboard shortcut implementation from KeyListeners to Input and Action Maps, should work better
  • Fixed a problem with function keys due to changes in Java 8u311
  • Miscellaneous:
  • Keith Usher provided a new mediumschematics serachlights icon set at resources/icons/mediumschematics/searchlights/
  • Fixed a problem with throttle function keys due to changes in Java 8u311
  • If you want to check whether JMRI is running in Apple Silicon native more or Intel emulation mode, select Context... from the JMRI Help menu. Then look for the `os.arch` value about 2/3 of the way down. If it's `aarch64`, JMRI is running on Apple Silicon natively. `x86_64` indicates Intel-simulation mode.
  • Limited support for native running on Apple Silicon is now available. Please note:
  • There is no support for the JInput library, which is used for JInput-specific connections.
  • There is no support for the BlueCove library, which is used for Digitrax over BlueTooth connections.
  • Sound support is currently limited, with work on-going.
  • JMRI runs fine, without the above limitations, in Rosetta (Intel emulation) mode on Apple Silicon macs. To run JMRI in native mode:
  • Install an Apple Silicon Java from Azul.
  • If needed, remove any Intel-mode Java installations. (These may cause JMRI to start in Intel-emulation mode)
  • Make sure you have Rosetta 2 installed. macOS requires this to launch a JMRI application from its app icon. (See FB9730830)

New in JMRI 4.25.4+R6bcb9ac1fa Test (Oct 12, 2021)

  • CBUS:
  • Andrew Crosland added new code to implement a Service provider Interface for CBUS module support.
  • Initial support is limited to a few modules and allows more human-friendly editing of Node variables.
  • DCC++ and DCC-EX:
  • New sample script (SendDCCppMessages.py) to easily send DCCpp commmand list
  • Added support for new servo and vpin turnout messages
  • Store definitions as properties in created objects
  • Config Base Station now available as Startup action
  • Monitor, Send Command, and Config Base Station now multi-connection-aware.
  • MERG:
  • See CBUS notes.
  • SPROG:
  • See CBUS notes.
  • New / Updated decoder definitions:
  • Doehler & Haas
  • Added DH06A definition for fw 3.12.050
  • TAMS:
  • Added definition for Tams FD-R Basic 3, including Railcommunity norm RCN-277 mapping for future use on other decoders
  • LogixNG:
  • Add Dispatcher Actions and Expressions.
  • Add a Table tab to Local Variable and Memory Actions. The table reference is used to identify the cell that has content that will be copied to the selected local or memory variable.
  • The Highlight row in ConditionalNG Editor option in Preferences ⇒ LogixNG has been added. This can be useful for seeing which row is currently selected.
  • Meters and MeterFrames:
  • Operations:
  • Fixed exception when using "hyphen" feature without other characters.
  • Fixed the truncate feature when using utility cars.
  • Fixed automation bug when there are manifest warnings.
  • Fixed AutoHPT model and road bugs.
  • Fixed save after delete of car.
  • Enhancement, show how many warnings in the build report.
  • Enhancement, user can optionally update route departure times when changing train departure times.
  • Enhancement, added medium load priority.
  • Panel Editor:
  • When changing the icons used by an item, the icon display window now shows the choices in alphanumeric order by name.
  • Control Panel Editor:
  • Palette
  • When changing the icons used by an item, the icon display window now shows the choices in alphanumeric order by name.
  • Turnouts, Lights, Sensors and other elements:
  • Light Controllers triggered by Turnout now have Turnout stored in xml by DisplayName ( UserName, or SystemName if no userName set ), rather than SystemName.
  • Signals:
  • Signal Systems:
  • Swedish railway signaling system, SE-TSFS-2010, 2009 version of the "3H Signaling System", Module 3H
  • Signal Masts
  • Add an address offset option for DCC Signal Mast Decoder signal masts.
  • Add the ability to select the aspect id for the unlit option.
  • USS CTC Logic:
  • Multiple upgrades to improve the realism of the example panel's operation and appearance. Much help provided by Bob Milhaupt.
  • Miscellaneous:
  • The length of logging lines sent to the system console has been reduced by no longer including the date. The time is still included. If you have a copy of the 'default.lcf' file in your local JMRI setting directory, you won't see this change until you update it.
  • Access to the deprecated SecurityManager class has been removed; Java access security is now enforced by default.

New in JMRI 4.25.1+R1547b1639f Test (Jul 15, 2021)

  • New warnings for this release:
  • Since JMRI 4.25.1 This test release makes a major change to how the help information is displayed by JMRI. From now on, it will be displayed in a browser on your computer, instead of within JMRI. There's a new "Help" preference that lets you change this to use the online JMRI help instead of the help information that's distributed with JMRI itself.
  • Hardware Support:
  • MERG:
  • Fixed - Response Events are sometimes shown as normal Events in MERG CBUS Console ( from 4.13.4 ).
  • Scripting:
  • For some hardware types, sensors.requestAll() can request a status update for any Sensors known to JMRI.
  • This is not possible for many hardware types, eg. Internal Connections.
  • For multiple hardware connections, sensors.updateAll() will query all connections.
  • Miscellaneous:
  • The JavaHelp system has been replaced by JmriHelp.

New in JMRI 4.24+Re18b309e8 (Jul 9, 2021)

  • CBUS:
  • Fixed Internal Sensor Manager set as default, not CBUS Sensor Manager, affecting 4.19.6 onwards.
  • Simulated Connections - Output Interval option added to Additional Connection Settings.
  • CANPiWi v1 Firmware - No need for Node Manager to request Number of Events.
  • Fixed Internal Sensor Manager set as default, not CBUS Sensor Manager, affecting 4.19.6 onwards.
  • DCC Programmer - Added support for hardware that supports CV read hints
  • DCC++ and DCC-EX:
  • Improved CV read speeds by included startVal
  • DCCppOverTCP server now forwards all messages, even those with unknown or invalid syntax
  • LocoNet:
  • Provides LocoNet Monitor interpretation of messages generated by the Digikeijs DR5088RC "RailCom" device.
  • MQTT:
  • Support MQTT Username and Password for Broker Authentication
  • OpenLCB / LCC:
  • Simulated Connections - Output Interval option added to Additional Connection Settings.
  • Configuration editor functional and visual updates:
  • If a configuration window is closed with unsaved changes, a warning dialog will appear.
  • Updated fonts and geometric arrangement to make the dialog easier to oversee.
  • The dialog will open with all segments closed to reduce clutter and ease navigation.
  • Fixed bug in resizing the window.
  • Accessibility updates: the segment headers are now part of tab order and can collapse/expand on enter or space key.
  • JMRI will now respond to the Global Identify Events message as the standard requires.
  • SPROG:
  • Increased maximum command station slots to 64 and added advanced connection preference to select.
  • Added support for current CV value hint when reading (requires a future SPROG 4.5 firmware release).
  • Added startup action to open SPROG Slot Monitor
  • Uhlenbrock Intellibox:
  • LNCV Programing of the Daisy II manual throttle and FunkMaster Wireless Hub was added.
  • Use a DecoderPro definition with a Ops Mode roster entry.
  • New / Updated decoder definitions:
  • All decoder.xsd XML validation schema from now on require an "item" attribute on each variable element. It is needed to apply qualifier selections to translated definitions.
  • All current decoder definitions in JMRI were updated where necessary (see below for specific ESU, LDH and Zimo series).
  • Doehler & Haas:
  • New - for all new D&H definitions: decoder model (product ID) is now detected automatically thanks to the introduction of CV 261 in updated firmware.
  • DH05C (fw 3.12.050 - including update path from older fw versions definitions)
  • DH10C (fw 3.12.050 - including update path from older fw versions definitions)
  • DH12A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH16A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH18A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH21A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH22A (fw 3.12.050 - including update path from older fw versions definitions)
  • PD05A (fw 3.12.050 - including update path from older fw versions definitions)
  • PD12A (fw 3.12.050 - including update path from older fw versions definitions)
  • FH05B (fw 3.12.050 - including update path from older fw versions definitions)
  • FH18A (fw 3.12.050 - including update path from older fw versions definitions)
  • FH22A (fw 3.12.050 - including update path from older fw versions definitions)
  • SH05A (fw 1.14.050 - including update path from older fw versions definitions)
  • SH10A (fw 1.14.050 - including update path from older fw versions definitions)
  • ESU:
  • Missing "item" attributes were added to the v4fnOutCv and v5fnOutCv includes.
  • LDH:
  • Missing "item" attributes were added to the v4fnOutCv and v5fnOutCv includes.
  • Common CVs were moved to cv33-39mapping.xml and cv67-94speed.xml respectively.
  • PIKO:
  • Added support for Piko SmartDecoder 4.1 Next 18 Series used in N and TT scale engines.
  • TAMS:
  • Bugfixes in TAMS_LD_42.xml
  • Tam Valley Depot:
  • Added support for new QuadLN_S Midpoint/Oscillate mode
  • ZIMO:
  • Zimo Swiss Mapping was updated bi Nigel Cliffe to V36+, adding features to select the dimming group for each output in the table and to set the dimming levels.
  • MX605 (Kato type plug N sound decoder for ICE 4)
  • Missing "item" attributes were added to the CVSwissMapping_v36.xml include and the Decoder Version was copied into CV1-CV99.xml in order to allow customization for Swiss Mapping.
  • Control Panel Editor:
  • Labels and icons on a panel can now have an Id. This is useful if the label/icon is controlled by LogixNG.
  • CTC Tool:
  • The CTC Editor windows location and size settings have been moved to the standard JMRI location within the current profile. The AwtWindowProperies.txt file in the ctc directory at the user files location is no longer used.
  • Dispatcher:
  • Use full length of section when stopping by speed profile.
  • Create Train. Fix sort order in Transit Combo.
  • Create Train. Fix starting train outside of Transit..
  • Create Train. Use Roster selection combo.
  • Create Train. Allow user to select by roster, by train, or enter a dcc address without changing Dispatcher defaults. Allow override of DCC address for trains from Operations.
  • When allocating by Safe Sections corect a problem selecting Primary or Alternate Section.
  • Correct issue when running under No Signals that caused a train not to relize the next section was now available.
  • When stopping in a multi-block section, pull train as far into section as possible.
  • Do not mix stopping by speed profile and stopping by stopping sensor which was causing trains to run into the next section
  • Layout Editor:
  • Fix Options ⇒ Track Options ⇒ Hide Track Construction Lines.
  • Labels and icons on a panel can now have an Id. This is useful if the label/icon is controlled by LogixNG.
  • NX - Entry/Exit Tool:
  • LogixNG:
  • LogixNG (Logix Next Generation) is a new way of adding logic to the model railroad.
  • Add Actions and Expressions for Blocks.
  • Add Actions for labels and icons on panels.
  • Add support for WhereUsed bean usage searches.
  • Add WhereUsed reports for Blocks and Sensors.
  • Implement Clock Action and Expression
  • PanelPro:
  • The main PanelPro menu has changed.
  • The Load, Store, and History menu items have moved from the Panels menu to the File menu.
  • The script related menu items have been moved to a new Scripting menu.
  • A Delete Panel menu item has been added to the Panels menu.
  • A dialog will be displayed if a second load is invoked. The message can be suppressed using the checkbox.
  • When a file is loaded, the file name will be display in the JMRI System Console (Help ⇒ System Console).
  • When the Close button on a panel window is clicked, a dialog will be displayed to indicate that the panel has been hidden. The message includes instructions on making the panel visible and how to delete the panel. The message can be suppressed using the checkbox.
  • When a panel is added, deleted or renamed, a pending update flag is set. If PanelPro is stopped before doing the Store process, a dialog will be displayed. Select Yes to store the changes before the shutdown proceeds.
  • Preferences:
  • Throttles : Keyboard shortcuts can be customized in JMRI throttle preferences screen (second pane, warning, no consistency check is made)
  • Added an option to Preferences ⇒ Display to limit the number of rows when a combo box is using the setupComboBoxMaxRows feature. This is useful for large screens.
  • Roster:
  • Media/Function tab : Added an entry in function buttons icons contextual menu that will open a system file manager located into the JMRI functions icons library (allows easy drag'n drop)
  • Media/Function tab : If an existing icon or image file (same name, same size) is aded an icon, it will no longer be duplicated, existing instance will be used
  • Function buttons icons, SVG file format now supported, allows for smooth scaling in JMRI native throttle window
  • Scripting:
  • Added script "SensorFromBxpa1AutoRev.py". This script monitors LocoNet for messages pertaining to BXPA1 autoreverse events and updates a JMRI sensor to reflect the state. When monitoring a specific BXPA1 (by BoardID), one JMRI sensor is used. When monitoring all BXPA1 devices, a separate JMRI sensor is defined for each reporting BXPA1 device. Further details on script configuration and some known limitations may be found in the comments included within the script's code.
  • Ian Price contributed the new LocoTracker script.
  • Signals:
  • Updated link in documentation
  • Mark Ziebell made some corrections to the AAR-1946 appearance info.
  • Mark Ziebell added a CCOR-1967 signal system.
  • Signal Systems:
  • CCOR-1967 updated by Mark Ziebell
  • Cab Signals:
  • Better set row height in table.
  • Simple Signal Logic:
  • The SSL tool has been updated to include the ability to delete a SSL defintion.
  • Throttle:
  • Under the hood code clean up for throttles (all systems), safe release of throttles.
  • Function Panel now displays all functions buttons at once, with a scrollbar if required
  • There are as many function buttons as defined by the used throttle
  • Added an entry in function buttons icons contextual menu that will open a system file manager located into the JMRI functions icons library (allows easy drag'n drop
  • If an existing icon file (same name, same size) is aded an icon, it will no longer be duplicated, existing instance will be used
  • Keyboard shortcuts now available on whole throttle window
  • Keyboard shortcuts can be customized in JMRI throttle preferences screen (second pane, warning, no consistency check is made)
  • Mousewheel speed control now available on whole throttle window
  • One mousewheel scroll unit will increment or decrement throttle speed by one speed setting increment (depends on the throttle speed step setting)
  • Use Ctrl key to apply a multiply factor on speed increment/decrement (customizable in JMRI throttle preferences screen)
  • Function and Control panels property panes reworked
  • Function button with images can be resized in button property panel
  • Function button customizations correctly serialized
  • Ticks on graphical speed slider
  • Pressing Enter in AddressPanel when entering an address will actually request it
  • Jythons scripts with direct access to the JMRI UI are now deprecated (AAR105.py, RailDriver.py, USBThrottle.py, xboxThrottle.py). Use USBThrottleAsJynstrument.py script instead, or direct Jynstrument in jython/Jynstruments/ThrottleWindowToolBar/USBThrottle.jyn , specific drivers are proposed for AAR105 and Raildriver, they may have to be adjusted.
  • When "Use large speed slider and control buttons" is enabled, throttle control panel buttons (and slider) will resize automatically to leverage available space in throttle control panel
  • When "Large speed slider" mode is enabled (in throttle preferences), directions, stop and estop buttons will automatically resize and scale depending on the control panel inner window size : allows for high visibility from far away (for people using a wireless device combined with JMRI native throttles for instance)
  • Function buttons icons, SVG file format now supported, allows for smooth scaling
  • Throttle control panel button icons are now based on SVG files, allows better scaling
  • Throttle preferences are now be applied live, no need to reload the throttle windows or restart the application
  • Turnouts, Lights, Sensors and other elements:
  • Fixed Duplication of Sensors in Sensor Table views. Bug introduced in 4.23.3
  • Fixed Sensor Table sort issues with Delay to Active, Delay to InActive columns.
  • Virtual Sound Decoder:
  • Reduced audio buffer consumption for Diesel sounds.
  • Minimum time for a sub-buffer increased from 100 to 150 milliseconds.
  • Fixed bug with last accel-limit values less than 100 in config.xml.
  • Audio buffers and sources now are removed when a VSDecoder is deleted.
  • Deprecated methods in VSDecoderManager: getVSDecoder(String profile_name, String path), getNumberOfDecoders, setDefaultVSDecoder, getDefaultVSDecoder. And in VSDecoder: setDefault, isDefault.
  • Added the option "dynamic gain" for steam1. See the documentation for details.
  • Where Used:
  • Add support for searching LogixNG for bean usage.
  • Miscellaneous:
  • Sound files that are larger than 100,000 bytes and therefore are streamed can now be looped.
  • Automatic Signal Mast Logic Production: Corrected to use Protecting Blocks
  • Transit Creation Tool: Uses block sections on transits emanating from stubs.
  • Luca Dentella contributed the new CmdMapper script.

New in JMRI 4.23.8+R3ebc7d2f6 Test (Jun 27, 2021)

  • Update Timer help content
  • Fix action timer
  • fix SignalGroupTableAction bug
  • Update JVMCapabilities.shtml
  • The nullness annotation @Nonnull is not applicable for the primitive
  • Restructure the actions/expressions LogixNG help pages
  • Fix bug in AnalogIO manager
  • Fix on change swing classs
  • Add AnalogActionLightIntensity
  • .package help pages
  • Fix bug in the LogixNG Clipboard

New in JMRI 4.23.6+Rf65c767ff Test (May 27, 2021)

  • 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 in Summer 2021. (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.

New in JMRI 4.23.5+R0e79567f8 Test (May 15, 2021)

  • New / Updated decoder definitions:
  • PIKO:
  • Added support for Piko SmartDecoder 4.1 Next 18 Series used in N and TT scale engines.
  • Dispatcher:
  • Create Train. Fix sort order in Transit Combo.
  • Create Train. Fix starting train outside of Transit..
  • Create Train. Use Roster selection combo.
  • Create Train. Allow user to select by roster, by train, or enter a dcc address without changing Dispatcher defaults. Allow override of DCC address for trains from Operations.
  • When allocating by Safe Sections corect a problem selecting Primary or Alternate Section.
  • Correct issue when running under No Signals that caused a train not to relize the next section was now available.
  • When stopping in a multi-block section, pull train as far into section as possible.
  • Do not mix stopping by speed profile and stopping by stopping sensor which was causing trains to run into the next section
  • LogixNG:
  • Implement Clock Action and Expression
  • Roster:
  • Function buttons icons, SVG file format now supported, allows for smooth scaling in JMRI native throttle window
  • Throttle:
  • When "Large speed slider" mode is enabled (in throttle preferences), directions, stop and estop buttons will automatically resize and scale depending on the control panel inner window size : allows for high visibility from far away (for people using a wireless device combined with JMRI native throttles for instance)
  • Function buttons icons, SVG file format now supported, allows for smooth scaling
  • Throttle control panel button icons are now based on SVG files, allows better scaling
  • Throttle preferences are now be applied live, no need to reload the throttle windows or restart the application
  • Virtual Sound Decoder:
  • Audio buffers and sources now are removed when a VSDecoder is deleted.
  • Deprecated methods in VSDecoderManager: getVSDecoder(String profile_name, String path), getNumberOfDecoders, setDefaultVSDecoder, getDefaultVSDecoder. And in VSDecoder: setDefault, isDefault.
  • Miscellaneous:
  • Luca Dentella contributed the new CmdMapper script.

New in JMRI 4.23.3+R528b9f0d6 Test (Apr 3, 2021)

  • Hardware Support:
  • CBUS:
  • Fixed Internal Sensor Manager set as default, not CBUS Sensor Manager, affecting 4.19.6 onwards.
  • Simulated Connections - Output Interval option added to Additional Connection Settings.
  • DCC++ and DCC-EX:
  • Improved CV read speeds by included startVal
  • OpenLCB / LCC:
  • Simulated Connections - Output Interval option added to Additional Connection Settings.
  • Configuration editor functional and visual updates:
  • If a configuration window is closed with unsaved changes, a warning dialog will appear.
  • Updated fonts and geometric arrangement to make the dialog easier to oversee.
  • The dialog will open with all segments closed to reduce clutter and ease navigation.
  • Fixed bug in resizing the window.
  • Accessibility updates: the segment headers are now part of tab order and can collapse/expand on enter or space key.
  • JMRI will now respond to the Global Identify Events message as the standard requires.
  • SPROG:
  • Increased maximum command station slots to 64 and added advanced connection preference to select.
  • Added support for current CV value hint when reading (requires a future SPROG 4.5 firmware release).
  • New / Updated decoder definitions:
  • All decoder.xsd XML validation schema from now on require an "item" attribute on each variable element. It is needed to apply qualifier selections to translated definitions.
  • All current decoder definitions in JMRI were updated where necessary (see below for specific ESU, LDH and Zimo series).
  • Doehler & Haas:
  • New - for all new D&H definitions: decoder model (product ID) is now detected automatically thanks to the introduction of CV 261 in updated firmware.
  • DH05C (fw 3.12.050 - including update path from older fw versions definitions)
  • DH10C (fw 3.12.050 - including update path from older fw versions definitions)
  • DH12A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH16A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH18A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH21A (fw 3.12.050 - including update path from older fw versions definitions)
  • DH22A (fw 3.12.050 - including update path from older fw versions definitions)
  • PD05A (fw 3.12.050 - including update path from older fw versions definitions)
  • PD12A (fw 3.12.050 - including update path from older fw versions definitions)
  • FH05B (fw 3.12.050 - including update path from older fw versions definitions)
  • FH18A (fw 3.12.050 - including update path from older fw versions definitions)
  • FH22A (fw 3.12.050 - including update path from older fw versions definitions)
  • SH05A (fw 1.14.050 - including update path from older fw versions definitions)
  • SH10A (fw 1.14.050 - including update path from older fw versions definitions)
  • ESU:
  • Missing "item" attributes were added to the v4fnOutCv and v5fnOutCv includes.
  • LDH:
  • Missing "item" attributes were added to the v4fnOutCv and v5fnOutCv includes.
  • Common CVs were moved to cv33-39mapping.xml and cv67-94speed.xml respectively.
  • ZIMO:
  • MX605 (Kato type plug N sound decoder for ICE 4)
  • Missing "item" attributes were added to the CVSwissMapping_v36.xml include and the Decoder Version was copied into CV1-CV99.xml in order to allow customization for Swiss Mapping.
  • PanelPro:
  • The main PanelPro menu has changed.
  • The Load, Store, and History menu items have moved from the Panels menu to the File menu.
  • The script related menu items have been moved to a new Scripting menu.
  • A Delete Panel menu item has been added to the Panels menu.
  • A dialog will be displayed if a second load is invoked. The message can be suppressed using the checkbox.
  • When a file is loaded, the file name will be display in the JMRI System Console (Help ? System Console).
  • When the Close button on a panel window is clicked, a dialog will be displayed to indicate that the panel has been hidden. The message includes instructions on making the panel visible and how to delete the panel. The message can be suppressed using the checkbox.
  • When a panel is added, deleted or renamed, a pending update flag is set. If PanelPro is stopped before doing the Store process, a dialog will be displayed. Select Yes to store the changes before the shutdown proceeds.
  • Dispatcher:
  • Use full length of section when stopping by speed profile.
  • Layout Editor:
  • Fix Options ? Track Options ? Hide Track Construction Lines.
  • NX - Entry/Exit Tool:
  • Preferences:
  • Throttles : Keyboard shortcuts can be customized in JMRI throttle preferences screen (second pane, warning, no consistency check is made)
  • Roster:
  • Media/Function tab : Added an entry in function buttons icons contextual menu that will open a system file manager located into the JMRI functions icons library (allows easy drag'n drop)
  • Media/Function tab : If an existing icon or image file (same name, same size) is aded an icon, it will no longer be duplicated, existing instance will be used
  • Scripting:
  • Added script "SensorFromBxpa1AutoRev.py". This script monitors LocoNet for messages pertaining to BXPA1 autoreverse events and updates a JMRI sensor to reflect the state. When monitoring a specific BXPA1 (by BoardID), one JMRI sensor is used. When monitoring all BXPA1 devices, a separate JMRI sensor is defined for each reporting BXPA1 device. Further details on script configuration and some known limitations may be found in the comments included within the script's code.
  • Signals:
  • Simple Signal Logic:
  • The SSL tool has been updated to include the ability to delete a SSL defintion.
  • Throttle:
  • Function Panel now displays all functions buttons at once, with a scrollbar if required
  • There are as many function buttons as defined by the used throttle
  • Added an entry in function buttons icons contextual menu that will open a system file manager located into the JMRI functions icons library (allows easy drag'n drop
  • If an existing icon file (same name, same size) is aded an icon, it will no longer be duplicated, existing instance will be used
  • Keyboard shortcuts now available on whole throttle window
  • Keyboard shortcuts can be customized in JMRI throttle preferences screen (second pane, warning, no consistency check is made)
  • Mousewheel speed control now available on whole throttle window
  • One mousewheel scroll unit will increment or decrement throttle speed by one speed setting increment (depends on the throttle speed step setting)
  • Use Ctrl key to apply a multiply factor on speed increment/decrement (customizable in JMRI throttle preferences screen)
  • Function and Control panels property panes reworked
  • Function button with images can be resized in button property panel
  • Function button customizations correctly serialized
  • Ticks on graphical speed slider
  • Pressing Enter in AddressPanel when entering an address will actually request it
  • Jythons scripts with direct access to the JMRI UI are now deprecated (AAR105.py, RailDriver.py, USBThrottle.py, xboxThrottle.py). Use USBThrottleAsJynstrument.py script instead, or direct Jynstrument in jython/Jynstruments/ThrottleWindowToolBar/USBThrottle.jyn , specific drivers are proposed for AAR105 and Raildriver, they may have to be adjusted.
  • Virtual Sound Decoder:
  • Reduced audio buffer consumption for Diesel sounds.
  • Minimum time for a sub-buffer increased from 100 to 150 milliseconds.
  • Fixed bug with last accel-limit values less than 100 in config.xml.
  • Miscellaneous:
  • Sound files that are larger than 100,000 bytes and therefore are streamed can now be looped.

New in JMRI 4.23.2+R63953730f Test (Mar 10, 2021)

  • Bew warnings for this release:
  • LogixNG:
  • This version of LogixNG is not backward compatible with previous versions. If anyone has a panel file with LogixNG that doesn't load with this new version, request help for it on the JMRI developers list or the JMRI users list and the author of LogixNG, Daniel Bergqvist, will fix it.
  • An updated tutorial profile due to this: Tutorial/PreviewLogixNG.jmri.zip
  • The action If Then Else now has the options Trigger action and Continuous action. If Trigger action, the child actions will only be executed if the expression changes its result. If Continuous action, the child actions will always get executed.
  • Menu item Tools -> LogixNG -> Import Logix now supports importing Logix to LogixNG. The user can select whenether import system Logixs or not (SYS and RTX). Currently, the import Logix dialog doesn't support importing a subset of Logixs. It will be a later feature. Note that the import tool allows the user to import the same Logix multiple times since it doesn't remember which Logixs that has already been imported.
  • There are a couple of actions not implemented yet. Warrant, OBlock, Clock, Audio and Set Light Intensity. If you try to import Logixs that uses any of these actions, the import will fail and an error dialog will be shown. No Logixs will be imported in this case.
  • If you are using local variables, the action Log local variables may be useful. When it's executed, it logs all the current local variables and their values as WARN messages to the log.

New in JMRI 4.23.1+Rebbe5e366 Test (Mar 8, 2021)

  • Uhlenbrock Intellibox:
  • LNCV Programing of the Daisy II manual throttle and FunkMaster Wireless Hub was added.
  • Use a DecoderPro definition with a Ops Mode roster entry.
  • New / Updated decoder definitions:
  • Zimo Swiss Mapping was updated bi Nigel Cliffe to V36+, adding features to select the dimming group for each output in the table and to set the dimming levels.
  • Preferences:
  • Added an option to Preferences ⇒ Display to limit the number of rows when a combo box is using the setupComboBoxMaxRows feature. This is useful for large screens.
  • Signals:
  • Better set row height in table.
  • Throttle:
  • Under the hood code clean up for throttles (all systems), safe release of throttles.

New in JMRI 4.22+R4c4384d74 (Mar 2, 2021)

  • Update From Older JMRI Versions:
  • If you are currently using a version older than JMRI 4.20, please follow these instructions carefully:
  • Is your current version older than JMRI 4.12? If so, then update to JMRI 4.12 first, and ensure everything works correctly: check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else. Store your configuration and panel files under a new name and use those from now on. Then continue with step 2.
  • If you are currently using JMRI 4.7.3 or earlier on Linux or macOS (Windows doesn't need this), then it's very important that you update to JMRI 4.12 and carrying out the migration process described in the JMRI 4.12 release note before updating to any later relese.
  • Is your current version older than JMRI 4.20? Then update to JMRI 4.20 first, and ensure that works correctly (check start-up, check things you need to be working, and check the JMRI log as well) before doing anything else Store your configuration and panel files under a new name and use those from now on.
  • You can then install this release.
  • New warnings for this production release:
  • Since JMRI 4.21.1 The jmri.jmrix.SystemConnectionMemo class has become a jmri.SystemConnectionMemo interface and a jmri.jmrix.DefaultSystemConnectionMemo class. This may require changes to scripts. If you have a script that references jmri.jmrix.SystemConnectionMemo, please change it to either jmri.SystemConnectionMemo or jmri.jmrix.DefaultSystemConnectionMemo (it's easier to have you just try the two than to explain which one will work in which case)
  • Since JMRI 4.21.1 The way preferences are loaded at startup has been slightly modified. There is no impact to JMRI applications, but Non-JMRI applications that are not derived from apps.Apps or apps.AppsBase but are using jmri.implementation.JmriConfigurationManager to load preferences will no longer see preferences if an error occurs. To restore the old behavior, use apps.AppsConfigurationManager instead.
  • Hardware Support:
  • Acela CTI:
  • Fixed issue unable to initialise adapter
  • CBUS:
  • When the connection is lost to a GridConnect Serial Device ( eg. CANUSB4 losing power / Windows Sleep Modes ), JMRI will periodically attempt to reconnect to the device.
  • Default Output Interval reduced to 100ms.
  • CBUS now has its own trademark and is referred to as CBUS, not 'MERG CBUS'.
  • CBUS RFID Reporters now act similar to other JMRI Reporters, ie with a timeout following the report.
  • CBUS Reporters can set a Sensor to follow the active IDTag status, set via CBUS Reporter Table.
  • CBUS Reporters will default to classic RFID ( 5 byte unique tags ), with option for in-development CANRC522 / CANRCOM format, set via CBUS Reporter Table.
  • Refer to MERG section of this not for changes in JMRI support for MERG hardware.
  • Restructured help pages to reflect split between MERG specific hardware and hardware agnostic CBUS features.
  • Andrew Crosland added a second current meter instance for SPROG Generation 5 hardware.
  • Corrected links to images on SPROG Generation 5 hardware help page.
  • Changed trademark recognition to ® for register trademarks, rather than ™.
  • CBUS now has its own trademark and is referred to as CBUS, not 'MERG CBUS'.
  • Refer to CBUS section of this not for changes in JMRI support for CBUS.
  • Restructured help pages to reflect split between MERG specific hardware and hardware agnostic CBUS features.
  • C/MRI:
  • CMRI SerialSensor updated to support multiple Character system name prefixes.
  • DCC++:
  • Only send function refreshes if required (version < 3)
  • DCC-EX:
  • messaging enhancements and cleanup, retry some failed messages
  • allow user to define meters in DCC-EX that display in JMRI
  • DCC4pc:
  • Improved System Name validation for Sensors and Reporters, must contain at least 1 number.
  • Public Domain and DIY decoders:
  • LocoIO programming using the Public_Domain_HDL_LocoIO decoder definition has been significantly expanded. This update requires JMRI 4.21.2 or later. Because of the included improvements you are advised to start with new Roster Entries for your LocoIO boards. Help files have been updated.
  • ESU:
  • Improved System Name validation for Turnouts, Sensors and Reporters, must contain at least 1 number.
  • Added "LokSound 5 micro E24 DCC" and "LokSound 5 micro KATO".
  • Replaced incorrectly-named "LokPilot 5 micro DCC Next18" with "LokPilot 5 Micro Next18 DCC".
  • Internal:
  • Sensor, Turnout, Light and Reporter Address ranges do not have to be fully numeric, and will be incremented using the final number in an address.
  • For example, a range can be created from "My Yard 77 Sensor 1" which would increment to "My Yard 77 Sensor 2"
  • IPOCSMR:
  • Initial support added.
  • Turnouts, Lights (on/off) and Sensors
  • LocoNet:
  • Instructions detailing how to change the Board ID (Board Address) of certain Digitrax LocoNet-based devices using JMRI have been added to the Digitrax hardware page.
  • Fixed a problem in the PM4Announce script
  • The legacy LocoIO programmer help points to the current DIY decoder method to configure these boards.
  • The legacy LocoIO programmer help points to the current DIY decoder method to configure these boards.
  • LocoNet support for "Voltage/Current Meters" has been extended to include support for multiple sources of meter information, and to include automatic discovery of LocoNet devices which support voltage and current reporting. Each discovered device is identified by its device type and serial number. These "friendly" identifiers appear in the "Voltage Meter" and "Current Meter" menus in the "Voltage/Current Meter" tool. Further information may be found at the Digitrax "Meters" web page.
  • Start-up "Interrogation" of LocoNet Sensor and Turnout state has re-worked to provide better operation for LocoNet connections with large numbers of Sensors and/or Turnouts. The JMRI interrogation mechanism now implements a minimum delay from the last Sensor Report, Turnout Report or Interrogate Query message before sending the next Interrogate Query message.
  • The "DS64 Configuration Tool" was updated:
  • to correctly perform the "Factory Reset" operation without encountering a "Java Exception";
  • to correctly perform the "Factory Reset" operation to the correct DS64 as specified in the "Unit Address" field;
  • to correctly manage the values shown on the "OpSw Values" tab and maintain value coherency between the "OpSw Values" tab and the "Basic Settings" tab.
  • Keep slot status in line with CS after setting COMMON or true slot moves
  • Allow selection of "Stand-alone LocoNet (with external LocoNet Data Termination!)" for Digitrax PR4.
  • New LNCV Programming tool (Uhlenbrock protocol), available from LocoNet menu, with window specific help.
  • When connected to the LocoNet HexFile Simulator, simulated replies from selected devices are sent to the monitor (select the "Simulate replies" checkbox on the HexFile pane).
  • Maple:
  • Maple SerialSensor updated to support multiple Character system name prefixes.
  • MQTT:
  • The MQTT temporary directory has been moved to the current profile directory. This will allow JMRI to have MQTT connections even when JMRI is installed in a protected location.
  • MQTT Turnouts now support MONITORING and EXACT feedback modes
  • When status UNKNOWN or INCONSISTENT is received from MQTT and the turnout operating mode is MONITORING or EXACT, the layout is now updated with this status
  • When EXACT feedback mode is selected, two different MQTT topics will be used - one for commands and one for state
  • Added MQTT Sensors
  • MQTT connection configuration now lets you set the prefix for Turnouts, Sensors, Lights, Reporters, Signal Heads and Signal Masts. (There's no actual support for Lights, Reporters, Heads and Masts yet, but you can set the prefix). Note: You should check the settings for Turnouts and Sensors to ensure they're what you want. This code upgrade might have overwritten any values you (had to) manually edit into preferences in the past.
  • The new "jython/SendMqttMessage.py" sample script show how to send across an existing MQTT connection.
  • The new "jython/ReceiveMqttMessage.py" is simple demo of receiving MQTT messages into a script. It just prints the received messages, but you can build up from there.
  • Fixed a bug that caused an erroneous ERROR message on operating MQTT Lights
  • Added support for creating ranges of Turnouts and Lights.
  • Sensor, Turnout and Light Address ranges do not have to be fully numeric, and will be incremented using the final number in an address.
  • Added support for changing the default quality of service and retention policy for transmissions. See the jython/SetMqttOptions.py script for an example.
  • Fix a nasty threading bug in the MQTT Light support that can cause a JMRI lockup on the first access after adding a Light.
  • Update the Paho MQTT library from version 0.4.0 to 1.2.5 (current)
  • Better handling of wildcards in topic subscriptions
  • OpenLCB:
  • Default Output Interval reduced to 100ms.
  • Pi:
  • Improved System Name validation for Turnouts and Sensors, numeric from 0 - 999
  • RFID:
  • Improved System Name validation for Standalone sensors, must contain at least 1 number.
  • Network connections: Support added for auto-reconnect.
  • Network connections: TCP/UDP port configuration option promoted to main configuration settings panel and no longer under Additional Connection Settings.
  • SoundTraxx:
  • TSU2 Diesel fix sound slections, Genesis OEM Diesel add models
  • SPROG DCC:
  • EStop for 28 Step mode is now sent correctly
  • Updated programming mode switcher for Pi-SPROG 3
  • Added mode switcher for SPROG 3 Plus
  • Added help content for new generation 5 hardware
  • TAMS:
  • Improved System Name validation for Turnouts and Sensors, must contain at least 1 number.
  • Uhlenbrock Intellibox:
  • The 73900 decoder definition was renamed 7x900, and updated to support decoder models:
  • 73800
  • 73900
  • 76900 (V1)
  • 76900V7
  • Piko 56126
  • Existing roster entries will suggest this replacement.
  • Added hardware connection support for the (LocoNet) Uhlenbrock USB Adapter part #63120. Manufacturer states their USB drivers only support Windows OS.
  • XPA:
  • Improved System Name validation for Turnouts, must be numeric
  • New / Updated decoder definitions
  • Digikeijs (Digirails)
  • Added DR5033 LocoBoost configuration support, using the new LNCV service mode programming.
  • You can access the DecoderPro programming panes from the LNCV Tool table matched by article number (5033 in this case).
  • Digitrax:
  • Allow configuration of more function outputs for FX3 decoders.
  • ESU:
  • Added LokPilot 5 Fx micro Next18 variants and Pullman Silberling.
  • Update for some new ESU firmware features.
  • Fix some errors.
  • F29-F31 now present in Function Labels pane for generation 5 decoders.
  • Tam Valley Depot:
  • Updated the QuadLN_S template to support the 16 servo capability in the Version 3 software
  • Uhlenbrock:
  • New Switch Module 63410 decoder support, using the new LNCV service mode programming.
  • You can access the DecoderPro programming panes from the LNCV Tool table matched by article number (6341 in this case).
  • New definitions to program Power4, Power8 (boosters) and IntelliLight 28x0 modules.
  • For Uhlenbrock Track-Control modules a Direct Message type was added to the LNCV protocol. The Lncv Programming tool has a new checkbox 'Direct Mode', allowing to set LEDs etc.
  • Two new Track-Control definitions (art. 69220 Turnout and 69230 Signal Module)
  • When connected to the LocoNet HexFile Simulator, simulated replies from LNCV devices are sent to the monitor (select the "Simulate replies" checkbox on the HexFile pane).
  • DecoderPro:
  • The DecoderPro programming/editing screens now have a Find operation!
  • Ctrl-F or Cmd-F will open a small find bar at the bottom of the pane where you can enter a search string. Hitting Return will find the first occurrence. There are right and left arrows to find the next occurrence forward and backwards respectively. Ctrl-G or Cmd-G will also find the next forward occurrence. Shift-Ctrl-G or Shift-Cmd-G will find the next occurrence going backwards. The "Done" button will dismiss the bar, but you can leave it up without it interfering with anything.
  • Added a new optional "maxFnNum" model-level attribute for Decoder Definitions.
  • Specifies the highest F key supported by the decoder. The assumed default is "28".
  • Note that `maxFnNum` is not to be confused with the existing `numFns`, a legacy attribute that limits the total number of function mapping lines displayed. Neither is derivable from the other.
  • This value is currently used to build the Function Labels pane.
  • This value is propagated to the Roster Index and intended to be used in future by throttles, etc.
  • Example definitions are LokSound 5(uses F0-F31) and LokSound V3.5(uses only F0-F15).
  • Added a new optional "allowResetDefaults" decoder-config level attribute for Decoder Definitions.
  • For some decoders, it's either impossible or impractical for the decoder definition to have universally applicable defaults incorporated. In these cases, setting allowResetDefaults="no" disables the "Reset to defaults" button on the Roster Entry pane and provides an explanatory tooltip.
  • CTC Tool:
  • To correct prior release notes, the CTC panel can be created with Layout Editor, Control Panel Editor or Panel Editor.
  • This release gets a new capability: Auto-Generation of Traffic Locking (TRL) rules, which is the most tedious and difficult aspect of (any) CTC systems. However, TRL Auto-Generation is dependent on Layout Editor, with Signal Masts at block boundaries, and with automatically generated Signal Mast Logic. The Signal Mast Logic can be modified after discovery, but there has to be at least one discovery process run. After this process is complete, if you are not happy with the way Layout Editor displays the layout, you can create a parallel Control Panel Editor or Panel Editor screen. Personally, in my opinion, Layout Editor looks very close to an actual CTC panel if drawn correctly.
  • There is a reminder dialog that was added to remind users of the CTC system that using "," (Comma) and ";" (Semi-colon) in ANY of the System and User names for items used by the CTC system is not supported, and may cause problems in the program. The reminder can be silenced permanently too by the user.
  • When CTC Runtime starts (Run CTC Logic), if there are any problem(s), warning(s) or informational message(s), it will now popup a dialog box to inform the user. Previously, I relied on the System Console for the logging of those messages (which still happens), but the System Console screen may not be visible, ergo the need for this new feature.
  • Bug Fix: It was possible (though technically wrong) for a user to specify a single turnout as locked in two (or more) different O.S. sections. If this was specified, the runtime program would fight itself and eventually cause a stack overflow. This is now prevented during user entry from occurring. If you have specified this prior to this release, you must manually correct this.
  • Bug Fix: There was a problem that occurred when certain Java libraries were used. The CTC .xml file that contains all of the data was slightly corrupted due it. By just running this new version of CTC Editor, those problems will automatically be fixed. You may then exit the CTC Editor even without saving, as the fix will have already been done. (internal file version 5 to 6)
  • Bug Fix: If an O.S. section did not have a Signal Lever defined, it was possible (though wrong) to enable Traffic Locking and / or Call On. Now it is impossible to define either if there is no Signal Lever defined properly.
  • The CTC tool no longer uses an external XML file, CTCSystem.xml, for retaining its configuration. The configuration is now part of the standard PanelPro data file. This change eliminates issues with data consistency between the JMRI tables and the CTC configuration. The CTC Editor File menu has an menu item to import an existing CTCSystem.xml file so that the configuration will be included in Panels ⇒ Store Panels.
  • Include detail information for vetoed object deletes.
  • Control Panel Editor:
  • The 'Circuit Builder' menu has been updated. See below.
  • The 'Edit Turnout Icon' menu item of Indicator Track popups synchronizes paths with the 'Add/Edit Circuit Paths' window of Circuit Builder.
  • Icons of tracks indicators and signals in the style of the ČSD Czechoslovak State Railway - Unified Control Place - JOP style.
  • Circuit Builder:
  • A 'change Portal Icon Set' menu item is added to the 'Circuit Builder' menu of Control Panel Editor. User defined icon sets for Portals can be installed here.
  • When using the 'Add/Edit Circuit Portal' window, the popup menu of a Portal now allows repositioning from the 'Set Location' menu item.
  • Features added to the 'Add/Edit Signal Mast' window are;
  • 1. A Signal list shows the signals that are configured to protect the block.
  • 2. Buttons will open the Tables for creation, renaming and deletion of both signal Masts and Signal Heads.
  • 3. Signal icons can be dragged in the fashion of Item Palette from the window to the panel
  • 4. Instructions for these operations are described on the window.
  • Two new error alerts are added to the 'Error Checks' menu item of the 'Circuit Builder' menu.
  • 1. OBlocks that do not have a block length are listed. Every Path in a block should have its length specified in order to run Warrants. But for convenience, this length can be inherited from the block length.
  • 2. Signals that are not configured to protect a block are listed. If these signals have icons they can be highlighted with a corresponding menu Item.
  • Circuit Builder track colors (Allocated, Not In Use, ...) are now supported on Web Server panels. See OBlocks and JSON.
  • OBlock and associated tables can be edited like the 'standard' tables (see OBlocks).
  • Palette:
  • Some minor changes are made to the user interface.
  • For the tabs having icon sets, i.e. turnouts, sensors, etc., should all icon sets be deleted, a 'Restore Default' button is displayed to reinstall the default icons.
  • The above restoration feature can be done at any time by holding keys CNTL A down while clicking the 'New Icons' button. All customized icon sets defined by the user are retained and any missing default icons are added.
  • The unused functions to create, delete, or restore the status states of Indicator Turnouts are now only displayable by holding keys CNTL A down while clicking the 'Edit Icons' button.
  • Several new checks and alerts will inform users when duplicate names are used for icon sets or when duplicate icon sets are found with different names.
  • The fixed set of Portal icons may be redefined by the user under the 'Portal' tab. Portal icon sets created by the user may be selected for panels by a new menu item, 'Change Portal Icon Set' in Circuit Builder. The new set is then used for Warrant displays.
  • The drag and drop of icons under the 'Icon' and 'Background' tabs no longer requires naming the icon first. The drop from the Icon catalog can be done directly into the panel.
  • The tabs having tables now display the element's actual table editing window when the 'Add New Table Item' button is pressed.
  • Editing an icon set for an Indicator Turnout now follows the same paradigm as the rest of the tabs having icon sets. Defining new icon sets, changing icons, or renaming sets functions the same for all such tab items.
  • Dispatcher System:
  • Jython based System which automates the build of a Dispatcher system
  • Requirement: Start with a Panel with track, signals, signal logic built with
  • automatic signal logic, sections built with automatic section builder
  • Provides Gui to: Modify xml of panel to provide icons to setup dispatch
  • between stops, Generate Transits and TrainInfo files required by dispatcher
  • Provides a runtime system to operate the system
  • In addition to running trains by Signal Masts or Signal Heads you may now run trains by No Signals This is most useful for Automatic engineer, and works best with fast throw switchs, such as snap switchs, as it works solely on whether a section is allocated. If you need to check switch sensors for position you must continue to use SSL or SML signals.
  • Internationalization:
  • Dutch translations added for the Where Used, Meters and Issue Reporting tools.
  • Layout Editor:
  • The Layout Editor code has been substantially restructured in this release. If you have scripts that reference the jmri.jmrit.display.layoutEditor package please check them carefully, as new classes have been created and some methods have moved. Panel files containing Layout Editor panels that are stored (written out) by this release may not be readable by earlier releases; this release should load older files just fine.
  • A problem storing and reading LE controlpoint values for users with a non-default Locale has been fixed .
  • Logix:
  • The "Copy Logix" feature has been enhanced to provide more assistance in copying conditionals. See the updated help files for details.
  • Fixed a couple of bugs there Logix wasn't correctly listening on signal head lunar state, signal head flash lunar state, signal mast lit state and signal mast held state. See PR #9059.
  • Meters and MeterFrames:
  • jmri.MultiMeter is split into jmri.Meter.
  • jmri.VoltageMeter and jmri.CurrentMeter is added.
  • AmpMeterFrame and VoltMeterFrame are replaced by MeterFrame
  • The user can select which VoltageMeter/CurrentMeter the MeterFrame should show
  • The MeterFrames are stored in the panel file and restored when the panel is loaded
  • LocoNet supports discovery of the sources of voltage and current data and makes them available in the "Voltage/Current Meter" tool.
  • default meter digits based on max and resolution of defined meter
  • The Settings menu was slightly reorganized with submenus for each value.
  • When no meters are available, both Meters menus and the Units Settings menu show a short explanation.
  • Meters will honor the JMRI Locale/regional setting for the decimal separator (. or ,))
  • Meters now use meter max and resolution to default integer and decimal digits
  • Operations:
  • Fixed problem where operations database was always saved when exiting JMRI.
  • Fixed problem with Panel name for train icons.
  • Fixed problem with track move count when track has an alternate track.
  • New feature for cars, Return When Loaded. Now you can set a load name and destination for a car when it's load status changes to loaded. See operations help for more details.
  • Preferences:
  • When a hardware connection fails, some hardware types may attempt to reconnect.
  • The interval between reconnection attempts and the maximum number of reconnection attempts can now be changed by saving your profile, then editing the profile.xml file.
  • The reconnectMaxInterval is in seconds, reconnectMaxAttempts is infinite if -1, else the value.
  • The rules for the system connection prefix (one capital followed only by a number, for example D78) are now protected in the Connection Preference panel. Invalid entries are highlighted in red.
  • A bug that could make connection tabs disappear has been fixed.
  • Routes:
  • A configurable (minimum) interval for all turnout outputs that are part of a Route on the same connection can be set in Preferences > Connection > Additional Connection Settings (serial connections only). Default is 250 milliseconds. Up to now this delay was fixed to 250 ms in the code so this new option will only be noticeable if you change it. No restart is required. Use the [Reset] button to restore the default. The same setting is applied to Turnout Outputs, for example as Signal Mast outputs.
  • Scripting:
  • Some internal refactoring that should help with the long term maintenance of JMRI has been done. This may cause some scripts to fail until classes or methods are renamed in those scripts.
  • new scripts ShutdownOS.py and RestartOS.py which can be called to safely end JMRI and then request that the underlying OS shutdown or restart itself
  • The getSystemNameList() and getNamedBeanList() Manager methods have been fully deprecated.
  • Please update any code warnings re these methods to use getNamedBeanSet(), and post on the JMRI Users Group for any assistance with updating.
  • The Manager method getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix) has been deprecated, please use getNextValidAddress(@Nonnull String curAddress, @Nonnull String prefix, boolean ignoreInitialExisting)
  • Signals:
  • Signal Systems:
  • The B&O-1980 signal system was updated to correct several errors and to include masts which can be used to protect a block of "short braking distance".
  • Signal Masts:
  • A configurable (minimum) interval for all outputs on the same connection can be set in Preferences > Connection > Additional Connection Settings (serial connections only). Default is 250 milliseconds. Use the [Reset] button to restore the default. The same setting is applied to turnout outputs in a Routes.
  • Cab Signals:
  • Better set row height in table.
  • Switchboard Editor:
  • When the Switchboard pane is resized by the user, the number of rows will adjust to show the largest size switch tiles (default On for new boards). If you prefer to set the number of rows in the Editor, uncheck "Automatically set optimum grid" in the Options menu).
  • Switchboards immediately update after a change in shapes, types, connection or range. The [Update Switchboard] button is still available, and occasionally required.
  • Switches display the user name on the switches (default On for new boards, set "Show user name on switches" in the Options menu.
  • Slider and Key switch shapes are drawn on screen instead of loading image files. This increased redraw speed and allows using your custom colors and scaling the size of the graphics to the space available. The old images files for these have been removed.
  • Symbol shapes are still drawn by swapping 2 image files. We added the option to scale them in the Option menu. (Hint: You can replace the supplied image files with your own images as long as they carry identical file names).
  • Throttle:
  • Fix issue where Jynstrument would not start correctly (user group message).
  • Added a throttle frame Jynstrument that hides throttle window menubar and toolbar and switches to semitransparent mode (and vice versa) (idea from this user message).
  • Fix Jynstrument instantiation on Windows (cleaner URI to path method). User message 78674589
  • Added local and global preferences to show/hide speed step selector. User message 80665867
  • Added global throttle preference to use or not large speed slider. User message 80665867
  • Refactored VideoView Jynstrument for camera view in Throttle, reworked using a new third party library.
  • Timetable:
  • Set the default start time for a new train to match the schedule start time.
  • Turnouts, Lights, Sensors and other elements:
  • Increased address validation for multiple hardware types.
  • Access to OBlocks in Web Server via JSON messages was added.
  • Occupancy Blocks, Portals and Paths used in Warrants can be edited in an optional table style like that used in the 'standard' tables (Turnouts, Lights etc). The information is stored in the exact same way, so you may change the UI as desired (see Preferences > Display. Restart required)
  • Turnouts with 1 Sensor Feedback update to Inconsistent state when the Sensor being followed enters an Unknown or Inconsistent state.
  • See Turnout Feedback
  • Virtual Sound Decoder:
  • VSD now supports the "Location Following" (sound follows loco) with occupancy sensors and JMRI Blocks. See the documentation for details.
  • The "Location Following" (sound follows loco) with occupancy sensors and JMRI Blocks now also works with a RosterEntry or RosterId as Block value.
  • Warrants:
  • The table of throttle commands shown when creating or editing warrants has been changed:
  • The Command column is now a drop down combo box. This will allow the command names to be translated into languages other than English.
  • The Value column is a drop down combo box for throttle commands other than "Speed" or "Run Warrant". Again, done to permit translation into other languages.
  • The algorithm for executing speed changes due to track conditions for warrants has been modified and is better able to restore the scripted speeds once the track speed restrictions are lifted.
  • The constant used to approximate track speed of trains has been changed to yield a scale speed of 100mph at full throttle. This change has no effect on roster entries having Speed Profiles.
  • The Address column of the Warrant Table list and the Address fields of the NXWarrant or Create Warrant windows now accept throttle protocol names and addresses of Markin and ESU ECoS.
  • When scripted speeds are overridden due to signals or obstructions ahead, the non-speed script commands are executed at approximately the same elapsed times as were written in the script.
  • Track speeds of running warrants are recorded automatically and a SpeedProfile is built that can be seen by pressing the View Profile button in the edit warrant window. These profiles can be merged into the existing profiles for the Roster entry used by the loco of the warrant when the layout session is closed. (Recall that Warrant Preferences has 3 options for this merging.)
  • An Update Track Speeds button is added to the window where warrant throttle settings and commands are edited. This button updates the Speed column to list the track speeds (mm/sec) for the current Speed Profile measurements of the locomotive address entered in the 'Engine Consist' box.
  • Bugs introduced during the past year to the 'Wait Sensor' command and merging of speed profiles are fixed.
  • When OBlocks are imported from LayoutEditor blocks, the turnout settings of paths are also added to the imported OPaths.
  • A button to translate the throttle settings to track speed in inches/sec or millimeters/sec or scale speed on miles/hr or kilometers/hr has been added to the windows used for editing Warrants or creating NXWarrants.
  • Web Server:
  • Switchboard panels on Web Server support all graphic shapes and colors set in the Editor.
  • Switchboard "switch" icons fill the whole screen on mobile devices (you can turn this off in Switchboard Editor by deselecting "Automatically set optimum grid" in the Options menu.
  • Switchboard panels for Lights allow to switch all lights on or off (also in Web Server when Panel items control layout is selected in the Editor Options menu).
  • Control Panel track colors (Allocated, Not In Use, ...) are now fully supported on Web Server panels.
  • OBlocks access was added as a JSON Servlet to allow this.
  • Where Used:
  • Implement data collection for CTC references for sensors, signal heads, signal masts, turnouts and blocks.
  • Miscellaneous:
  • The jmri.jmrix.SystemConnectionMemo class has become a jmri.SystemConnectionMemo interface and a jmri.jmrix.DefaultSystemConnectionMemo class. This may require changes to scripts. If you have a script that references jmri.jmrix.SystemConnectionMemo, please change it to either jmri.SystemConnectionMemo or jmri.jmrix.DefaultSystemConnectionMemo (it's easier to have you just try the two than to explain which one will work in which case)
  • Added PR automation to check for a comment in the release note when a PR is opened, and to ensure that somebody has been assigned to the PR.
  • The jmri.JmriPlugin class is deprecated without a replacement. If you depend on on this class, please raise an issue on GitHub so we can discuss how to meet your requirements through other means.
  • "Display Message Log" has been removed from the Debug Menu. Use the "System Console" from the Help Menu to view log messages.
  • The older "Upload Debugging Information" item in the help menu has been replaced by a "Report Issue..." item. This walks you through creating a JMRI GitHub issue and uploads information that will make debugging easier. You need a (free) GitHub account to do the final submission. There's more info on the help page.
  • The interface jmri.Light has been split into jmri.Light and jmri.VariableLight. Lights that supports variable intensity must now implement the jmri.VariableLight interface. All lights are still managed by the jmri.LightManager, but a new manager jmri.VariableLightManager has been added that keeps a copy of the VariableLights. But register and deregister of all lights must still be done thru the LightManager.
  • Windows launcher updated to honour return codes to shutdown or reboot host machine
  • The Ant version invoked by Maven was bumped to 1.10.8. No user action required, but developers need to be online the first time they build using Maven.
  • An option (disablePermissiveSignalMastLogic) has been added to SignalMasts and SignalMastLogic to enable conditional permissive aspects. See the jmri.SignalMast Javadoc for details.
  • Windows launcher updated to honour return codes to shutdown or reboot host machine
  • The Ant version invoked by Maven was bumped to 1.10.8. No user action required, but developers need to be online the first time they build using Maven.
  • The (English) phrasing in a couple of messages was updated for consistency.
  • YetAnotherAutoTrain.py (YAAT) has been updated to version 2.2. This version includes support for compiling train definitions for faster startup. It also includes the ability to create extensions to the command language. A Help document has been added to the JMRI Help pages.
  • The Comments columns in Tools ⇒ Tables have support for multi-line comments. The Edit Comment option has been added to the right click pop-up menu that is normally used to move user names. A tooltip will be displayed with the comment content.
  • Improved how JavaHelp handles non-HTML files on some platforms.
  • AbstractProxyManager
  • AbstractProxyManager can now automatically create system specific managers.
  • When a NamedBean is added to a proxy manager, there needs to be a system specific manager for that bean unless the bean is for the internal manager. The ProxyMeterManager and AbstractProxyManager automatically creates a new system specific manager if it doesn't already exists. This works as long as the system specific manager doesn't need to have system specific knowledge of the named beans.
  • This means that, for example, the user may create a Jython script that creates a Meter for the LocoNet connection but doesn't need to create the LocoNet meter manager since that manager is automatically created.
  • Once a specific connection needs to store specific data about meters, a connection specific manager needs to be created, for example LnMeterManager for LocoNet.

New in JMRI 4.21.3+R63094d48b Test (Dec 20, 2020)

  • New warnings for this release:
  • Since JMRI 4.21.3 The Layout Editor code has been substantially restructured in this release. If you have scripts that reference the jmri.jmrit.display.layoutEditor package please check them carefully, as new classes have been created and some methods have moved. Panel files containing Layout Editor panels that are stored (written out) by this release may not be readable by earlier releases; this release should load older files just fine.

New in JMRI 4.19.5+R6ede87265 Test (Apr 24, 2020)

  • 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 in early summer 2020. (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.

New in JMRI 4.19.1+R4f29f85 (Jan 2, 2020)

  • JMRI 4.19.1 and later enforce the standard form of system names, where the system is denoted by a single letter or a letter plus digits. Some users of JMRI 4.18 or earlier might have incompatible values. If you have one of these hardware connections:
  • Anyma DX512 using “DX”
  • DCC++ using “DCCPP"
  • DCC4PC using “DP"
  • JSON client using “json”
  • MRC using “MR"
  • Marklin CS2 using “MC"
  • Raspberry PI using “PI"
  • TAMS using “TM”
  • you may have to migrate.

New in JMRI 4.18+R37ad3d0 (Dec 24, 2019)

  • LocoNet:
  • Since JMRI 4.17.5 Automatically refresh the slot information when the DCS240/DCS210/DCS52 "Loco Reset" feature is executed as a result of pressing the "Loco Reset" button. This feature is active only when the JMRI connection is configured for DCS240, DCS210, or DCS52 acting as the command station.
  • MERG CBUS:
  • Fixed issue with Throttle Direction Changes ( while moving ) not being sent to Command Station
  • The event status of JMRI Turnouts can be queried via CBUS commands AREQ / ASRQ.
  • CBUS Node Manager - CMDERR5 support for CANMIO U and general improvements.
  • CBUS Reporters now respond to relevant outgoing CBUS messages.
  • OpenLCB:
  • OpenLCB Light startup tweak aims to stop occasional Light flickering if their status is set during intialisation.
  • Since JMRI 4.17.5 The Traffic Monitor window has additional options to make reading the log easier. A checkbox allows showing the Node Name of the sender of a message. Another checkbox allows showing for Event messages the name(s) that JMRI can deduce about the specific Event ID. These are the same names as shown in the CDI window, usually Sensor and Turnout User Names, as well as references to currently open CDI editor windows that contain the given Event ID.
  • New / Updated decoder definitions:
  • The CV19 references in multiple decoder definitions have been updated to use common fragment files.
  • The Schema references in numerous fragment files have been updated to a consistent form.
  • The list of DCC manufacturers and ID numbers has been updated.
  • Doehler & Haas:
  • Alain Le Marchand updated some definitions
  • LDH:
  • Fixed some duplicate definitions of "Motor Output 2"
  • Updated from DTD to Schema checks
  • SoundTraxx:
  • TSU2 Genesis add SD70ACe model
  • ECO Athearn RTR add new SD40 models
  • TSU2 Steam fix legacy function names
  • TAMS:
  • New definition for the 32.2 version of the Multiprotocol Decoder by Tams Elektronik GmbH
  • TCS:
  • WestAust55 -Motor Pane Restructured plus CV182 for Special BEMF and Keep-Alive added
  • WestAust55 -CV104 added for third Private User ID purposes
  • WOW add CV 177-181 and new bit in CV182
  • WOW fix bug in CV22
  • Dispatcher
  • When a train is scheduled to re-start every X minutes this behaviour now continues over midnight times.
  • Eg. a train which restarts every 10 minutes and completes the route at 23:55 will resume at 00:05.
  • Layout Editor
  • Layout Editor combo boxes have been changed to support the migration from JmriBeanComboBox to NamedBeanComboBox. The affects the Toolbar, the Edit context menu, Set Signal Heads, Set Signal Masts, and Set Sensors.
  • Typing a name into the combo box field no longer works. The items have to be selected from the combo box drop down.
  • Typing a letter or two will position the selection.
  • Positioning is based on both the user name and the system name. For example, typing i will select items with user names starting with the letter i/I as well as internal items using the system name which starts with i/I.
  • With this release, it is not possible to create new Block entries using the Edit context item.
  • If a block is selected that does not have a user name, a dialog will prompt for a user name.
  • Improved functioning of Supporting Turnouts using feedback.
  • Blocks can be automatically created when assigned to track components in the edit dialogs.
  • Preferences
  • Updated saved window positions to cope with multiple screen setups (PR #7616)
  • Turnouts, Lights, Sensors and other elements
  • Improved behaviour of multiple Fast Clock following Light Controllers on a single Light.
  • JMRI no longer modifies "system names" as provided by the user. There may be cases where a script or panel file is creating an object with a system name that is slightly different than a system name used elsewhere, and JMRI used to change these to be the same. Users may have to modify scripts and panel files to ensure system names match in all places.
  • Scripting
  • Added a new SetUnknownTurnoutsClosed script that does what it says on the tin
  • Added script tests for SetUnknownTurnoutsClosed and SetAllTurnoutsClosed
  • jmri_bindings.py is no longer needed by JMRI to inject default bindings into Jython/Python scripts.
  • Jython has been upgraded to version 2.7.1.
  • JMRI's scripting support now defaults to the UTF-8 character encoding for all script files on all platforms. This may require that some scripts be re-saved using UTF-8.
  • The jython/SetSignalFlashRate.py sample script shows how to change the flashing on/off time for your signals. Just invoke it before defining the signals, i.e. before loading your configuration and panel files.
  • Signals
  • The jython/SetSignalFlashRate.py sample script shows how to change the flashing on/off time for your signals. Just invoke it before defining the signals, i.e. before loading your configuration and panel files.
  • Tracker
  • A Tracker help page is added.
  • Tracking can be done with intermediate cars unequippted to draw current.
  • Tracker can recover occupation lost due to poor electrical contact.
  • Tracking can be followed through dark OBlocks.
  • Warrants
  • CircuitBuilder now allows a portal to have a second icon to connect blocks that are not adjacent on the layout diagram.
  • Configuring signals for use with warrants has been added to CircuitBuilder.
  • Several checks for errors and omissions have been added to CircuitBuilder. See the updated help page for details on this and the new features.
  • Changes made in either the OBlock Tables tool or the CircuitBuilder tool are reflected in the other tool - i.e. each updates the other.
  • When the names of OBlocks, Portals or Paths are made, Warrants are updated to run as they did with the previous names.
  • If an OBlock, Portal or Path is deleted, a Warrant using one of these elements will be broken. When this occurs, a dialog is displayed listing the disabled Warrants. The user may decide to remove these warrants and continue or to cancel the deletions.
  • Web Access
  • Certain Tables menu items now support changing state by clicking on state in list
  • Miscellaneous
  • If using a non-default look and feel; it may need to be reset. Note that the look and feel stored by JMRI 4.17.1 and later will be ignored by JMRI 4.16 and earlier.
  • We "deprecate" certain methods and members in the Java code when they're no longer recommended for use. After some time, we then remove them. This version of JMRI removes all deprecated methods and members up through JMRI 4.10, which was released in December 2017. If you still have code or scripts that reference these, please look at the code in JMRI 4.16 for suggestions on what to substitute.
  • Removed Manager.getSystemNameAddedOrderList(), deprecated in JMRI 4.11.1
  • Panel file NamedBean items such as Turnouts, Sensors, etc are now written to panel files in order by their Manager system prefix and system name. Previously, they had (roughly) been written in the order they'd be read from the earlier file(s). This will result in a big change to the order the first time a file is re-written, but after that it should be much more stable.
  • Windows Only The JMRI installer removes the existing lib folder from a JMRI installation when upgrading JMRI. The existing lib folder contents are retained in the backup folder. This means that any files you have added to the lib folder will be removed.
  • macOS Only This version includes changes to how the distributed files are signed. This includes signing individual libraries, signing libraries inside jar files, signing the three app bundles, and signing the .dmg file itself, followed by notarizing the .dmg file. This was done to increase compatibility with macOS 10.15 Catalina.
  • Added basic support for developer architecture checks via ArchUnit, see the Introduction to JMRI Library Structure page.

New in JMRI 4.17.8+R7c13c6b Test (Dec 19, 2019)

  • New / Updated decoder definitions:
  • SoundTraxx:
  • TSU2 Steam fix legacy function names
  • TCS:
  • WOW fix bug in CV22

New in JMRI 4.17.6+Rdf73700 Test (Nov 21, 2019)

  • CBUS Reporters now respond to relevant outgoing CBUS messages.New / Updated decoder definitions
  • The list of DCC manufacturers and ID numbers has been updated.
  • TAMS:
  • New definition for the 32.2 version of the Multiprotocol Decoder by Tams Elektronik GmbH
  • TCS:
  • WOW add CV 177-181 and new bit in CV182
  • Preferences:
  • Updated saved window positions to cope with multiple screen setups (PR #7616)
  • Web Access:
  • Certain Tables menu items now support changing state by clicking on state in list

New in JMRI 4.15.7+Rf006fc4 Test (Jun 2, 2019)

  • LocoNet:
  • Track Current support for the DCS240,DCS210 and DCS52 has been added.
  • Turnouts can now be configured to send only a single LTnnn command (ON) instead of an ON followed by OFF, and turnouts can also be configured to bypass a command station "Bushby" feature as described in Command Station Turnout Command Rejection Avoidance Strategies
  • MERG CBUS:
  • Increased support for stealing / sharing command station sessions, see CBUS Hardware Support
  • SPROG:
  • Added fixes for SPROG bootloader client
  • New / Updated decoder definitions
  • CT Elektronik:
  • Nigel Cliffe added a decoder definition for the NGS custom CT decoder
  • Digitrax:
  • Fixed an issue in CV11 of SFX Series 6 decoders
  • Lenz:
  • Added connection option for the Lenz LZV200
  • Layout Editor
  • Color for new tracks is now consistent within a single Layout Editor.
  • Turnouts, level crossings, track segments and positional points (A/EB/EC) cannot be deleted if signal heads, signal masts or sensors have been assigned to the item. Also, an edge connector cannot be deleted if the link is defined.
  • Operations:
  • Due to underlying changes in the Operations web access, train manifests will need to rebuilt before web access to train manifests works.
  • Turnouts, Lights, Sensors and other elements
  • The table and manager containing the element are no longer listed as items using the element when deleting the element in the delete confirmation dialog. The count of items using the element shown in the delete confirmation dialog now match the number of items shown to be using the element.
  • Scripting:
  • 2 lines in scripts that use the DCCThrottle.py Jynstrument may need to be added,
  • Insert after line 141
  • New line 142 : def notifyDecisionRequired(LocoAddress, decision):
  • New line 143 : pass #
  • These changes were made to enhance the JMRI Steal / Share mechanism for hardware types that support this.
  • Signals
  • Signal Masts:
  • Output Matrix Signal Masts now allow to set a mast-specific delay interval between the individual commands sent to the connected Turnout outputs.
  • A bug was fixed that wrote the wrong mast system name as Comment in the Turnout outputs.
  • Web Access:
  • JSON clients can now add, edit, or remove Blocks, IdTags, LayoutBlocks, Operations Locations, Operations Cars, Operations Engines, Operations Tracks, Reporters, and Sensors.
  • JSON clients using WebSockets can now include an id property in the message to match a direct response to a message to the original message.
  • The JSON protocol version has been bumped to version 5.0 due to backwards incompatible changes to make different JSON objects more internally consistent and to accomodate the ability to remove some objects. See the JSON Version History for more details.
  • JSON schema are, with the exception of consists, usable, even when JMRI is running on a computer not connected to the internet. See the JSON Schema for more details.
  • Miscellaneous:
  • The jmri.util.ColorUtil.stringToColor() method now throws an IllegalArgumentException if unable to turn a String into a Color instead of returning the Color Black.
  • The Help Index and Table Of Contents were updated and expanded to include the current Hardware systems.
  • In the process we discovered that additional instructions for many of the new tools are welcome.

New in JMRI 4.15.6+Red1ceb2 Test (May 16, 2019)

  • Hardware Support:
  • MERG CBUS:
  • CBUS Reporters are no longer automatically created when hearing a DDES or ACDAT CBUS OPC.
  • New CBUS Reporters can now be created in a sequential range.
  • XpressNet:
  • Added support for Idle mode to the power manager. This indicates a global emergency stop (track power on, all locomotives stopped)
  • New / Updated decoder definitions:
  • ESU:
  • Added the Essential Sound Unit (an OEM-only decoder).
  • Added the LokSound 5 family.
  • Added the SUSI Map to those V4/5 decoders that support it.
  • Split the Sound Pane into two panes - "Sound" and "Sound Levels".
  • Improved the speed of Import->LokProgrammer CV list file.
  • ZIMO:
  • Ronald Kuhn did a lot of work on the Zimo definitions, including adding V37 definitions
  • Internationalization:
  • Petr Šídlo improved the Czech translation
  • Layout Editor:
  • The Save Location and Size Options menu item is not displayed when automatic location and size behavior is active. See the above warning.
  • Scripting:
  • Custom scripts that release throttles may need to be modified.
  • AutoDispatcher2
  • RobotThrottle2
  • RobotThrottle3
  • RocoCrane
  • Zimo Programmers
  • Old syntax: self.throttle.release()
  • New syntax assuming no throttle listeners in script: self.throttle.release(None)
  • Warrants:
  • Circuit Builder has more error help and ease of use features. The help page is updated.
  • 40 scale feet has been added to the ramp down distance.
  • Miscellaneous:
  • Add new TestWaitsForever test class to allow end-of-job debug.

New in JMRI 4.15.5+R5fb3e69 Test (Apr 22, 2019)

  • Warrants:
  • The throttle settings generated for down ramps used by NXWarrants or speed changes required by signals, occupancy conditions or user interventions has been modified. The last throttle interval now is always the throttle interval as specified in Warrant Preferences. Accuracy of the position where the train stops should be improved.
  • A bug where looped routes ending at an adjacent block could be missed by the Find Route algorithm has been fixed.
  • A stop button to halt execution of the Find Route Operation has been added.
  • The dynamic recording of speeds during sessions has been extended. A weighted average of the speed over a block is recorded to the session speed profile.
  • A bug where a Halt at zero speed would not restart has been fixed. Scripts now resume at any command where the user does a Halt.
  • The "Run Warrant" command linking warrants now executes for all cases.
  • A bug when dragging an unnamed Portal icon in CircuitBuilder might cause a freeze has been fixed.
  • Deleting an OBlock will also delete all other elements (Portals and Paths using the block). Previously when saved after such editing, warrants referencing the block would re-register the OBlock when the panel was re-loaded. Now such warrants are loaded, but will indicate that editing is needed to establish a correct route for them.
  • Hardware Support:
  • LocoNet:
  • JMRI's support for the Digitrax PR4 has been updated to reflect the PR4's inability to provide "LocoNet Data Signal termination". since 4.15.5
  • This is a correction to JMRI's previous implementation of PR4 functionality. It reflects a a more-accurate understanding of PR4 features by the JMRI development team.
  • When configuring a JMRI "connection" for the PR4, the "Command station type" of "Stand-alone LocoNet" is no longer available. Users with an existing PR4 connection which has been configured for a "Command station type" of "Stand-alone LocoNet" should change their "Command station type" to some other selection, such as "DCS100", and save the configuration profile.
  • Because LocoNet requires some source of "LocoNet Data Signal termination", and because the PR4 is not capable of providing that feature, it will be necessary to provide it using some other piece of LocoNet hardware. Both commercially-available and do-it-yourself options are available, as described in the " LocoNet Data Signal termination" section of the JMRI Standalone LocoNet" help page.
  • New / Updated decoder definitions:
  • ESU:
  • ESU LokSound decoder users can now read the loaded Sound Project Name (and other decoder information) on the Information Pane.
  • This allows cross-referencing to the ESU website (copy the "Loco Name" to search the Projects section) in order to find the ESU bulletin and hence determine Sound Slot and Function Key names. (Dave Heap)
  • TCS:
  • Add Trim CV to Basic Speed Control pane Add WOW Ver 4 Prime decoder (Michael Mosher)
  • DecoderPro:
  • Changes to Split Variables.
  • More than 2 CVs can be specified for splitVal and the other new types, using a new notation format.
  • A new splitHexVal type for hexadecimal entry/display.
  • A new splitDateTimeVal type for Date/Time information stored across CVs (e.g. dates in the RailCom® CV page).
  • A new splitTextVal type for entry and display of text strings stored across CVs .
  • For more information see Advanced Decoder Definitions. (Dave Heap)
  • MERG CBUS:
  • CBUS Node Manager provides a Node Table with further Node Configuration tools.
  • CBUS Event Table name import from MERG FCU file has moved to the Node Manager, where a file preview and further import tools are now available.
  • Track Current meter avaiable for supported Command Stations via PanelPro > Tools > Track Current Meter
  • Fixed issue with Roster speed-profiling
  • MQTT:
  • The updated MQTT support in this release
  • allows you to change the topic string used for publishing and subscribing and
  • allows changing the payload of MqttTurnouts, i.e. to use JSON instead of fixed strings.
  • For more information, see the description at the bottom of the MQTT page.
  • CTC Tool:
  • A new CTC tool has been added to JMRI. An Editor component uses a set of screens to define the CTC system. The resulting data can be used to create a USS CTC Panel (Panel Editor) with all of the levers, indicators, and a minimal track plan with turnouts and signals. A run time component uses the configuration to implement prototype CTC logic with no scripting or Logix.
  • Turnouts, Lights, Sensors and other elements:
  • The handling of Turnout system names has been updated to be (more, hopefully completely) consistent with the planned approach. Specifically, case now (generally) matters in system names:
  • You can now have an internal turnout named "ITsome lower case name".
  • But note you can no longer refer to "ITSOME LOWER CASE NAME" or "ITSome LoWeR cAse Name" and get the same one.
  • This should not require any migration for stored configurations or panel files, as they have been automatically been being kept consistent since JMRI 4.8. But you might have case errors in i.e. scripts which will fixing inconsistent references in your scripts.
  • Signals:
  • Signal Masts:
  • Better messages when a Turnout Signal Mast encounters errors due to part of its configuration not completed.
  • Better reporting of issues when Signal Mast Logic encounters a problem with a Signal Mast
  • USS CTC Logic:
  • Updated how lock information is stored in the 'logging memory' so that it can be displayed e.g. on a panel. For more info, see the help page
  • Warrants:
  • Down ramps used by NXWarrants and are also used when speed changes required by signals, occupancy conditions or user interventions occur. The throttle settings generated for down ramps have been modified. The throttle setting is increased by 10% at each time interval. Also, the last throttle interval now is always the throttle interval as specified in Warrant Preferences. Accuracy of the position where the train stops should be improved.
  • A bug where looped routes ending at an adjacent block could be missed by the Find Route algorithm has been fixed.
  • A stop button to halt execution of the Find Route Operation has been added.
  • The dynamic recording of speeds during sessions has been extended. A weighted average of the speed over a block is recorded to the session speed profile. These speeds may be edited and merger into the Roster SpeedProfile according to the settings selected in WarrantPreferences.
  • A bug where a Halt at zero speed would not restart has been fixed. Scripts now resume at any command where the user does a Halt.
  • The "Run Warrant" command linking warrants now executes for all cases.
  • A bug when dragging an unnamed Portal icon in CircuitBuilder might cause a freeze has been fixed.
  • Deleting an OBlock will also delete all other elements (Portals and Paths using the block). Previously when saved after such editing, any warrants referencing the deleted block would re-register the OBlock when the panel was re-loaded. Now such warrants are loaded, but will indicate that editing is needed to establish a correct route for them.
  • A checkBox to suppress the generation of sound commands has been added to the create NXWarrant window.
  • TextFields have been added to the create NXWarrant window so ramp parameters can be modified.
  • Missing help pages have been added to the sidebar index.
  • Miscellaneous:
  • JSON protocol documentation updated. (#6777)
  • JSON services no longer automatically listen for changes to objects provided to a client unless the client explicitly requests the object. (#6777)
  • NamedBeans now allow property change listeners to listen only to specified properties. (#6777)

New in JMRI 4.15.1+R4a42841Test (Dec 27, 2018)

  • Hardware Support:
  • MERG CBUS
  • Steve Young made multiple improvements
  • Roco z21/Z21
  • Paul Bender added support for RMBus sensors
  • New / Updated decoder definitions:
  • Dave Heap improved how the decoder identification process handles optional CVs
  • Hornby
  • Brian Jackson updated the Hornby TTS definition
  • Kuehn
  • The Kuehn N025/N45 definition was updated
  • RR-CirKits
  • The RR-CirKits Motorman definition was updated
  • DecoderPro:
  • Added "Accept All" button to roster import
  • Dave Heap improved how the decoder identification process handles optional CVs
  • Layout Editor:
  • Dave Sand improved tooltip handling
  • Roster:
  • Added "Accept All" button to roster import operation
  • Improved handling of timestamps for the last run and running duration features
  • Signals:
  • Signal Systems
  • Petr Šídlo updated the Czechoslovak state railway Elektrosignal Praga (CSD ESP) definition
  • Timetable:
  • Dave Sand made multiple updates to the Timetable support
  • Warrants:
  • Pete Cressman updated how Warrants interact
  • Web Access:
  • Multiple updates to the JSON service
  • Miscellaneous:
  • Fixed a compatibility problem when reading files containing timebase information

New in JMRI 4.13.6+Rcb07def Test (Dec 11, 2018)

  • Hardware Support:
  • Bachrus Speedo
  • DCC++
  • LocoNet
  • MERG CBUS
  • OpenLCB
  • RFID
  • Roco z21/Z21
  • Zimo MXULF
  • ZTC
  • New / Updated decoder definitions:
  • ESU
  • Hornby
  • Kuehn
  • LaisDCC
  • LDH
  • Lenz
  • MGP
  • Mistral Train Models
  • MTH
  • MRC
  • NCE
  • Norsk Modelljernbane (NJM)
  • QSI
  • Rautenhaus
  • RR-CirKits
  • SoundTraxx
  • TCS
  • Team Digital
  • Technologistic (train-O-matic)
  • Trix Modelleisenbahn
  • Miscellaneous
  • DecoderPro
  • Dispatcher
  • Minor changes to use the new standard scale process.
  • Internationalization
  • Layout Editor
  • Logix
  • Operations
  • Panel Editors
  • Preferences
  • Resources
  • Roster
  • Turnouts, Lights, Sensors and other elements
  • Scripting
  • Signals:
  • Signal Systems
  • Signal Heads
  • Signal Masts
  • Signal Groups
  • Simple Signal Logic
  • NX Entry/Exit Logic
  • USS CTC Logic
  • Timetable
  • since 4.13.4
  • Replace the timetable package layout scale enum with the new standard scale process.
  • Implement custom scale support for the new scale process.
  • Warrants
  • Web Access
  • WiThrottle Server
  • Virtual Sound Decoder
  • Miscellaneous:
  • New Layout Scale process
  • A default scale set is distributed with JMRI as an XML file rather than hardcoded lists.
  • A jmri.Scale instance is a constrained bean:
  • The user name defaults to the scale name and can be changed. The toString() method uses the user name and scale ratio, e.g. N (160).
  • The scale ratio can be changed.
  • The scale factor is automatically calculated from the scale ratio.
  • Vetoable listeners can be notified of changes and can prevent changes that might impact application stability.
  • jmri.ScaleManager manages access to the Scale instances.
  • jA CUSTOM scale entry is included which an application can implement if desired.
  • Any changes result in the default list being copied to the user file location. This makes it possible for users to create their own scale list. The distributed list is not used if the user file location list is present.
  • Other Misc:
  • This release contains a significant update to how defaults are handled for the various system components like programming tools, throttle tools, etc. Previously, the "internal" versions of those were often selected as defaults, causing some confusion. Now, unless you have explicitly created an internal connection by adding it on the connections page, they won't be, and hardware-specific connections will be used instead.

New in JMRI I.4.13.2+R8a2b21d Test (Aug 13, 2018)

  • Hardware Support:
  • LocoNet:
  • Fixed scrolling in the LocoNet configuration tool panels
  • MERG CBUS:
  • There was work done on MERG consisting
  • The MERG CBUS help screens where improved
  • Improved MERG Event Capture
  • NCE:
  • Added auto-refresh to the Show Cabs tool
  • Fixed NCE Edit Macro
  • Improved the NCE Monitor
  • Fixed NCE Edit Consist
  • Layout Editor:
  • A problem that caused the Scale Track Tool to not work with Beziers was fixed
  • The Color Chooser was updated and fixed
  • Logix:
  • Fixed a crash in Logix Tools Find Cross Reference
  • Operations:
  • Multiple enchancements to operations, including improved build report message when tracks full in staging
  • Turnouts, Lights and other elements:
  • Fixes and updates to Sensor debouncing
  • Improvements to the Light Add/Edit dialog
  • Scripting:
  • Better error messages if you try to run a script without an understandable file extension
  • Signals:
  • Signal Systems:
  • The aspect definitions in the AAR signal system were improved.
  • Problems in the BR2003 signal definition were fixed
  • Virtual Sound Decoder:
  • Klaus Killinger added the Advanced Location Following functionality. Please see the documentation website for details.
  • Web Access:
  • New Preference to allow wifi throttles to create turnouts
  • Add new Tables menu and pages to JMRI web server
  • Most JSON WebSocket lists now send individual and list changes
  • WiThrottle Server:
  • New Preference to allow wifi throttles to create turnouts
  • Return client message for invalid loco address, turnout and route requests

New in JMRI I.4.13.1+R9341f13 Test (Jul 30, 2018)

  • LocoNet:
  • Fixed scrolling in the LocoNet configuration tool panels
  • MERG CBUS:
  • There was work done on MERG consisting
  • The MERG CBUS help screens where improved
  • Improved MERG Event Capture
  • NCE:
  • Added auto-refresh to the Show Cabs tool
  • Fixed NCE Edit Macro
  • Improved the NCE Monitor
  • Fixed NCE Edit Consist
  • Layout Editor:
  • A problem that caused the Scale Track Tool to not work with Beziers was fixed
  • The Color Chooser was updated and fixed
  • Logix:
  • Fixed a crash in Logix Tools Find Cross Reference
  • Operations:
  • Multiple enchancements to operations, including improved build report message when tracks full in staging
  • Turnouts, Lights and other elements:
  • Fixes and updates to Sensor debouncing
  • Improvements to the Light Add/Edit dialog
  • Scripting:
  • Better error messages if you try to run a script without an understandable file extension
  • Signals:
  • Signal Systems:
  • The aspect definitions in the AAR signal system were improved.
  • Problems in the BR2003 signal definition were fixed
  • Web Access:
  • New Preference to allow wifi throttles to create turnouts
  • Internationalization:
  • The Catalan translation was improved.
  • The Danish translation was improved.
  • The Dutch translation was improved.
  • The German translation was improved.

New in JMRI 4.11.2.Rb400a47 Test (Jan 22, 2018)

  • Hardware Support:
  • The system connection preferences (i.e. hardware preferences) are now enforcing the correct form for system prefixes: One upper case letter, optionally followed by a number (one or more digits, e.g. "L12"). Existing prefixes in existing configurations are unchanged, but new ones will have to have the correct form.
  • Anyma DMX512:
  • The default system prefix was shortened to "D"
  • DCC++:
  • The default system prefix was shortened to "D"
  • DCC4pc:
  • The default system prefix was shortened to "D"
  • Marklin CS2:
  • The default system prefix was shortened to "M"
  • MRC:
  • The default system prefix was shortened to "M"
  • TMCC:
  • The default system prefix was shortened to "T"
  • Digitrax:
  • Digitrax Command Station "Operation Switches" (OpSws) may now be configured and saved via a Roster Entry. The OpSw configuration information may be saved to the Roster Entry. Command stations supported include the Digitrax DB150, DCS50, DCS51, DCS100, DCS200, DCS210 and DCS240. Additional information may be found at the Digitrax Command Station Configuration page.
  • Roster:
  • Digitrax Command Station Operations Switches may now be managed via a Roster entry.
  • NX Entry/Exit Logic:
  • The cross-checking between Layout Editor and Entry/Exit has been improved to prevent broken relationships that can lead to errors. Entry/Exit Help has been updated.
  • Internationalization:
  • Sonnys Hanson added more Danish translation
  • Virtual Sound Decoder:
  • Klaus Killinger added a new VSD file. For a download go to JMRI VSDecoder and click on "Download".

New in JMRI 4.6-R81496dc (Apr 23, 2017)

  • Hardware Support:
  • Bachrus Speedo:
  • Fi issues with Speedo systems in recent versions of JMRI (#2027).
  • Digitra:
  • Initial support for the DCS240, allowing you to configure it in the preferences. This is just initial support: Many advanced features are not yet supported.
  • DCS240 OpSw31 description corrected in LocoNet Command Station Configuration tool where English language has been used. Where the tool provides non-English language tet, the translation may not have been completed.
  • When DCS240 OpSw31 is "C" (closed), "metering of switch messages" is disabled, and LocoNet switch messages are sent to the DCC track signal as quickly as possible.
  • When DCS240 OpSw31 is "T" (thrown), the command station may slowly send switch request messages to the DCC track signal.
  • Adds Digitra DCS210 as a possible command station in connection, and shows appropriate OpSw descriptions in the LocoNet Command Station Configuration tool for a LocoNet connection configured as using a DCS210 command station.
  • Digi Bee:
  • The JMRI Digi Bee support now uses the official Digi Bee Library.
  • LocoNet:
  • Send direction and function changes even when JMRI thinks the value is unchanged. (#1894)
  • OpenLCB:
  • Balazs Racz updated the OpenLCB lib and associated JMRI code to OpenLCB version 0.7.
  • UI improvements in the CDI configuration dialog, such as collapsible sections, faster scrolling and tabbed UI for repeated groups. This makes configuring nodes with large I/O count or many repeated groups more convenient.
  • UI improvements in the network view dialog: the nodes on the layout are sorted by their node ID, and when available, the node Name and Description is printed in the overview to better identify which tree branch to epand.
  • Turnouts have a new feedback mode implemented: MONITORING. This mode allows turnout change requests sent from other sources, such as fascia buttons or other JMRI computers connected to the same layout to be respected in the JMRI Turnout's state. New turnouts created with JMRI 4.5.6 or later will default to MONITORING feedback. Turnouts created with older versions of JMRI or turnouts in panel ML files saved by older versions of JMRI will be set to DIRECT feedback mode, and users of release 4.5.6 and above will have to edit the turnouts one by one to set the desired feedback mode to MONITORING if they wish to use the new behavior.
  • Improvements in the standards compliancy of JMRI Turnouts and Sensors; these will now advertise as Producers and Consumers on the layout, as well as respond to Identify Producer and Consumer requests coming from other sources. These advertisement messages will appear as a short surge of a large number of messages transmitted to the layout upon panel ML loads if there are many Turnouts and/or Sensors defined in the tables.
  • Turnouts (when configured for MONITORING feedback mode) and all Sensors inquire the layout state upon startup, loading the panel file, or creating a new table entry, instead of initializing to Unknown state. When a layout has multiple JMRI computers connected, a newly started JMRI will load the layout state from an already running JMRI computer so long as they have the respective Turnout and Sensor entries in both of their tables.
  • Fied bug that caused duplicate processing of packets when using the TCP/IP "Hub" feature in the OpenLCB menu. This allows multiple JMRI computers to share a single CAN adapter by secondary computers connecting to the Hub started by the JMRI with CAN connection.
  • Better error handling and reporting on Firmware Upgrade. The Supported Protocol list now displays Firmware Upgrade for compatible nodes.
  • Identification information such as Node name, version and protocol support information is automatically reloaded when a node restarts, for eample due to a Firmware upgrade performed.
  • JMRI now replies to Simple Node Identification Information requests coming from other sources on the bus. This allows multiple JMRI computers connected to a single layout to correctly see each other in their network view dialog.
  • Miscellaneous standards compliancy improvements, such as fies to JMRI replying to Verify Node ID requests, and not sending messages with alias=000 to the bus.
  • User interface improvements in the Configuration dialog. The dialog will now use an advanced and much faster algorithm to load the initial values of the configuration from the hardware. Users should not need to use the "Read All" button anymore. Changed values are now highlighted in similar way as DecoderPro does. The configuration dialog opens immediately and shows the progress as the ML data is downloaded via the network. It is also possible to re-try loading if the first load fails. A cache allows opening the same dialog instantly for the second time.
  • Fied a software problem that lead to multiple issues when CPU load is high, such as failed firmware downloads or inability to open the configuration dialog. On some systems it was enough to have the OpenLCB Monitor window open to trigger the problem.
  • Fi leaking threads from the OlcbConfigurationManager.
  • Updates openlcb.jar to 0.7.11. Contains a softer inquiry and better.
  • Allows multiple OpenLCB firmware upgrade downloads from a single HE
  • Roco z21/Z21:
  • Added Support for Z21 RailCom messaeges through the reporter interface.
  • Added Support to the Z21 Simulator to generate railcom messages based on the last 19 throttle messages sent to the simulator. This mimics the behavior of the command station, which sends at most 19 addresses back at a time.
  • SRCP:
  • The SRCP layout connection can now handle more than one simultaneous connections.
  • SPROG:
  • Enable function keys on Sprog in programmer mode (#2027).
  • TAMS:
  • Jan Boen did a lot of work on the TAMS MasterControl support
  • TMCC:
  • Fied the problem with TMCC throttles not working. As part of this, 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.
  • New / Updated decoder definitions:
  • Digirails:
  • Egbert Broerse added support for the DR4018/24 decoders.
  • Digitra:
  • Alain Le Marchand added support for the DH126T decoder.
  • ESU:
  • Some earlier versions of JMRI emitted lots of warnings while loading a roster entry containing certain ESU decoders. This is now fied.
  • Added ESU Digital LED lighting strip with integrated Digital decoder (#1742)
  • Added various new models (Dave Heap):
  • LokSound V4.0 M4
  • LokSound V4.0 M4 OEM
  • LokPilot V4.0 M4
  • LokPilot V4.0 M4 MKL
  • LokPilot Micro SlideIn V4.0 DCC
  • LokPilot F Nano V1.0
  • Scale Trains Tender Light
  • LaisDCC:
  • Claudio Capaccio of LaisDCC provided definitions for their family of decoders.
  • RR-CirKits:
  • Improvements to TowerMan and MotorMan definitions
  • SoundTra:
  • Updates for the Tsunami 2 decoders, including new models TSU-2200 and TSU-PNP
  • Michael Mosher fied sound selection for TSU-2200 and TSU-PNP models (missing Bell and Prime Mover selections) and fied Lighting effect direction selection: CV57 & 58 bit 6 and 7 set to 1 permanently though not being in use.
  • "Read type from decoder" should now correctly identify individual Tsunami 2 and Econami models (Michael Mosher/Dave Heap).
  • TCS:
  • Michael Mosher added definitions for the TCS WOW Steam V4 plus updates fro other steam versions and diesel ver3
  • Michael Mosher updated some TCS Steam decoder definitions
  • ZIMO:
  • Mark Waters updated the Zimo M644 and M600 definitions
  • Dispatcher:
  • Jay Jantzen provided some improvements to Dispatcher (#1652)
  • New Restart feature for AutoActiveTrains. (#1707)
  • New Simulator Script for AutoActiveTrains. (#1726)
  • New Actions to Hold and Release specified signal. (#1735)
  • New flag to reload train(s) at Dispatcher startup. (#1768)
  • Layout Editor:
  • Updated the Section code to set blocks' values instead of just memories, needed when the new BlockContentIcons are used instead of memoryIcons. (#1663)
  • Fied a problem with adding Train/loco icons to the panel
  • Localization:
  • Keywords for localization of Operations have been grouped to prevent duplicate work. Translators please check your earlier work from a fresh repo.
  • German translation of Operations has been epanded.
  • Operations:
  • New feature, you can now see and modify the track "Moves" that are used to determine the order tracks are processed by the program during a train build. In the "Edit Location" window under tools, select "Show Track Moves". To change the move count for a track, double click on the "Moves" value in the table and enter a positive or negative number. Tracks with the least number of "Moves" are processed first.
  • Steve Todd fied a bug with the JMRI Web Server Conductor where you couldn't properly terminate a train that didn't have work at the last location in the train's route.
  • Improvements were made to the Conductor and Yardmaster windows.
  • Improved the RWE feature when the car's load is removed and the car is already at the RWE address, the program will not set the RWE address as the final destination.
  • Fied a bug where the RFID tag selected wouldn't save from the car and loco edit windows.
  • New feature for RFID users, the Cars and Locomotives windows now show the last "Reported Location" and "Reported Date" when passing a reader.
  • All tables in operations now save immediately when their size or order is changed.
  • The car blocking for passenger cars no longer disappears after pressing "Save" in the "Edit Car" window.
  • Made some improvements to the train tool "Show Car Types Serviced".
  • The train description will no longer write across the top of a Manifest header.
  • Fied a bug where a car's load would change when waited at interchange or yard
  • Panel Editors:
  • Panel Editor, Control Panel Editor, Layout Editor interfaces and the Add Entry-Eit (N) Pairs panel now have full i18n and a German translation.
  • Translators please review the new jmrit.display bundle keys. (#1889)
  • Fi errors preventing editing of sensor state labels (#2028).
  • Dragging to and from sorted tables or Copy and Paste in sorted tables now operates correctly.
  • Control Panel Editor Palette:
  • No longer throws cast eception when a dragged item is dropped outside of a panel.
  • No longer will hang when displaying a warning during a Drag and Drop.
  • Inactive buttons removed from SignalMast panel. Panel displays icons when the mast row is selected.
  • Tet and item Attribute panels now show changes to margin, border, fied width and fied height in the preview panel
  • Control Panel Editor Shapes:
  • Fi bug of not loading or saving control sensor.
  • Editing results are shown immediately when parameters are changed
  • Editing Cancel button restores shape to previous settings.
  • Scripting:
  • Added Jython functions and eamples for pulling JMRI configurations into a script. (#1502)
  • The DebounceSensor.py script was updated. Note that Sensor debouncing can also be directly turned on in the Sensor Table now, too.
  • Several sample scripts received necessary updates to work with the current version of the JMRI code: AllocateRosterEntryToBlock.py, AutoDispatcher2.py, LocoSelectorDropBo.py, RobotThrottle2.py, RobotThrottle3.py, RosterCreateEample.py, RosterCsvEport.py, RosterLoop.py, RosterMigrate.py, RosterMigrate2.py, SampleWriteRosterAttribute.py, Zimo_function_programmer.py, Zimo_pseudo_programmer.py
  • Scripts now have access always available "addressedProgrammers" and "globalProgrammers" objects that provide replacements for the deprecated "programmers" object. Use of the "programmers" object will log a deprecation warning. (#1932)
  • Signals:
  • Fied an issue to set aspects in the Signal Mast Table using the combobo. Sorting rows or moving columns in the table is fully supported.
  • Signal Systems:
  • Updated B&O 2009 signal definitions to fi restricted aspect in some cases (#1574)
  • Fied a problem occurring when a signal system references icons in the local preferences directory.
  • Greg McCartney provided a new set based on the B&O 1980 rules.
  • Signal Mast Drivers:
  • Egbert Broerse added a new Signal Masts driver, the Output Matri Mast. (#1345)
  • Tools
  • Tables
  • Routes (Logi Routes)
  • Egbert Broerse epanded the i18n (internationalization) of the LRoutes > Add LRoute pane and fied running Logi Conditionals under a non-English locale. Opening these after switching locale may cause errors. Manually correct and save them to fi this for now. (#1682)
  • Warrants:
  • Re-implemented the ramping code. Better handling signal and block occupancy speed restrictions when they interact with user interventions.
  • The "Halt" GUI command now ramps down and brings the train down to a stop smoothly.
  • A "Stop" GUI command has been added. This is an EStop, similar to the old Halt command that was an immediate change to speed 0.
  • The "Resume" GUI command now does a ramp up rather than immediate restoration of former speed.
  • Ramps will use as many blocks as they need to change speed. Previous ramp down code did not look ahead properly.
  • Reminder: Having reasonable values for block path lengths and speed factors is vital for calculating ramp start times.
  • Additional messages of running status are displayed
  • Double entry in the session log bug is fied.
  • Rouge entry into a warrant route now changes the icon color.
  • Warrants can be started, ended and pass through Dark blocks.
  • A bug when Calibrating a throttle speed factor in NWarrants has been fied.
  • SCWarrants are converted to regular Warrants with a "No Ramping" flag set. Such warrants change speed as before upon entering the approach block. Now they use the speeds specified by the signals rather than one hard coded value. The new "No Ramping" flag may be turned off and on in the Warrant Editing window.
  • Web Access:
  • Added Json server support for blocks and layoutblocks. (#1623, #1628)
  • Client-side layouteditor panels now show actual track color, not just occupied. (#1641)
  • Occupancy-based coloring for drawn track has been turned off (#1642)
  • Improvements to the handling of SignalHeads and SignalMasts (#1825, #1830).
  • The method by which system-specific actions are populated has been changed. They should now be dynamically created depending on which system connections are configured.
  • Miscellaneous:
  • The POSI (Mac and Linu) launcher script has been improved. It provides much more fleibility for adding etra .jar files and setting options. The algorithm for how much memory the program uses has also been improved.
  • Egbert Broerse updated the French translation.
  • Added startup action to allow a pause for up to five minutes in processing startup items. (#1499)
  • Tooltips in startup items show more information than can be shown in the table of startup items. (#1505)
  • Startup items that need a system connection can now be bound to a specific system connection. (#1520)
  • Sonnys Hansen updated the Danish translation.
  • Many structural updates to the code as part of the new-series cleanup process. If you have your own program based on JMRI, please check for newly-deprecated references.
  • Some semi-automatic and manual cleanup of the HTML in the help files. If you notice any broken formatting, please report it. Thanks.
  • Fied two spurious SRCP messages at startup.
  • The jmDNS library used to find and connect to resources on the Internet (e.g. to allow WiThrottle and Engine Driver to find JMRI) was updated to jmDNS version 3.5.0.
  • Sonnys Hansen improved the Danish translation
  • Fied problems with the formatting of many help pages
  • Fied an issue preventing JMRI from detecting a JRE on OS (#1679).
  • Fied an issue preventing the JMRI launcher on Linu or OS from correctly passing Java System Properties to JMRI (#1692).
  • It is now possible to use portable paths in jmri.jmrit.Sound when using that class from a script (#1738).
  • Tables now save their settings much more efficiently as they're closed, which should make closing a table window much quicker on some computers
  • Fies to several crashes associated with starting up with older preferences, changing preferences (particularly connections) and when configured hardware isn't present at startup.
  • Fi issues on OS preventing use of JMRI unless a JDK is installed (#1801).
  • Fi issues preventing JMRI from running on macOS with JDK 9 (#1453).
  • Fi issues attempting to play sounds from non-eistant files (#1808).
  • The InstanceManager now sends a notification on every change of a default object for a class, instead of just the ProgrammerManager. (#1934)
  • A Service Provider Interface (SPI) is now available for thrid party developers to directly add items to the list of Startup Actions and Startup Buttons. (#1936)
  • Fied an issue where JMRI applications would silently fail to start if a Java Runtime Environment was not installed on macOS instead of notifying the user. (#1943)
  • To ease translations, many commonly used property keys have been grouped so they need to be translated only once to be available throughout JMRI. Translators, please update your repository and review the application for missed items. (#1828)
  • Logging Preferences in a file named "default.lcf" in the settings directory take precedence over logging preferences that ship with JMRI. The "default.lcf" can be copied from the JMRI installation as a starting point. (#2448)
  • Petr Šídlo provided a large update to the Czech translations of JMRI
  • Added a new SignalFollower.py sample script
  • Fied the AmpMeter crash on Linu systems.
  • The MS Windows launcher has had a number of updates including:
  • a new method to calculate the maimum memory
  • use the Windows look and feel as an initial default
  • allow the classpath to be modified by either appending `--cp:a=CLASSPATH` or prepending `--cp:p=CLASSPATH`
  • allow for default options to be specified in a `jmri.conf` file stored in `%userprofile%JMRI`

New in JMRI 4.0.1-r29956 (Sep 17, 2015)

  • Crash if port missing:
  • JMRI would crash on startup if a previously configured port was no longer present. This is now fixed. This change is the only difference between JMRI 4.0 and 4.0.1

New in JMRI 4.1.1 r29773 Test (Aug 19, 2015)

  • Hardware Support:
  • Improved error handling during start-up when something Really Unexpected happens, such as configuring to connect to a port that doesn't even exist.
  • C/MRI:
  • You can now connect to your C/MRI nodes via a network connection.
  • LocoNet:
  • JMRI can now directly program LocoNet devices that use the "System Variable" (SV) protocol version 2. Select "System Variable Type 2" as a Single CV Programmer mode to use this.
  • NCE:
  • Configure USB Tool - Removed attempted reading of the current USB cab id. It was not working for all cases and prevented resetting the cab id when the USB had an invalid (for the system currently connected) cab id.
  • OpenLCB:
  • The OpenLCB library advanced to version 0.6.4, which (among other things) fixed a problem when trying to read broken configuration definition info from a node.
  • Note that this is probably the last version of this library, as prototype work is no longer a part of the OpenLCB group effort. It's not yet clear whether a new group will emerge to maintain this code. If you're interested in helping, please contact the JMRI or OpenLCB developers.
  • The basic work to allow programming of OpenLCB Nodes via the DecoderPro infrastructure is in place. Later updates will connect this to DecoderPro itself.
  • A basic bootloader is available for attached OpenLCB nodes. This lets you install new firmware in a compatible node from a local .hex file (provided by the node manufacturer). Nobody has announced nodes that use this feature, but hopefully since we built it they will come.
  • Note: For safe and reliable operation, this relies on items that were removed from the OpenLCB specification in February 2015.
  • Signals:
  • Signal Mast Editor:
  • Ken Cameron fixed editing of signal head masts to also support old format panel files.
  • New / Updated decoder definitions:
  • ESU:
  • Made the following changes
  • Added the "Random Single Strobe" effect to Function Outputs.
  • Added the LokSound Select OEM.
  • Added some new ProductIDs for correct decoder identification.
  • Fixed the sense of the Adaptive Regulation Frequency bit.
  • MERG:
  • The MERG ACC5 definition has been converted to the modern format of internal variables from the older "ivariable" form.
  • MTH:
  • Provided patch 1069
  • QSI:
  • A problem with the "Max Bell" and "Bell Select" variables in several QSI definitions was fixed.
  • RR-CirKits:
  • The LNCP Basic definition has been converted to the modern format of internal variables from the older "ivariable" form.
  • SoundTraxx:
  • Added the Econami range.
  • Clarified the interaction between the Extended and Legacy Function Map panes in the Econami range.
  • TCS:
  • The "Global lighting option 1" on many TCS decoders has been fixed.
  • Provided patch 1070 to update WOW diesel sound set 2
  • Operations:
  • Improved train build report to first show which tracks in staging can service the train being built.
  • Made some improvements to the spur window to show the current schedule status.
  • You can now copy a schedule, see under tools in the edit schedule window, or schedules window.
  • The "Show Schedules by Car Type and Load" window now has the option to show all loads.
  • You can now open all edit location windows at the same time. Previously you could only open two edit location windows at once.
  • CSV switch lists now include hold cars.
  • CSV manifests how include hold cars for tracks that are only served by the train being built.
  • New "Yardmaster by Track" window can be found under "Tools" in the "Yardmaster" window. This window shows the work for a location listed by tracks. It also shows the hold cars for each track.
  • Oblocks:
  • Add feature for Tracker to follow trains into and through dark OBlocks.
  • Preferences:
  • Some preferences are now stored in properties files in the preferences directory within the current profile. The file preferences.properties contains settings that a common to all computers using that profile, while the file (or files) named in the pattern jmri--.properties contain per-computer settings.
  • Web Server and JSON Server preferences are now stored in the above format. Although the pre-JMRI 4.1 settings files for these servers are not removed, changes to these services' settings made in JMRI 4.1 will not be available to earlier versions of JMRI. These services' settings will only be migrated to the new format by clicking Save in the Preferences window.
  • mDNS / Bonjour / ZeroConf network services advertisements can be blocked on IPv4 or IPv6 addresses by editing the the per-computer preferences file to include either or both of the following lines
  • jmri-util-zeroconf.IPv4=false
  • jmri-util-zeroconf.IPv6=false
  • Valid values for these settings are true or false. Note that this is an experimental feature.
  • Logix:
  • Enhancement Request #574 implemented. Can use fractions of seconds for timing.
  • Add feature to set sensor/turnout delay times indirectly from memory.
  • Roster Speed Profile:
  • Improvements made to the UI.
  • The starting and ending speed steps can be set for measuring a profile. Also the increment for each profile step may be set
  • The speed profile will interpolate or extrapolate for omitted speed steps
  • The speed profile can be viewed in a table
  • There is an option to merge or replace the speed profile
  • Panel Editors:
  • Fix backgrounds of text to stay transparent when rotated.
  • Fix false resizing of IndicatorTrackIcons
  • Fix spurious window names appearing under "Windows" menu
  • Miscellaneous:
  • Improved the script editor (Panels -> Script Entry):
  • Now remembers the selected directory from operation to operation, so you don't have to renavigate each time.
  • Use the same file selector for Load and Store, so it's easy to work in one directory.
  • Use a proper Store dialog so you can e.g. change the filename.
  • Include a python.properties for configuring the Jython environment.
  • Improve instructions for making a local copy of the JMRI web site and providing a local XML catalog.
  • Greatly improved the Danish translation.
  • The Multiple Decoder Programming tool is back to being available in the DecoderPro tools menu. Also, you can add it as a button or startup item in PanelPro and DecoderPro.
  • The Danish translations has been made more general. It was coded as _da_DK, which is "Danish (Denmark)". That's been changed to _da, which is generic "Danish", no matter where spoken. If you have local translation files for Danish, this might conflict. Contact the JMRI list for help with this. Contributed translations are always welcome!
  • The "Check XML File" option under the PanelPro Debug menu didn't need to be a separate item, as it was already included in "Validate XML File". It's been removed, please select the "Validate XML File" from now on.
  • You can now add "Validate XML File" as a custom button via the Start Up pane in the Preferences.

New in JMRI 4.0-r29647 (Aug 19, 2015)

  • Hardware Support:
  • Default programmer choice:
  • There are now separate settings for the default Service Mode Programmer and for the default Ops Mode Programmer. If you're using two or more system connections, this lets you use one connection for ops mode (on track) programming and another connection for your programming track. If you're using two separate connections, you should go to the Defaults pane on the Preferences window and check that those defaults were set properly. Some tools, like the Single CV Programmer and the DecoderPro main windows, will also allow you to select which system to use instead of relying on just the default setting.
  • "Direct" programming mode:
  • Dave Heap added a new "Direct" programming mode choice for DCC systems (such as NCE) that use both the Direct Bit and Direct Byte operations when programming. Direct Bit and Direct Byte (when available) mean that the command station is told to use only one or the other, which might be useful with very old decoders.
  • Bachrus Speedometer:
  • Made the following changes:
  • Added a new feature that allows loading a reference speed profile to make it easier to do speed matching.
  • Fixed a bug that prevented loading the loco address from the roster.
  • Made the Reset Graph button also reset the speedometer dial scale.
  • Fixed the scaling routine so that it uses the maximum of all profiles, not just the first.
  • Updated the help files for the speedometer
  • Digitrax LocoNet:
  • Fixed ;a stall occasionally encountered when running a locomotive to measure a speed table via a LocoNet connection.
  • ESU – ECOS:
  • Fixed an issue where the Loco Database from the Ecos wasn't always loaded correctly
  • Uhlenbrock Intellibox:
  • The Uhlenbrock Intellibox support has been improved
  • Enhancements to Loconet Monitor to parse the special IB-COM / Intellibox II CV programming messages.
  • Implementation of CV programming through IB-COM / Intellibox II.
  • Turnout control added for some Intellibox command stations
  • Full handling of decoder functions beyond F8 from/to throttles for Intellibox-II.
  • Partial handling of decoder functions beyond F8 from throttles for Intellibox-I with SW version 2.x (changes from IB-I keyboard not handled by throttle).
  • Improvements in message transfer from and to the LocoNet connection
  • As part of all this, the Fleishmann connection type has been merged into the Uhlenbrock type. If you are making a direct connection to your Intellibox unit via serial or USB, you will have to reselect your preferences. See the Uhlenbrock support page for instructions.
  • MERG Cbus:
  • Provided a Reporter for CBus that allows for the connection of an RFID reader attached via a suitable CBus node.
  • Added basic support for non-variable lights
  • Reduced logging level to debug for regular message reply loop to avoid unnecessarily polluting the console log
  • MRC:
  • Added support for inverting turnouts on MRC systems.
  • NCE:
  • Fixed significant issues in the NCE Macro editor when used with the serial connected PowerPro system (CS02). It seems to have been an issue since June 2014, release 3.7.8 when the NCE USB support was added.
  • SPROG:
  • Changed the SPROG and SPROG Command Station code so you can now use the full NMRA DCC address ranges of 0 to 10,239 long ("Extended") or 1 to 127 short ("Basic") addresses. The throttle now gives you a selector for Long or Short address.
  • Improved the Slot Monitor display.
  • Fixed a problem where DecoderPro's read buttons would be disabled if using SPROG while JMRI is configured with multiple hardware interfaces.
  • Zimo MXULF:
  • Now supports version 0.61.13 for programming (KD)
  • Signals:
  • The aspects.xml file in each signal definition defines the speeds used for automated operation. These values are now required (by the schema check) for a valid XML file. Basic values have been added for all signal systems included in JMRI.
  • Improved the signal-system and signal mast setup help files.
  • Improved the SPTCO-1930 definitions.
  • Improved the signal documentation.
  • Provided additional signal icons UP-2008 (Patch 1061)
  • Improved the signaling system documentation
  • For single output signal head, whenever the underlying turnout changes (due to change in the turnout table, turnout feedback, or JMRI listening on the command bus and picking up a turnout change event), the signal head will adjust the displayed output. Also fixed a bug at JMRI startup: The single output signal head implementation was generating a turnout change command every time JMRI started up (at panel.xml load time).
  • Updated the DB-HV-1969 signals definition to improve speed control and icons
  • The signal speed definition has been updated for consistent operation. Also, a release test has been added to keep it that way.
  • Fixed a NullPointerException error sometimes seen when using signal definitions from a user's own files.
  • Provided an update to NYCS-1956 to correctly handle held signals. (Patch 1068)
  • SPTCO-1969:
  • New SPTCO-1969 signal system containing Semaphore, Searchlight and hybrid (semaphore with lower searchlight head) masts.
  • Does not reference the rulebook as web link because I cannot find it hosted anywhere. There is a PDF of the rulebook in the Yahoo user group files area if a place can be found to host it. Mast files contain page references for the aspect appearances in the 1969 rulebook.
  • New / Updated decoder definitions:
  • Made the following changes
  • Improved the reliability of "Read type from decoder" by retrying several times in the event of a (possibly transient) read failure.
  • A single decoder model can now match multiple Product IDs, specified as a comma-separated list in the "productID" attribute.
  • Updated the Function Mapping page to emphasise that "label" and "tooltip" attributes should not be added to a "fnmapping" element (they are ignored).
  • BLI:
  • Improved the BLI P2 definition
  • Digitrax:
  • Economy Series 6: version (CV7) starts with 51 instead of 52
  • SFX Sound Decoders Extended Series 6 updated for 16bits Sound Projects v3.0
  • Doehler & Haass:
  • Global update
  • Added 1 new Decoder / 4 Fw versions (DH22A)
  • Added 3 new Fw version(s) (DH05C,DH06A,DH10C,DH12A,DH16A,DH18A,DH21A)
  • Added 1 new Fw version(s) (FH05A,SD18A,SD21A,SH10A,generic profile)
  • Added SUSI pane, moved relevant options there (All decoders)
  • Added Start/Brake/Shunt pane, moved relevant options there (All decoders)
  • Change Adv. mapping now in standard mapping table (All Decoders)
  • Change Railcom pane (grid + qualifyer) (All Decoders)
  • Change Adapted Trix 66840 def to match above changes to the core D&H XMLs.
  • Fixed Consistent Reset function / translation (All Decoders)
  • Fixed Removed non applicable Motorola options (FH05A,DH05A,DH05B,DH10A,DH10B,DHP160,DHP250,DHP260)
  • Info New ProductID format for future versions (e.g.: DH05A_2014.10)
  • Info No new models created for new Fw on long deprecated models (DH05A/B,DH10A/B,DHP160/250/260). Use generic profile if needed.
  • ESU:
  • Added an ESU LokPilot Standard V1.0 definition.
  • Made the following changes
  • Completely reworked the ESU Function Map pane to make it easier to read and use. It is now more like the LokProgrammer Function Map pane.
  • Most modern ESU decoders will now be identified with "Read type from decoder".
  • Renamed and consolidated models to conform to ESU practice. Old model names are still recognized but not shown. They can be updated via "Update Decoder Definitions".
  • Fixed a problem with strange sound slot names displayed in LokSound Select.
  • Added a Row Move facility to the Function Map pane.
  • Updated the "Read Me" pane.
  • Replaced confusing LokSound V4.0 models that are functionally identical with generic models.
  • Corrections to displayed state of a Function Map summary line.
  • Fixed assorted V4 and LokPilot Standard issues, including rename CV48 for V4 and move to Sound pane.
  • Added generic LokSound Select steam and diesel models for use with as-yet undefined models.
  • Fixed an issue with "Requires Drive Sound" for V4 and Select decoders.
  • Preliminary support for ESU LokSound L V4.0.
  • Updated the ESU LokSound 4.0, Select and Select Direct definitions to modify the reset warnings
  • Other improvements and corrections to the ESU decoder definitions.
  • Fleischmann:
  • Contributed a decoder definition for the N scale Fleischmann "Leig einheit" F830681 double unit of van equipped with a Fleischmann-specific dual decoder for opening or closing doors
  • MRC:
  • Added new definitions for: 1617 (HO Light Steam), 1618 (HO Heavy Steam), 1660 (N Life-Like C-Liner), 1817 and 1818 (G Diesels), 1822 (S Diesel), 1828 (N Atlas SD50/60), 1907 (HO Atlas S2/S4), 1911 (HO Steam), 1913 (HO Diesel), 1917 (HO Atlas S2/S4), 1956 (N Steam), 1958 (N Kato PA1), 1959 (N Diesel), 1960 (N Kato SD45/SD70MAC/AC4400)
  • Made a complete overhaul of the MRC Sound decoders:
  • Renamed all models in a consistent way. Rearranged families by scale. Old model names are still recognized but not shown. They can be updated via "Update Decoder Definitions".
  • Dispatched all CVs previously displayed on "MRC" pane to the relevant standard panes.
  • Fixed several definitions and aligned to the documentation available on MRC web site.
  • RR-CirKits:
  • Provided an update to the SignalMan decoder file
  • SoundTraxx:
  • SoundTraxx now appears in the manufacturer list as "SoundTraxx (Throttle-Up)" instead of the original "Throttle-Up (SoundTraxx)". It's a long story....
  • Fixed a problem (originating in the Great SoundTraxx renaming that took place in JMRI 3.11.1) that prevented some Soundtraxx decoders from being recognized
  • Bachmann Sound Value definitions added or updated following publication of data sheets on SoundTraxx website
  • On30 Whitcomb 50-ton Center-Cab (DCC Sound On-Board, Plug-and-Play Sound Module)
  • 2-8-4 Berkshire (HO and N scale) - 3 variants each
  • EMD GP-7 (HO scale): horns and default values
  • CV113 only supported by SD70ACe, GEVO ES44AC and GG1.
  • TAMS:
  • FD-R Basic 2 new definition
  • TCS:
  • Updated the TCS WOW definition.
  • Old decoders where no replacement exists in the present range are now shown permanently.
  • Old versions of present decoders will only show is there is a hit on version range through automatic identification.
  • Trix:
  • Added Trix 66840
  • Added definitions for Trix Sound HO BR V160 and BR 41
  • Zimo:
  • A lot of work on the Zimo decoders.
  • Miscellaneous:
  • Add DCCconcepts Zen series of decoders
  • Added definitions for the Hattons MD4 and Gaugemaster Opti DCC25 decoders.
  • Digikeijs (Digirails) - Added definition for Function decoder DR80015
  • Hornby - Added definitions for Hornby TTS Class 37 and Class 40
  • Operations:
  • New Features:
  • Improvements to the "Timetable" window to allow the building, printing, and termination of selected trains. Also allows for the updating or printing of switch lists. This should help simplify things when building and terminating multiple sets of trains for a session.
  • You can now print out all location and track comments using the print tool under "Locations".
  • New switch list option to print out a new sheet of paper each time a train visits a location.
  • New feature for schedules. You can now select a random value for any schedule item. For example if you select 15 as the random value, you have a 15% chance that this item will be selected. Great feature for RIP tracks where you would like to randomly send a car to maintenance.
  • Improved the "Two Column by Track" manifest and switch list format to automatically not show the car's track name. Allows the conductor and yardmaster windows to now show the track name when using the "Two Column by Track" format.
  • New feature when departing staging, you can now control the maximum number of cars that can depart out of staging. By adjusting the number of cars requested in the train's route departure staging location, you can have the program select a staging track that has a number of cars equal to or less than requested. Note that if you set the requested number of cars out of staging to zero, the program will look for a staging track that doesn't have any cars. This new feature could cause existing trains builds to fail. To fix this type of build failure, just enter in the train's route departure staging location a number of requested cars greater than the numbers of cars that can fit on the departure staging track. For example, if your staging track can fit 12 cars maximum, a request of 12 cars or more should fix the build failure if there was one.
  • New feature, you can now have the program assign a locomotive to a train based on the train's tonnage, route grades, and engine horsepower. See the operation's help "Optional Train Requirement" for more details.
  • Changed the date and time format when logging rolling stock and trains to be more MS Excel compatible. Makes it easier to combine several Excel sheets and then sort by date and time.
  • Export of cars and locomotives now includes the "Moves" count associated with them.
  • Improved how the "Edit Car" window blocking feature deals with cars that are defined as "Passenger" and also in a kernel. Now the program won't ask if all passenger cars should have the same blocking number if the car is also in a kernel
  • Made improvements to the car router to allow routing through staging. This allows users to model industries that aren't on the layout. Feature is still disabled by default.
  • You can now control which destinations out of staging are allowed for custom loads. See under "Edit Staging Track" tools "Track Destinations". "
  • Improved build report to show trains in the route when using detailed or very detailed.
  • New feature, car summary by track for Switch Lists. The summary shows by track all of the car pulls and set outs. It also shows the hold cars for each track. Now your operators will know by track all of the pulls needed for all trains and which cars need to stay put. Should be useful for the larger switch jobs. The summary is only available if you're running the switch list in real time.
  • The train's description now has the option to include the lead engine's road name.
  • New feature, you can now block the tracks at a location for your manifests and switch lists.
  • New feature for road names, the "hyphen feature" now works for road names. Anything after the hyphen isn't printed on manifests and switch lists.
  • You can now show on your manifests and switch lists the number of cars in a kernel. The number only only shows up for the lead car.
  • Paul Bender updated support for IdTag readers in Operations. Rolling Stock location and last moved date will now be automatically updated when an IdTag associated with the piece of rolling stock is seen by a reader associated with a location.
  • Bug Fixes and Improvements:
  • When a car is placed at a spur, without a schedule, but with a custom load of type "Empty", the program now changes the car's load name to the default load name "L" rather than "E".
  • The file path name for manifest and switch list logos are now stored as a relative path name.
  • Fixed a problem where manifests and switch lists wouldn't preview or print if there wasn't a logo specified. Problem was introduced in versions 3.11.1 and 3.11.2 and fixed in 3.11.3
  • Improved how the program deals with cars on a FIFO or LIFO track. Previously, cars on a FIFO or LIFO track were stuck behind cars that couldn't move. Program will now bypass a stuck car and process the next cars in the order defined by FIFO or LIFO. A car could be "temporary" stuck if the car's destination was full and couldn't accept the car.
  • Fixed a problem where a caboose or car with FRED would lose its departure track in in staging after resetting a train that also departed and returned to the same staging track.
  • Fixed a problem where a car's final destination and custom load didn't reset properly when a car was departing staging and was assigned to staging that was full.
  • Logix:
  • Actions Delayed Turnout and Delayed Sensor now toggle states correctly.
  • Blocks:
  • Fixed a problem where the Block table would throw errors at various times when JMRI was in a locale where decimal numbers are written 0,00 (as opposed to 0.00).
  • Preferences:
  • The parameters for ramping speed changes used by Warrants and the Speed Map are now accessible through Preferences.
  • Clicking the Save button now prompts to restart only if the preferences have changed and if the change requires a restart.
  • Closing the Preferences window now prompts to save or discard preferences if the preferences have been changed.
  • A Warrants panel is added to Preferences. Warrants can now interpret the Aspect Speed Map four ways: % of Normal, % of Full Throttle, Miles per Hour or Kilometers per hour. A global Throttle Factor to aid trains in running at scale track speed is added. Also added is a combo box to set the layout scale. See the warrant's help documentation for details.
  • Allow startup files to be edited in the DecoderPro 3 preferences dialog.
  • Web Server:
  • Fix an issue preventing the Web Throttle from handling certain turnouts.
  • Fix an issue preventing the Web Throttle from loading rosters.
  • Fix an issue preventing the Web Throttle from setting routes.
  • Remove documentation and examples that use the XmlIO protocol.
  • The Web Server has been upgraded from Jetty 8.1.11 to 9.2.7. This is expected to improve performance, especially on constrained devices such as the Raspberry Pi.
  • Warrants:
  • Made the following changes to warrants
  • "Warrant Logix not working as of 3.7.2". Warrants can be executed from Logix.
  • Warrant command "Run Warrant" that allows one warrant to launch another is now fully implemented.
  • The algorithm to change speeds due to track conditions is improved to more accurately predict speed change start and end points. Warrants now use the Roster Speed Profile for engine speed characteristics.
  • Warrants now respond to block speed changes set in the OBlock table. Default is "blank", i.e. continue at current speed.
  • Aspect speed changes for warrants may be indicated by actual prototype speeds - e.g. mph or kmph.
  • The NXWarrants have a new feature to calibrate throttle factors. NXWarrants can be used to add data to the Roster Speed Profile. See "Compute Factor" checkbox.
  • The "Offset(sec)" column in the Signal Table at Add Items->Occupancy Blocks has been changed to a distance. The "Offset" column will adjust speed change points (+/-) to conform to signal placement on the layout.
  • Fixed a bug where new signal specifications could not be added for OBlocks.
  • Warrant help documentation is updated.
  • Lengths of paths within a block can now be set individually. Configured with Circuit Builder
  • Fixed several bugs recently introduced in recording learn mode warrants.
  • Feature added to display warrant routes graphically for review when multiple routes are possible.
  • Miscellaneous:
  • Fixed a problem where, if the decoder definition causes DecoderPro or DecoderPro3 to select a non-default programming mode, that wasn't properly being displayed.
  • Fixed a problem that would cause an exception when starting without an existing configuration.
  • LinkingLabels will now restore a minimized frame on Windows (already worked this way in Linux) (mstevetodd)
  • Add ability to specify the default location for new configuration profiles.
  • The name of the active profile is displayed on the PanelPro main window and in the status bar on all Roster windows (including the DecoderPro 3 main window).
  • Fixed an issue where editing the DecoderPro 3 Preferences could cause the configuration to be corrupted or destroyed.
  • Made an enhancement to the train tracking as implemented in Block.java: When the existing code has not been able to track the train, i.e. the train ID in terms of block value will be lost. The enhancement stores the candidate Blocks that a train may have arrived from when a block becomes occupied and then when a block becomes unoccupied, it informs its neighbors who can then choose to use their candidate list to determine where their train came from.
  • Fixed a bug in the Layout Editor, whereby a Cross-Over that has been snapped to grid then rotated by 90° fails to display correctly when the panel is reloaded.
  • Fixed an issue where WebThrottle could occasionally send unwanted emergency stops with LocoNet and CBUS systems. (Bug 516)
  • Debugging improvements in the Programmer support.
  • Minor performance improvements in programmer selection widgets.
  • ARM version detection has been improved on Linux so that ARMv5, ARMv6 and ARMv7 are correctly identified. This means that for RaspberryPi, no library file copy modifications are required.
  • Added ability to set timeout for automatically starting with a profile.
  • Audio support has been updated to now use the Jogamp version of the JOAL libraries. This now means that 64-bit operating systems are supported as well as some ARM-based systems. Additionally, OpenAL-Soft is now bundled with JMRI and no longer requires separate installation.
  • Added the "jython/MakeOriginalDecoderPro.py" sample script. If you are used to the original (old) DecoderPro startup screen with the individual buttons, launch PanelPro instead and have it execute this script from the preferences. It'll add the three original buttons. It won't change the logo or labels, but you'll get your buttons back.
  • Improved WebSockets performance, especially with large layouts or complex panels.
  • Fixed the Windows installer so it installs DecoderPro as "DecoderPro" instead of as "DecoderPro3".
  • Added the native OpenAL and JOAL libraries for ARM Linux platforms.
  • Wrote the DisableLayoutSensorIcon sample script code to enable/disable Sensor icons on a Layout Editor panel.
  • JavaDoc errors in the AbstractOperationsServer were fixed
  • Update to use the correct JOAL libraries for ARMv6
  • Fixed a minor issue with the JoalAudioFactory
  • Use RosterSpeedProfile for speed calibration in Warrants. Removed throttle factor from UI.
  • Fixed can't add new signals bug in OBlocks.
  • Fixed a problem with invalid schema locations in the BR-2003 signal aspects definition and one of the decoder definition tests.
  • Fixed the Portal/Signal tables to now conform with Speed Profiling.

New in JMRI 3.11.10-r29607 Test (Aug 19, 2015)

  • Signals:
  • Randall Wood fixed a NullPointerException error sometimes seen when using signal definitions from a user's own files.
  • New / Updated decoder definitions:
  • RR-CirKits:
  • Updated the SignalMan decoder file
  • Warrants:
  • An improvement has been made in calculating distances and times when speed changes are done due to signal aspects or block speed specifications. Warrants now use the Roster Speed Profile for engine speed characteristics.
  • NXWarrants can be used to add data to the Roster Speed Profile. See "Compute Factor" checkbox.
  • Fixed problems with Warrants calculating the correct point to begin and end signaled Speed changes
  • Signal table for OBlocks Offset column now specifies a distance rather than a time to adjust speed change points to conform to signal placement on the layout.
  • Miscellaneous:
  • Fixed a problem with invalid schema locations in the BR-2003 signal aspects definition and one of the decoder definition tests.
  • Fixed the Portal/Signal tables to now conform with Speed Profiling.

New in JMRI 3.11.9-r29555 Test (Aug 19, 2015)

  • Hardware Support:
  • MERG CBUS:
  • Reduced logging level to debug for regular message reply loop to avoid unnecessarily polluting the console log
  • New / Updated decoder definitions:
  • ESU:
  • Updated the ESU LokSound 4.0, Select and Select Direct definitions to modify the reset warnings
  • Miscellaneous:
  • JavaDoc errors in the AbstractOperationsServer were fixed
  • Update to use the correct JOAL libraries for ARMv6
  • Fixed a minor issue with the JoalAudioFactory
  • Use RosterSpeedProfile for speed calibration in Warrants. Removed throttle factor from UI.
  • Fixed can't add new signals bug in OBlocks.

New in JMRI 3.11.8-r29491 Test (Aug 19, 2015)

  • Added the "jython/MakeOriginalDecoderPro.py" sample script. If you are used to the original (old) DecoderPro startup screen with the individual buttons, launch PanelPro instead and have it execute this script from the preferences. It'll add the three original buttons. It won't change the logo or labels, but you'll get your buttons back.
  • Signals:
  • SPTCO-1969:
  • New SPTCO-1969 signal system containing Semaphore, Searchlight and hybrid (semaphore with lower searchlight head) masts.
  • Does not reference the rulebook as web link because I cannot find it hosted anywhere. There is a PDF of the rulebook in the Yahoo user group files area if a place can be found to host it. Mast files contain page references for the aspect appearances in the 1969 rulebook.
  • New / Updated decoder definitions:
  • Digitrax:
  • SFX Sound Decoders: Extended Series 6 updated for 16bits Sound Projects v3.0
  • TAMS:
  • FD-R Basic 2 new definition
  • MRC:
  • Added new definition for: 1917 (HO Atlas S2/S4)
  • Operations:
  • You can now show on your manifests and switch lists the number of cars in a kernel. The number only only shows up for the lead car.
  • Miscellaneous:
  • Improved WebSockets performance, especially with large layouts or complex panels.
  • Fixed the Windows installer so it installs DecoderPro as "DecoderPro" instead of as "DecoderPro3".

New in JMRI 3.11.7 r29385 Test (Aug 19, 2015)

  • Hardware Support:
  • MERG CBUS:
  • Added basic support for non-variable lights
  • Zimo MXULF:
  • Now supports version 0.61.13 for programming (KD)
  • New / Updated decoder definitions:
  • Dave Heap made the following changes
  • Improved the reliability of "Read type from decoder" by retrying several times in the event of a (possibly transient) read failure.
  • A single decoder model can now match multiple Product IDs, specified as a comma-separated list in the "productID" attribute.
  • SoundTraxx:
  • Bachmann Sound Value definitions updated following publication of data sheets on SoundTraxx website
  • On30 Whitcomb 50-ton: horns and default values
  • 2-8-4 Berkshire (HO and N scale) - 3 variants each - full update
  • EMD GP-7 (HO scale): horns and default values
  • CV113 only supported by SD70ACe, GEVO ES44AC and GG1.
  • TCS:
  • Old decoders where no replacement exists in the present range are now shown permanently.
  • Old versions of present decoders will only show is there is a hit on version range through automatic identification.
  • ESU:
  • Dave Heap made the following changes:
  • Most modern ESU decoders will now be identified with "Read type from decoder".
  • Renamed and consolidated models to conform to ESU practice. Old model names are still recognized but not shown. They can be updated via "Update Decoder Definitions".
  • Preliminary support for ESU LokSound L V4.0.
  • Other improvements and corrections to the ESU decoder definitions.
  • Operations:
  • Fixed a major bug introduced in version 3.11.6 where during startup the program won't load all of the cars saved in the xml file.
  • New feature, car summary by track for Switch Lists. The summary shows by track all of the car pulls and set outs. It also shows the hold cars for each track. Now your operators will know by track all of the pulls needed for all trains and which cars need to stay put. Should be useful for the larger switch jobs. The summary is only available if you're running the switch list in real time.
  • The train's description now has the option to include the lead engine's road name.
  • New feature, you can now block the tracks at a location for your manifests and switch lists.
  • New feature for road names, the "hyphen feature" now works for road names. Anything after the hyphen isn't printed on manifests and switch lists.
  • Miscellaneous:
  • Added ability to set timeout for automatically starting with a profile.
  • Audio support has been updated to now use the Jogamp version of the JOAL libraries. This now means that 64-bit operating systems are supported as well as some ARM-based systems. Additionally, OpenAL-Soft is now bundled with JMRI and no longer requires separate installation.

New in JMRI 3.11.6 r29243 Test (May 12, 2015)

  • HARDWARE SUPPORT:
  • Ken Cameron added support for inverting turnouts on MRC systems.
  • Fixed a problem where DecoderPro's read buttons would be disabled if using SPROG while JMRI is configured with multiple hardware interfaces.
  • NEW/ UPDATED DECODER DEFINITIONS:
  • Improved the reliability of "Read type from decoder" by retrying several times in the event of a (possibly transient) read failure
  • A single decoder model can now match multiple Product IDs, specified as a comma-separated list in the "productID" attribute
  • ESU:
  • Most modern ESU decoders will now be identified with "Read type from decoder".
  • Renamed and consolidated models to conform to ESU practice. Old model names are still recognised but not shown. They can be updated via "Update Decoder Definitions".
  • Preliminary support for ESU LokSound L V4.0.
  • Other improvements and corrections to the ESU decoder definitions.
  • MRC:
  • Renamed all models in a consistent way. Rearranged families by scale. Old model names are still recognised but not shown. They can be updated via "Update Decoder Definitions"
  • Dispatched all CVs previously displayed on "MRC" pane to the relevant standard panes
  • Fixed several definitions and aligned to the documentation available on MRC web site
  • Added new definitions for: 1660 (N Life-Like C-Liner), 1817 and 1818 (G Diesels), 1822 (S Diesel), 1828 (N Atlas SD50/60), 1907 (HO Atlas S2/S4), 1911 (HO Steam), 1913 (HO Diesel), 1956 (N Steam), 1958 (N Kato PA1), 1959 (N Diesel), 1960 (N Kato SD45/SD70MAC/AC4400)
  • Miscellaneous:
  • Digikeijs (Digirails): Added definition for Function decoder DR80015 (Alain Le Marchand)
  • Hornby: Added defintions for Hornby TTS Class 37 and Class 40 (Nigel Cliffe)
  • Trix: Added defintions for Trix Sound HO BR V160 and BR 41 (Alain Le Marchand)
  • OPERATIONS:
  • New feature, car summary by track for Switch Lists. The summary shows by track all of the car pulls and set outs. It also shows the hold cars for each track. Now your operators will know by track all of the pulls needed for all trains and which cars need to stay put. Should be useful for the larger switch jobs. The summary is only available if you're running the switch list in real time.
  • The train's description now has the option to include the lead engine's road name.
  • Paul Bender updated support for IdTag readers in Operations. Rolling Stock location and last moved date will now be automatically updated when an IdTag associated with the piece of rolling stock is seen by a reader associated with a location.
  • PREFERENCES:
  • Allow startup files to be edited in the DecoderPro 3 preferences dialog.
  • WARRANTS:
  • Fix several bugs recently introduced in record learn mode warrants.
  • Add feature to display warrant routes graphically for review when multiple routes are possible.
  • MISCELLANEOUS:
  • Debugging improvements in the Programmer support.
  • Minor performance improvements in programmer selection widgets.

New in JMRI 3.10.1 r28327 (May 12, 2015)

  • Version 3.10.1 is the current "production" version, recommended for first-time users. It fixes a bug that affected CV programming for MRC system users, but is otherwise the same as JMRI 3.10.

New in JMRI 3.9.3 r27204 Test (Sep 15, 2014)

  • The Speedometer now handles international format input.
  • The AAR-1946 and B&O-1957 signal system definitions had some internal problems fixed.
  • Removed the activation.jar library, along with various references to loading it.
  • System Support:
  • Some improvements to the support for MRC command stations via the Prodigy USB computer interface.
  • New / Updated decoder definitions:
  • Much work on improving the structure of the files, which has resulted in some internal changes.
  • Improvements to the Italian translation.
  • Added Digitrax SFX006 & DN166I2B definitions
  • Added Soundtraxx Tsunami definitions for:
  • Bowser PCC Streetcar. Can be found in the "Tsunami Diesel Bowser OEM" family.
  • Diesel TSU-IM1000 (828070, 828071, 828074), TSU-GN1000 GEVO-12 (828059), TSU-KT1000 P42 (828068).
  • Added MyLocoSound DCC decoder definitions
  • Robin Becker updated the Tam Valley Depot Quad-LN_S stationary decoder to add a Reset menu item when using the Service Mode programmer.
  • Dave Heap made the following changes to the Function Map:
  • Added the ability to specify (f) or (r) suffixes for functions other than FL.
  • Added auto-generated tooltips for checkboxes.
  • Unused rows or columns are now automatically suppressed.
  • Increased flexibility of column naming, including the ability to suppress display of a column.
  • Improved the warning displayed in the ESU Function Map pane if using the Mac OS X and Java 1.6 combination.
  • Scripting:
  • in AbstractAutomaton (used by some scripting) provide for timeout value when throttle not acquired, default to 30 seconds
  • Operations:
  • Improved how the alternate track feature works. You can now use the alternate track feature without schedules or custom loads. Note that if you specify an alternate for a spur, only cars destined for that spur will be placed on the alternate track.
  • New feature, random moves for any location in a train's route. In the route edit window you will find a new column labeled "Random" with a menu of 10 items, The default is "Off" or disabled, and there are values between 10 and 100. If you select 10, it tells the program to randomly reduce the number of cars moves at the location by up to 10%. So if you asked for 10 moves, you could get 10 or 9 moves. If you selected 50, you could get any number of moves between 10 and 5. If you select 100, you could get any number of moves between 10 and 0. Be sure and press "Save" after you make your selection.
  • New feature, the ability to copy a location. See under "Tools" in the Locations window.
  • Fixed a bug where cars out of staging used the same schedule item, even if the schedule was in sequential mode.
  • JSON and Web Throttles:
  • Improved the ability for a JSON or Web Throttle client that has unexpectedly dropped its connection to regain control of the throttle before JMRI automatically stops the train.
  • JSON or Web Throttle clients that request a throttle for the same DCC address or roster entry will share a throttle even if the supporting DCC system does not allow multiple throttles per address.
  • Web Throttles only display function buttons that have labels assigned to them.
  • Miscellaneous:
  • Images added to a roster entry are now stored within the roster directory instead of the resources directory.
  • If multiple profiles are selected, only those actions that apply to multiple profiles are available.
  • Clicking anywhere on the profile selection dialog cancels automatically starting with the last used profile.
  • Changed the upload debugging info functions to now use SourceForge mailing list. This should avoid problems previously seen when attempting to access previous mailing list directly.

New in JMRI 3.9.1 r26563 Test (Jul 3, 2014)

  • When you set a non-default location for script files under the preferences "location" tab, e.g. to put your scripts in a common directory, that location can now be referenced via the "scripts:" portable prefix. This will be applied automatically to pathnames that are selected when defining Logix Conditional Actions and similar operations.
  • Hardware Support:
  • MRC/GaugeMaster"
  • Initial Support has been included for the MRC/Gaugemaster Prodigy Advanced system Supported features include:
  • Programming
  • Turnouts Control
  • Throttle Control
  • Added support for Sensors on the TAMS System. The Tams MC must be running firmware 1.4.7 or above for s88 to work correctly. (kd)
  • Layout Editor:
  • On curved track segments the right click popup area is now on the track itself and the chord line has now been removed. (kd)
  • On curved track segments it is now possible to hide the construction lines in edit mode. (kd)
  • Removal of a Turnout, Slip, Level Crossing or Turntable, no longer removes the connected track segements. (kd)
  • It is now possible to join track segments to other items on the panel by dragging the anchor point on top of other anchor points. (kd)
  • New / Updated decoder definitions:
  • Digitrax:
  • Function decoder TF4 : added a note on pane that CV62 and CV63 values are opposite to what Digitrax documentation writes, and that CV63 is inoperative in fact.
  • Added N Scale Intermountain Board Replacement DN166I0, DN166I1A, DN166I1B, DN166I1C, DN166I1D, DN166I2
  • Added DN126M2, DZ146IN
  • Fixed sound selection for SDH166D/SDN166PS
  • NCE:
  • added N12K0a and N12K0b
  • SoundTraxx:
  • Extended the Soundtraxx Tsunami Function Groups Exchange feature (created by Dave Heap) to Bachmann Sound Value decoders
  • Added Bachmann HO Sound Value EMD GP7, SD70ACe, GEVO ES44AC
  • Added Walthers Proto HO Metroliner, E7A, GP20, GP30, SD7, SD45, U28B/U30B GN,MILW,NYC, USRA 0-8-0

New in JMRI 3.8 r26527 (Jul 3, 2014)

  • 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.
  • Updated the Windows Launcher to bring memory calculations in-line with Linux and OS X
  • Added a "Clear all non-in-use Slots" button to the Loconet SlotMonitor.
  • Updated the WiThrottle server.
  • Updated the user interface font size change preference to no longer override the underlying font style.
  • The Web server has been extensively updated:
  • 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.
  • Fixed a WiThrottle read loop that could cause high CPU usage when devices were "lost".
  • Added some fractional zoom values to LayoutEditor.
  • 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.
  • 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.
  • Added many Italian translation terms, and fixed a couple of existing ones.
  • Provided more translation to French and German.
  • 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.
  • 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.
  • Added custom definitions for Atlas decoders sourced from Lenz (LE062XF, LE063FX) and NCE (N12A0, N12A1 and N12A2)
  • Updated the Bachmann "EZ Command 3 function decoder (36-553)" definition
  • Fix for the Digitrax DS54 decoder definition.
  • 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.
  • Major update to the Doehler & Haass decoder definitions.
  • 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.
  • Updated the Hornby 8249 default values.
  • Improved the Kuehn definitions
  • New decoder definitions for MRC 1641,1642, 1659 and 1664 N scale motor control only decoders.
  • Added decoder definition for the MRC Sound Brilliance 1806 and 1955.
  • Improved the QSI Version 9 decoder definition.
  • Updated the RR-CirKits decoder definitions.
  • Updated the Tower Controller Mark II decoder definition.
  • Support for the RR-CirKits MotorMan (r26387)
  • Added the Athearn GP40-2 and made some corrections to the Soundtraxx definition.
  • Added a live Function Group Exchange feature on the Function Map pane for two sample Tsunami decoders (Diesel Genesis OEM and Steam Genesis OEM).
  • 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
  • Added decoder definition for the Tam Valley Depot Quad-LN_S decoder.
  • Added 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.
  • Added definitions for TCS function decoders.
  • Updated the TCS FL2 and FL4 decoder definitions
  • Update for Team Digital SHD2 board.
  • 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)
  • 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
  • Updated the Zimo definitions to extend the volume controls.
  • Added a new Zimo decoder definition.
  • Updated the BN 1989 signal definitions:
  • 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.
  • 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.
  • Added a new BNSF-1996 signal system.
  • Updated the NTC 1956 signal files.
  • Added non-rotating icons to the BNSF-1996 signal set.
  • Provided a set of icons for building an Armstrong tower control panel.
  • Added signal definitions for the 2008 UP, 2010 Amtrak and 1931 Great Western systems.
  • Updated the LMS-1932 and CR-2008 signal sets.
  • Added some British Rail signal icons
  • Arranged for an error message to be presented if an icon file can't be found, instead of having it fail silently.
  • Hardware / Systems:
  • Improved support in the generic network client for automatic configuration. This includes improvements to the generic mDNS/ZeroConf/Bonjour automatic configuration tools.
  • Updated the JMRI SRCP support in both the client and server to better conform to the letter of the SRCP protocol standard and improve compatability with other SRCP implementations.
  • Fixed a problem with LocoNet Simulator's reading of data files.
  • 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.
  • Updated the XPressNet network connections (LIUSB-Server, LIUSB-Etherenet, and XnTCP) to allow automatic reconnection attempts in the event of a dropped network connection.
  • Added mDNS support to the Lenz LIUSBEthernet adapter.
  • 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.
  • 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.
  • 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.
  • Bug Fixes:
  • 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)

New in JMRI 3.6 r24520 (Feb 17, 2014)

  • New two column format for car pick ups and set outs. Go to the Manifest Print Options, and under Message Format, select "Two Column" if you want your manifest and switch lists to use two columns, one for pickups and one for set outs. The color options for pick up and set outs aren't available when using this format.
  • You can now modify all of the manifest and switch lists text. See under Manifest Print Options, Tools, "Edit Manifest Text" and "Edit Switch List Text".
  • Now when you modify the train manifest using the "Manifest Print Options" window, the train manifests are immediately changed for trains that are built but haven't departed the first location in their route.
  • The Yardmaster window now has a "Next" button which allows the window to be used with the JMRI web server. The drop down menus unfortunately don't work when using a browser to access the windows remotely.
  • Trains can now make local moves at the last location in a train's route. You can disable this feature by not allowing pickups at the last location in the train's route.
  • New feature, you can now control the order passenger cars are shown on your manifests and switch lists. In the edit car window, a new field called "Passenger Car Blocking Order" will appear when you select the "Passenger" check box in the "Type" field. The text box allows you to enter numbers between 0 and 100. Lower numbers will place the car near the front of the train, and higher numbers towards the rear. Recommend that you start off using numbers divisible by 10. For example, you might what to place an observation car at the end of the train, a value of "90" would be appropriate. If you wanted a baggage car to be the first car in the passenger train, a value of "10" would be a good value, cars in the middle of the train could use "50".
  • New feature, the ability to copy any track to a location. See under the Edit Location, Tools, "Copy Track".
  • New manifest and switch list option, the ability to show the car's final destination and track.
  • New feature for folks using schedules to route cars. On a per train basis, you can ask the program to pull cars with a final destination where the train being built doesn't provide the most efficient route for the car. Useful if you want to the train being built to move cars "closer" to their final destination, even if other trains could do it more efficiently. This option does two things, it will add cars to the train being built that wouldn't normally travel on the train, thus freeing up track space. And second creates more work for your operators as this option can and will increase the number of trains needed to move the car to its final destination. See under Tools->Train Build Options from the Train Edit window, select "Service all cars with a final destination" if you want your train to carry more cars.
  • Updated the "Show cars types serviced" tool for a train. The window now shows any track destination restrictions for a selected car.
  • Fixed an issue with train manifest times when the "same" location was used back to back.
  • Fixed a problem where the program would redirect cars from the alternate track for a train that didn't have access to the spur that specified the alternate track. Thanks to Joe Mattick for bring this to our attention.
  • Fixed a problem when a spur has a schedule and "Planned Pick Ups".
  • Improved car movement when the train's route move count is used up or the train's length is maxed out when building the train.
  • Fixed the "Exclude" option in the Destination window for classification/interchange tracks.
  • Fixed the "All Trains" feature when using consolidation mode in switch lists.
  • Fixed the "Return when Empty" when a car entered staging with a custom load, and the remove custom loads option was enabled.
  • Fixed a problem with the train manifest showing the wrong number of utility cars for pick ups and set outs. Thanks to Joe Mattick and Clay Smith for bring this to our attention.
  • Fixed a couple of minor issues when building trains that had restrictions with regards to local moves and cars traveling from origin to terminal.
  • Improved the page layout (line wrap) for manifests and switch lists when using variable width fonts like sansSerif.
  • Improved text line wrapping for comments in the Conductor and Yardmaster windows.
  • Improved the Conductor and Yardmaster window layouts.
  • SignalMasts - Improved support for SignalMast unlit for DCC/LNCP & Turnout based masts
  • SignalMasts - Log a warning to the console rather than throwing an error when trying to set an aspect that has not been configured
  • SignalMasts - Corrected the way in which a unlit/lit signal mast icon is displayed on a panel
  • SignalMasts - Add an option to allow a default DCC accessory aspect ID to be recorded against a given aspect in a signalling system
  • SignalMast Logic/Entry Exit - Consider the state of a crossing block on a Level Crossing
  • SignalMast Logic/Entry Exit - Handle layout editor crossovers where there are two physical turnouts that need to be set/check rather than the primary turnout.
  • Entry Exit - Update the Stack window to use a JDialog rather than a JFrame
  • Editors - Fix an issue where a rotated icon based sensor icon is changed to a text based icon fails as no text values were set.
  • Editors - Change the loading of sensor icons, so that the text details are loaded before the sensor is set, so that when the panel is loaded the sensor icon is displayed correctly when first displayed.
  • Layout Editor - Change the block edit so that it is now possible to access all of the properties of the block, and not just those items that specifically relate to a layout block.
  • Layout Editor - Added in an Edge Connector to allow blocks to be connected over multiple panels to form a single logical view.
  • Blocks - Remove the dependency for a block to have a valid sensor to move an object about, but use the occupancy state of the neighbouring blocks instead.
  • Support for three new signal systems: CROR-2008 from Transport Canada, InfraBel-2013 from Belgium and ProRail-1954 from the Netherlands.
  • An improved definition for the TCS WOW decoder
  • Added a CV Reset Warning for all LokSound Decoders
  • added the HO Challenger to the Sountraxx Tsuanmi Steam Genesis definition and the U28B/U30B to the Sountraxx Tsuanmi Walthers Diesel definition
  • improved the Kato FL12 decoder definition
  • Added base support for IEEE 802.15.4 messages. All this does at this point is allows sending and receiving of raw IEEE 802.15.4 messages from a serial port connection. This configuration was tested using an XBee in API mode connected to the computer via a SparkFun Electronics XBee Explorer USB device. Other devices supporting the IEEE 802.15.4 protocol should work as well, but have not been tested. This code should be considered experimental. There are likely bugs.
  • updated the TCS WOW decoder definition.
  • made the following changes:
  • Updated the InstallTest batch file to pause before exiting in certain situations on 64-bit versions of Windows.
  • Update logging behaviour to create individual per-session log files (session.log) and to collate several session log files into messages.log
  • Updated the MS Windows launcher to check for an already running instance of a JMRI application and to provide an option to continue or abort.
  • Add the ability to delay the re-allocation of sections for a train set with continuous running. The delay can be set as either a duration in minutes or triggered by a sensor. - KD
  • The CV table in DecoderPro is now sortable and by default appears in order by number.
  • Added code to prevent bad programming track writing to CV's greater than 255 which are not supported by the PowerHouse command station. Using the ops mode works as well as the PowerCab with the whole 1024 range.
  • Fixed wrong properties name in NCE USB Interface panel.
  • Fixed memory addressing issue in NCE macro editor/backup/restore. This bug was introduced prior to 3.4 when adding support for the updated NCE USB for other functions. Currently Macro support via the NCE USB is a work in progress.
  • improved the NCE Monitor.
  • provided a signal definition for the New York Central on October 28, 1956.
  • updated the ProRail 1954 and InfraBel-2013 signal definitions.
  • fixed the behavior of constant checkboxes in DecoderPro
  • translated some decoder definition elements into German, French and Spanish
  • provided Tsunami updates
  • provided another Tam Valley decoder definition
  • updated the Tam Valley Quad Ln11 decoder definition
  • updated help files
  • fixed links in the help files
  • improved DecoderPro slider support:
  • The "hslider" format displayed a plain slider for decVal and indexedPairVal variable types but a percentage slider for indexedVal type. The percentage display was currently only used in QSI definitions.
  • Restored consistency so "hslider" displays a plain slider for all three variable types.
  • Created a new "hslider-percent" format (using existing code) for all three variable types.
  • Updated QSI pane definitions where necessary to restore pre-patch behavior.
  • Note that the existing code for "hslider-percent" is a bit kludgy and customized specifically to accommodate some QSI features. Future development would be to replace with a new "hslider-custom" format giving better control of labels, if a way could be devised of specifying a hashtable-type custom label list in programmer pane definitions.
  • updated the TCS WOW decoder support.
  • added ESU V4/Select fixes, additions, new panes.
  • added a decoder definition for the Massoth pulsed smoke unit.
  • added a new webThrottle app, based on JSON and web sockets
  • updated the web version of the Operations Manifest to work properly for in-route trains, and rearranged and added some items to the JMRI Web Server local home page.
  • Fixed problem where black-on-black panel icons would not display properly.
  • improved the TAM quad decoder definition
  • improved the DecoderPro operation: Sheet Read and Write operations were ignoring readOnly and writeOnly attributes if the CV value was Unknown. The readOnly and writeOnly attributes are now always respected for all Sheet operations. Read Changes will still attempt to read Unknown values but Write Changes will not attempt to write Unknown values.
  • added extra CVs, panes, workarounds for programmer issues and numerous fixes/improvements for ESU V4 files.
  • improved the Mistral Gold decoder definition with "Other Sound Setting" (CV62)
  • improved the TCS WOW decoder definition.
  • improved the Tsunami Rapido F9A definition.
  • added a decoder definition for the SoundTrax Piko decoder
  • Dispatcher - Added an AutoTerminate Option when creating new Trains - KD
  • Layout Editor - Fix an NPE error when bring up a popup on a Turntable Ray - KD
  • Layout Editor - Fix a bug with the linked connection point - KD
  • Changes to decoder programming and definition allow specification of workarounds when a command station only handles a subset of CVs, and the decoder provides a way to access the full range locally. Useful with ESU and Zimo decoders, but not all (close to none) of the decoder definitions have been updated to use this.
  • NCE command station programmer updated to indicate when it can't access high-address CVs.
  • added automatic display of CV numbers in DecoderPro tooltips. To see the CV address for a decoder parameter, hover your mouse over it. By default this is off (DecoderPro exists to hide this information, not show it), but you can turn in on with a preference under Roster, then Programmer.
  • The OpenLCB lib was updated to the current version. This includes several memory-read protocol fixes.
  • updated the Mac OS X launcher to handle different Java configurations, particularly when installing a clean version of Mac OS X.
  • created multiple Doehler and Haass decoder definitions.
  • added decoder definitions for the Arnold N scale decoders.
  • added a decoder definition for the MRC 1952, improved the definition for the MRC 1957, added the 1922 and 1916.
  • fixed some cross-references that were preventing the CROR-2008 and InfraBel signals from displaying properly.
  • provided additional UTCS track segment icons.
  • The timestamp on messages in the console output was changed to default to a real timestamp like "2013-11-17 15:16:07,486" in local time.
  • fixed a problem with starting the LocoNetOverTcp server when running the JMRI faceless app.
  • created a new signal head type "Triple Output RGB". It is based on the existing triple output class and takes the same input as the quad output. The three outputs drive the red, green and blue inputs of a RGB searchlight head to give Red, Green, Yellow and Lunar indications both steady and flashing as well as dark.
  • improved the tooltips for lots and lots of decoder definitions to make them more consistent
  • added Digitrax decoder types
  • A bug in SRCP support was fixed. It preventing storing panel files with certain kinds of SRCP information present.
  • fixed a problem that was preventing people from printing just certain pages or page ranges.

New in JMRI 3.4 r23744 (Jul 9, 2013)

  • You can now control loads for trains and tracks by the type of car. Previously only the load name was available. Now you can control by load names, and by car type and load name.
  • You can now decide if you want indenting when looking at build reports with a text editor.
  • New feature, the program will now generate custom car loads for car's departing staging and also terminating into staging. See Edit Staging track, and select "Generate custom loads for any staging track". You can control which loads will be generated by adjusting the terminal track and which loads the train departing staging can carry.
  • You can now edit a car's move count, wait, built, owner, RFID, and value fields directly in the Cars window.
  • Improved the car wait feature. Now the car's wait will only decrement when the train can actually service the car, not just passing through.
  • You can now adjust the tab length if you're using the tabular format for your manifests and switch lists. See in the Manifest Print Options under Tools.
  • The conductor window will now show locomotives assigned to the train.
  • Made some improvements in the print locations tool with regards to schedules.
  • More build report formating and readability improvements.
  • A new feature called the "Yardmaster" window. Now you can now get a switch list for a location similar to the "Conductor" window. In the "Locations" window, there's now a button called "Yardmaster" for each location. The Yardmaster window has a combobox containing a list of trains that have work for the location. Only built trains with work are available.
  • You can now independently control the build report font size. If using the text editor, use a smaller font size if you want to increase the amount of text per line.
  • Some additional work integrating the Manifest Creator. There are now run buttons on the trains window to activate the program. Select "Generate csv Manifest" in the build options window to enable these new buttons. You can also edit the file name of the Manifest Creator, see under Trains->Tools "Setup Excel Program".
  • In the "Set Car" window, the destination for the car is now by default disabled. You should be using the "Final Destination" when manually setting a destination for the car. If you need the destination field enabled, under Tools, is an option to enable it.
  • New feature, the last date and time a car was assigned to a train. Note that the last time and date is set when the car is delivered, or if the car was reset from a built train. This should help you find "stuck" cars if you have any.
  • Improved car routing when the car has custom loads and/or final destinations. Thanks to Dave Cochrun and Inspector Dave in helping us improve this part of the program.
  • You can now use the escape key to close any active operations window. All operations and other jmri windows can also be closed by using the control-W key.
  • Yardmaster and Conductor windows now show utility cars by their quantity rather than by road and number. Both windows now support the "Sort by Track" option. The Yardmaster window now uses the "Switch List" format rather than the "Manifest" format.
  • You can now control which loads are allowed to ship from staging.
  • Improved the routing code to search for several interchange or yard tracks at a location when trying to find a route to a spur. The previous version didn't try find other tracks at a location when the first track tried was full. Thanks to Jim Elbe for finding and reporting this issue.
  • Made some improvements to the build report with regards to car routing. Also improved how the program deals with routing a car into staging and which tracks in staging are appropriate.
  • Improved on how the program deals with "car type and custom load pairs" for locations and trains when a car type is changed or deleted. Thanks to Inspector Dave for reporting this issue.
  • Improved how the program deals with custom loads and kernels. Now all cars in a kernel will get the same custom load if the the custom load is valid for the car.
  • Improved the dialog window for a route comment. Now you can easily enter several lines of text.
  • The Locations window now shows the track types for each location.
  • New feature, for classification/interchange tracks you can now restrict which destinations the track will serve. See "Track Destination" under Tools in the edit track window.
  • You can now tell the router if you want it to consider yard tracks when routing a car. Deselect "Enable Car Routing via Yards" in the Option window under Tools in the settings window if you don't want to use yards when routing cars. The yards are still available for other purposes.
  • Added the ability to print out a car's final destination and return when empty to the car roster print function.
  • In the "Set Car" window, the return when empty and final destination fields are now disabled if you turn routing off. Both features require routing to work properly.
  • The program no longer shows an error in the train build report if you delete a schedule item for a car that was assigned that item in match mode. The program now tries to find another match for the car, and will report a problem if there isn't a match available.
  • The program now shows the train, departure and arrival locations if the prompt to or from staging is selected.
  • Fixes:
  • Fixed a line formatting problem with manifest and switch lists that have carriage returns embedded in the comments.
  • Fixed a problem when swapping cabooses in a train's route. The code didn't check to see if there was the correct number of moves available in the route to do the swap. Thanks to Quintin Foster for finding and reporting this problem.
  • Fixed a problem with a train's departure time when there was back to back locations using the same name. Thanks to Bob Byck for finding and reporting this issue.
  • Fixed an issue where the "Add" or "Edit" Track window size would revert to its previous size while modifying the track checkboxes.
  • Fixed a problem where the program wouldn't correctly select a staging track when exclude train or route was used.
  • Fixed an issue where the program would route too many cars to a spur with a schedule.
  • Fixed a problem where a car with a custom load in route would lose which schedule item the car had been assigned when the train carrying the car was reset.
  • Fixed a problem where a switcher would ignore a car's wait count. Thanks to Joe Mattick for finding and reporting this issue.
  • Fixed a bug where a train wouldn't build after deleting a car or loco type that the train used to carry.
  • Fixed a bug in the cvs files when user had commas in their comments.
  • Fixed a bug where a train wouldn't terminate if the first location in a route was deleted in a built train.
  • Added support for NCE USB / PowerCab version 7. NCE now supports the use of AUIs for sensors when using a NCE USB and PowerCab. You need to have the latest USB interface which is version 7.x.x and your PowerCab must be version 1.65 or newer.
  • Hardware Updates
  • CAN Ethernet - Added the ability to select the correct protocol
  • Merg CBUS Ethernet - Added in a new adapter to handle this configuration
  • LocoNetOverTCP - Fix an issue with the connection details that prevented it from being loaded.
  • Ecos - Fixed a minor issue with the way that the speed step reply was processed that caused an error
  • ESU ECOS - Fixed an issue with the way that the throttle speed changes are handled
  • Loconet Simulator - Initial states of sensors can be set via the preferences, rather than using the default of UNKNOWN
  • Debug Throttle - Add 14 & 28 Speed step settings to those that are available
  • Loconet Throttle - Fix issues where certain speed steps were being skipped over in 14 & 28 mode. - Michael Mosher & Kevin Dickerson
  • Editors
  • SensorIcon - Fix an inconsistency issue with the setting of sensor text colours.
  • Text Properties - Fix the font size selection list in text properties to work correctly
  • Layout Editor - Added in the ability to rotate Slips
  • Layout Editor - Include internal block boundaries on the continuing path of a crossover as a valid location for setting a signalmast/sensor
  • Layout Editor - Fixed a placement issue with the SignalMast/Sensor tool in the Layout Editor
  • SignalHeads
  • SignalHeads - Fixed an issue which prevent the Add button from working correctly
  • Updated the DCC signal head decoder to allow user defined numbering for different aspects.
  • Fixed an issue where if the username is changed, this is not reflected in the Editor Icons.
  • SignalMast
  • Added in the ability to repeat the state of one SignalMast onto another and vice-versa
  • When an Aspect is either disabled or enabled, the Aspect ComboBox in the table is reflect this change.
  • Fixed a bug in the DCC Signal Mast when copying a Signalmast which has aspects set as disabled.
  • Fixed an issue where if the username is changed, this is not reflected in the Editor Icons.
  • SignalMast Logic
  • Update the user defined blocks so that they are updated when user names are changed and move
  • React to LayoutBlocks being allocated to sections. This only occurs if the Logic has a section associated with it, and the dispatcher has been loaded.
  • Identifies Signal Masts that can be classed as intermediate. Intermediate Masts are classed as those that only have a single destination mast, with no turnouts in the path.
  • Flag sections as being intermediate where they go to or from an Intermediate Mast.
  • Now considers the opposing blocks when it encounters a double crossover.
  • Fix an additional issue when a signal mast logic is deleted it may generate an NPE.
  • Allow multiple protecting blocks for a single SignalMast located at the throat of a turnout.
  • Entry/Exit(NX)
  • Add the option to set an alternative colour for the layout blocks while the Entry/Exit route is being set up. Colour is defined in the Entry/Exit Options
  • Allow extended NX routes to be set eg A-D, rather than A-B, B-C, C-D
  • Can now extend the transit of an Active Train in the dispatcher
  • Now considers the opposing blocks when it encounters a double crossover.
  • Added in the ability to stack Entry/Exit (NX) Interlocks.
  • Allow multiple protecting blocks for a single NX Source located at the throat of a turnout.
  • Decoder Pro
  • Decoder Selection - Added a Show/Hide facility on matched decoders after the decoder has been read
  • DP3 - The new Loco window, now allows you to create a basic roster entry without having to open a separate window
  • Fixed the DP3 Quit from menu option
  • Fixed an issue where a new Roster Entry may not get saved correctly to the roster index.
  • Dispatcher/AutoDispatcher changes
  • Initial Support for Signal Mast in the Dispatcher including
  • Automatic train responding to SignalMasts
  • Section generation based upon SignalMast Logic
  • SignalMast Logic based section blocks are populated at load
  • Fix an issue where turnouts are not correctly being set in the last section, (when continuous running isn't selected) or the previous block is not picked up if the active train is starting in the transit and is not in the first block of that section.
  • Add the ability to delay the start of a train based upon a sensor going active.
  • Add to the memory icon, the ability to reset an Automatic Active Train once it has completed.
  • Add a text label with the actual speed(percentage)/direction as seen by the associated throttle to an auto active train.
  • When using SignalMasts and Auto Allocate, the mast at the end of the last allocated section is set held, so that the approaching automatic auto train does not simply read what the logic has calculated. When allocating the next section, set the mast at the end of that to held and then release the previous one.
  • Update the auto active train terminate option, so that it waits until the loco has stopped before finally disposing of it.
  • If allocating a section that this flagged as intermediate test all subsequent sections that are also flagged as intermediate to make sure that we do not end up with trains meeting face-to-face.
  • When a section that is waiting to be allocated goes from an occupied to an un-occupied state force the dispatcher to do a rescan of sections waiting to be allocated.
  • Extend the Entry/Exit interlocking so that it can extend the transit of an active train.
  • Add the option to allow the dispatcher window to be opened when the panel file is loaded.
  • New Train Window - The starting block combo box will automatically select the first occupied block in the list
  • New Train Window - When called from the panel with a known Roster Entry and block, the transit combo is populated with transits that either contain the block past or have it as an entry poing.
  • Fix issue with the editing of the forward blocking sensor
  • Fix a out of range exception in dispatcher.
  • Provide access to the Dispatcher functions of create new train, allocate sections and terminate for an active train from a memory icon, if a Roster Entry is used
  • Store the train type as set in the Dispatcher New Train Window against the roster entry, and retrieve it when the entry is selected again
  • Added the option to store the Roster Entry in allocated blocks from the dispather rather than just a text string
  • Provided a new method to edit block, turnout and sensor details in the table.
  • Added the option to set the state of an Internal Sensor at load/creation to something other than Unknown
  • Updated the routes window to allow it to contain scroll bars if the window is too small for the information contained
  • Blocks/LayoutBlocks - When the layoutblock useExtraColor is changed, propagate this down to the "block" so that it can fire off a propertychange event of "allocated" to all its listeners. The "block" itself does not keep track or store the allocated setting. This saves any objects having to listener to both the block and layoutblock states.
  • More updates to the Italian translation. This includes numerous changes to the coding for existing (English) strings, so please comment if you notice something missing.
  • The JUnit unit tests were reorganized at the top level.
  • Fixed a problem with MS100 mode. Note that MS100 is only available on certain older Windows machines; this fix doesn't change that, just restores some function lost in JMRI 3.2. In the long run, you need to replace your MS100 with something from this century.
  • The Xerces-J parser used to read and write XML files was updated to version 2.11.0
  • More changes for internationalization, particularly for the operations code by Dan Boudreau. Enzo Fortuna has made large updates to the the Italian language support, including Digitrax and Lenz decoder definitions.
  • More reducing decoder definitions to common form via XInclude of "part files".
  • changed the preferences associated with roster location and "User File Location". He also added support for ESU's new Marklin-style speed tables in LokSound 4.0 decoders.
  • Improved some of the file-location-related terminology.
  • Provided decoder definitions for PpP decoders.
  • Changes for Virtual Sound Decoder:
  • Fixed a LOT of bugs from 3.2.0. Some big ones are called out specifically below.
  • Added support for designating a location as being inside a tunnel (still experimental)
  • Added the ability to assign a Physical Location to a Block if that Block is associated with a Reporter. This gives added resolution in locating the train, under certain circumstances.
  • Engine start sound now only played when throttle is at idle.
  • Added filesystem browsers to the default path and file entries in the Preferences
  • VSD file can now explcitly indicate which defined Diesel notch is the Idle notch.
  • Walt Thompson fixed links in several help pages
  • Walt Thompson fixed a bunch of links in the help pages
  • Walt Thompson improved the help file linking
  • Fixed problem when exporting roster files
  • Fred Dalzell added a definition for the MRC Steam Sync Mini decoder MRC_soundbrilliance1869.xml
  • Gert Muller fixed a problem when storing panels from the web client
  • Fixed speedometer opening three little blank windows
  • More graphics in the help pages will not display in a desktop web browser when clicked
  • Updated Standalone LocoNet help page information for LocoBuffer-USB and LocoBuffer-II use of LocoNet RailSync wires
  • Fixed a problem that could result in roster entries sharing a backing file if you export an entry and then re-import it into the same JMRI instance. If you have done this, in the past, the fix is to "Recreate Roster Index" from the debug menu
  • added an option to the Communications Monitor windows to allow users to filter out unwanted message types
  • provided definitions for the Rio Grande signals as of 1965
  • made some internal improvements to the XPressNet programmers
  • updated the BLI and NCE decoder definitions
  • Updated the DCC Signal Head to work like the DCC Signal Mast and all known hardware. The NMRA Standard for addressing DCC Signal Accessory Decoders is poorly written and ambiguous. JMRI support for these is moving toward what the hardware manufacturers are actually doing, and away from NMRA DCC Working Group diktat
  • Add LinkingLabel, a type of icon on the various panel editors that will let you move to another window or open a web page. Just a starting point for eventual web-server features
  • Improvements to aspect-signaling docs
  • Added a new LinkingLabel icon type to the three kinds of panels. This can be text or an icon. When clicked, it takes you to another JMRI window or an external web page or file. Steve Todd also built in web support for remote viewing
  • Improved the NS-2008 signal set
  • Removed the ability to run the NCE serial interface at 19,200 baud. This speed has been found to cause problems with the NCE command station. The default is now 9,600 baud. If you were running at 19,200 baud, you'll have to reconfigure your NCE command station to run at 9,600
  • Provided decoder definitions for the MRC 1619 through 1624 decoders, and updated the TCS X definition
  • Updated the SoundTraxx Diesel Tsunami definitions and provided a new BLI Light definition
  • Fixed a bug in the JMRIClient implementation that prevented the names of CBUS turnouts and sensors from being passed to the server
  • Added preliminary support for the SB5 and Twin systems.
  • Expanded support for the updated PowerCab (1.65) and the updated USB (7.*)
  • Changed the way NCE systems figure out which menu options are supported for a given connection type.
  • Removed the multiple line format of the Cab Monitor based on user feedback and headaches it caused the code.
  • Cab Monitor now displays AIU inputs bits as functions on the cab.
  • Added USB Interface support to allow changing the USB cab number
  • The following changes were made to network services:
  • The JSON Server can be automatically started when JMRI starts -- Randall Wood
  • The JSON Web Servlet can update or add turnouts, sensors, and other objects -- Randall Wood
  • Fixed a problem with help links that reported a 404 error through the default browser. -- Dan Boudreau
  • On LocoNet systems with transponding, fix a spurious power-off when doing ops-mode decoder reads.
  • You can now use the "Start Up" pane in preferences to have any of the six Operations windows open when the program starts. You can also use that to put buttons on the PanelPro or DecoderPro startup window to open the Operations windows without going through the menus.
  • In the past, all menu items were listed under the Preferences "Start Up" choices for a new action or button. This is slowly changing so that only valid ones, based on the currently configured connection(s), are displayed. This is meant to make it easier to find the ones you're looking for. This is a subtle change to the code, so please let us know if something has gone awry. About 1/3 of the system-specific items have been removed so far, with the migration intended to be complete by the time JMRI 3.4 is released this coming summer.
  • Added the possibility to copy a selection from the System Console to the clipboard -- Matthew Harris
  • Michael Mosher updated the Tsunami decoder definitions
  • Michael Mosher added a new NCE N103 decoder definition
  • Nigel Cliffe provided definitions for the Harman DCC "Signalist" decoders
  • The DCC manufacturers list was updated with the most recent NMRA assignments
  • There's now a layoutblocks variable predefined for access to the LayoutBlockManager from Jython scripts.
  • Mattias K updated the LocoNet support to track the time that LocoNet messages were received.
  • Dick Bronson updated the definitions for RR-CirKits products
  • Stephen Lowens updated the SoundTraxx Tsunami Rapido definition
  • Dave Heap updated the ESU V4 decoder definitions
  • Nigel Cliffe provided a definition for Harman DCC "Signalist" decoders.
  • Decoder definition for the MPM RRR cars and advanced light functions decoder from Wekomm - Alain Carasso
  • Improved internationalization for the About dialog - Jens E Christensen
  • Improvements to JSON server and protocols:
  • JSON clients can now add, edit, and delete consists. - Randall Wood
  • Begin versioning the JSON protocol so clients can use an explicit JSON protocol version. - Randall Wood
  • Include the JSON protocol version in the ZeroConf advertisement for both network services that support the JSON protocol. - Randall Wood
  • Allow the JSON socket connection hello message to be read using an HTTP GET to /json/hello - Randall Wood
  • Allow the JSON hello message to be requested by JSON clients through the socket connection. - Randall Wood
  • Add a JSON method to enumerate all advertised ZeroConf services; this is intended to allow a client outside the ZeroConf boundary with only knowledge of the Web service to request a JSON-formatted list of all network services (WiThrottle, SRCP, LocoRMI, etc...) with ports and connection information. - Randall Wood
  • Improved web server performance with a large number of clients or large number of requests per client. - Steve Todd
  • Request administrator rights when installing - fix for bug highlighted by Suzie Tall
  • The TCS decoder definition files have been realligned with great help from TCS. All old definitions are still there, but three new families have been created from which only the one with the latest firmware (called Jan 2012) is always visible. If you identify a decoder on the programming track the correct decoder definition file will be called. The decoder files now also leverage the unique decoder type ID provided by TCS. When identifying the decoder not only a large family will populate but only the right decoder featuring its correct firmware will be shown.
  • There's also a new feature in the tool allowing to replace obsolete decoder definition files with their current replacement. To do this, select "Update Decoder Definitions" from the "Debug" menu. In this release, the only decoder definitions that are available for update at the TCS ones. If you have TCS decoders and want to use the most recent decoder definitions, please back up your files and then go ahead with doing this update.
  • An initial decoder definition file for the soon to be released WOW sound decoder is included. So far only the NON sound related CV's are supported, as the sound CV's require additional rework of the code base.
  • Peter Ulvestad improved the Atlas 342 and 345 decoder definitions
  • Nigel Cliffe improved some CT Electonik decoders.
  • David Heap improved the Help Locations window.
  • Dave Sand contributed a new ManageBlocks.py sample script
  • Added dynamic changing of speed step modes to the SPROG throttle
  • Changed to the Bachrus Speedo following user feedback
  • Change window layout to show dial and graph together
  • Added optional grid overlay
  • Added selectors for programming track or main track operation (doesn't do very much at present)
  • Added User editable title string
  • Added further Patches to fix ESU V4 Indexed CVs decoder definitions, plus some code in LocoFile.java to correct existing roster entry files as they are read, in order to match corrected definitions.
  • Added additional Catalan translation.
  • Prevent potential NPE during JSON operations
  • Set JSON protocol version for 3.4

New in JMRI 3.2 r21862 (May 15, 2013)

  • Improved how cars are forwarded to alternate tracks. Now if the alternate track's spur becomes available during the build, cars originally sent to the alternate are now redirected to the spur.
  • Made some minor improvements to the train build reports when a train departs or enters staging.
  • Improved how the csv manifest counts empty cars with custom loads.
  • New operations feature, you can now control if arrival or departure times are shown on your train manifests. See under "Edit Train"->Tools->Options
  • You can now open a csv manifest directly from the trains window.
  • When building a train, the move list is no longer in alphabetical order.
  • You can now force a car or locomotive to any track when using the "Set" window.
  • You can now reset the move counts for cars and locos. See under Tools->Roster in the Cars and Locomotives window.
  • Train, car, and locomotive log files are now only created when there's data to save. This should eliminate empty log files.
  • Fixed a bug where all cars in a kernel were being checked when selecting a track from staging. Only the lead car in the kernel should have been checked.
  • The train log now includes the build failure messages
  • You can now have your manifest show the departure time rather than the estimated arrival time. See Print Options for more information
  • The schedules window status has been improved to show more cases where a schedule has a problem.
  • The edit train window will now only launch one edit route window
  • Train reset in the Trains window now checks to see if the departure staging track was allocated to another in bound train. This prevents using reset for the departure train, and then ending up with two trains on the same staging track.
  • You can now allow cars to return to staging by train. The train has to be a turn, it must depart and return to the same staging location. The option can be found under Edit Train -> Tools, Train Build Options.
  • New feature "Show Cars in Train" can be found under Tools in the Conductor window or from the train icon menu. Now you can see which cars are in the train at the various locations, and where picked up cars are to be placed in the train.
  • New feature for trains, you can now prevent local moves even when using custom loads. You can also prevent through traffic from origin to terminal. See under Edit Train, Tools, Train Build Options.
  • Now when you select a car type in the location window, the program will bring up the "Modify location by car type" window. Now you can quickly see which tracks will service the car type selected.
  • Removed switch list and build report options from the Print Options window. Build report options now have their own window. Switch list options were moved the switch list window that is launched by the "Switch List" button in the Trains window.
  • Increased the number of fonts available for operations. Only monospaced fonts are now available if you've selected tabular manifests and switch lists.
  • Improved the train build reports. Now the build report separates each car being processed by a line break in very detailed mode.
  • Fixed a problem with selecting the "Courier" font that was introduced in 3.1.5.
  • Fixed a problem with the Switch List window not appearing when the default printer wasn't specified on the PC. We only know of one user that has experienced this problem, might be related to one of the newer versions of JAVA.
  • Additional improvements to the train build report, a better description of location moves.
  • Improvements to the Backup capabilities, including separate stores for "automatic" and "default" backups, dialog to select between automatic and regular backups when restoring, and a dialog to allow deleting automatic backups.
  • Hardware Support:
  • Added in initial support for the Marklin Command Station 2 System
  • ESU ECOS - Only update the throttle speed on the reply of the last throttle message which has been sent and ignore the event messages until all set speed messages have been processed, otherwise the throttle speed value jumps up and down like a yoyo until the last message is proceed.
  • ESU ECOS - Update the loco import to blank out disabled functions and set non-descript function labels to be Fx.
  • ESU ECOS - Update some of the back end code relating to the Ecos loco database
  • ESU ECOS - Update throttle code to allow 14/28/128 speed steps
  • ESU ECOS - Update some of the back end code relating to the turnout and throttle control
  • ESU ECOS added support for multi-protocol throttle
  • NCE USB - Updated the throttle so that speed step 1 (as shown in the GUI) actually sets the loco speed.
  • Updated the backend of the Connection Configuration to remove some limitations on the numbers of settings per connection
  • Tweaked some of the GUI settings relating to the connection details
  • Added back in the PR3 Standalone option in the connection details
  • Decoder Pro 3 / Roster:
  • Fixed an issue where the splash screen was not displayed at startup and the buttons added at Startup were not displayed.
  • Added the option to suppress the quitting application message.
  • Fixed an issue in DP3 that caused an issue with the preference file
  • Roster - Fix an issue that corrupted the roster index if the roster was saved while a newly created unsaved roster entry was open.
  • Decoder Selection Tree - Decoder family groups are now kept together within the Manufacturer list
  • Programming - Fix an issue whereby the code doesn't wait for a reply to a programming command and other messages are sent/processed. This happens if no message is required to put the command station into programming mode.
  • Throttles:
  • Provide support for systems that can handle multi-protocols for throttle control and extend this to cover decoders and roster entries. Additional supported protocols now include
  • Motorola
  • Selectrix
  • MFX
  • The change is only seen if the system that controls the throttle supports protocols.
  • Throttles - Provide a method to create a throttle by passing the Roster Entry rather than the DCC Address
  • Throttles/Roster Enties - Records the duration that the loco has been operating for, along with the last time last was used, the information is stored as an attribute against the roster entry and can be viewed in the media pane.
  • Tables:
  • User set column widths, order, sorting etc is now saved between sessions
  • Added a "Copy User Name" item to the mouse popup menu
  • Remove the unnecessary question when adding a username to an item for the first time if the item has yet to be used.
  • Fixed a potential error that could occur when loading a panel file if the turnout table was already open.
  • Turnout Table - The feedback sensor selection is now done via a drop down list rather
  • Block Table - The unit length is now remembered between sessions
  • Editors:
  • Fix an issue where memory icons that load with an empty string value, the saved background color is ignored and subsequently lost
  • Provided a method for external code to add menu items to the popmenus of icons on the panel
  • Layout Editor - Fixed an issue with the SSL Logic for a slip icon that resulted in a diverging route not being set for limited speed correctly.
  • Auto Dispatcher:
  • If a train has been created using a roster entry, the roster entry is now passed to the throttle manager rather than just the address, this allows use roster entries and systems that support multiple protocols, it also allows the use of the loco to be recorded in the roster entry
  • Fix a couple of Index Out Of Bounds Exceptions
  • Fix an issue where a loco set to a paused state would never restart
  • Entry Exit (NX):
  • Added the option to set the action when the NX sensors are selected a second time.
  • The cancel/clear route option can now be accessed via mouse pop-up on the source sensor icon in a panel
  • When setting a sensor in a block, if that sensor has a reporter associated against it the user is asked if they wish to use the reporter on that block.
  • Logix - Fix bug 3565824 - create logix button staying disabled.
  • Abstract Automation - Assign the name to the thread to help identify any issues caused by the thread
  • added a new JmriFaceless app for linux installs, and modified WiThrottle server and Loconet simulator to not show a window when JMRI is running in headless mode.
  • added the binaries needed by the Raspbian hard-float distro (for the Raspberry Pi).
  • updated decoder definitions for Digitrax sound/motor decoders. This version adds CV144 (Dynamic brake volume) and moves Con-cor Zephyr definitions to new file
  • provided decoder definitions for Con-cor MP54 and Zephyr models. These use Digitrax SDH164D and/or SDN144PS with unique programming and/or sound projects.
  • LokSound V4.0 Decoder CV249 (Min Steam Chuff Distance) was inadvertently assigned to CV248 instead of CV249. Also some others I wanted were missing, so I added CVs 47,48,51,122,123,129,130,133,250,255, which were the ones missing but present in LokProgrammer 4.3.3 and present in LokSound V4.0 Instruction manual 4. Edition, May 2012 from firmware 4.6. CV131 appears to be obsolete but I did not remove it. Had to move a few option numbers up and down to fit all on to existing panes.
  • updated several MRC decoders and provided a new definition for the MRC 1905.
  • TextLabels, LocoIcons, SensorIcons in text display mode, MemoryDisplayIcons can be rotated to any angle along with any margin or border decorations they have.
  • LocoIcons may have a "docking location" specified.
  • Sensor overlay bug fixed.
  • Picklist will retain user's location.
  • add initial /panel/ servlet support for Layout Editor and Control Panel panels.
  • add a web page for drawing panels in the browser (supports only limited number of elements now)
  • Several additional features have been added to the OpenLCB support, including:
  • an updated node browser that directly lets you configure boards
  • improvements to the specific configuration tools
  • added a built-in hub for Internet access to your OpenLCB. Start the hub from the OpenLCB menu or a startup item, the connect your iPhone via port 12021.
  • support in JMRI throttles for access to an OpenLCB command station
  • the OpenLCB monitor now shows formatted messages.
  • If you define a sensor for OpenLCB using just one event, it will work in a momentary fashion.
  • contributed a decoder definition for the MTH Expanded DCC decoder.
  • did a major update to the QSI Version 8 decoder definitions
  • updated the ESU LokSound Select decoder definitions, and the SoundTraxx MC IMRC and Genesis decoder definitions.
  • update to the Tsunami diesel decoder definition to add the GN1000 series and EMD 645 (non_turbo)
  • improved the LocoNet slot monitor.
  • added code to allow function buttons to work within the Loconet Slot Monitor.
  • Loconet Slot monitor will refresh if cmd station ops sw 36, 37, 38, or 39 is set to closed 'c'. This is Feature Request 1876188 which specifically asked for Ops SW 36, but there is no reason to limit to sw 36, since 39 will erase all slots memory.
  • The loconet Slot monitor function Key were active for System Slots. This could have caused Command Station configuration issues. As a result of this change Function Keys F1-F8, E Stop button, and Free button will not longer work for the reserved system slots which are above slot 120.
  • fixed issue with xmlio server which was preventing multiple clients from getting updates.
  • added layoutblocks to /panel servlet
  • added signalhead list and monitoring to /xmlio servlet
  • multiple enhancements to showPanel.js, now handles majority of panel widgets
  • corrected outdated help regarding JMRI Web Server and added details of new and modified components.
  • set of six wider lever icons that use the same graphic but are placed on a wider transparent background. These are easier to use with touch panels, but also work well with mouse or trackball clicks. The larger target is especially useful when used with a 3 position multi sensor icon. They are available in the /resources/icons/USS/plate/levers/ directory.
  • contributed a set of code buttons to match Bob Bucklew's wider lever icons.
  • fixed a nasty, long-standing problem with how various complicated variable definitions in DecoderPro interacted. This could, under the right circumstances, cause reading or writing of the decoder to hang permanently.
  • provided a new Tam Valley Quad Ln decoder definition.
  • added xxx-blink-web.gif icons with correct frame delays and dimensions for web and panel use.
  • signal definitions for the Norfolk Southern Corporation 2008 operating rule book (NORAC).
  • NCE Cab Monitor - Converted to using table format for the cab detail display
  • Added ability to draw shapes (rectangles, circles etc) in ControlPanelEditor. Note: Use Shift key to select for dragging or popup (expected usage is to overlay panel items).
  • Added let Warrants run automated trains without them occupying the starting block - thus warrants can be chained dynamically.
  • improved the ESU LokSoundV4.0 and LokSound Select decoder definitions.
  • definition files for two Harman DIY decoders.
  • updated the RR-CirKits LNCP definition file.
  • Added JSON server at port 2056
  • Added JSON WebSocket services to the web server
  • Added Operations data to json servers (trains, locations, engines, cars).
  • Initial version of browser-based Operations functions (train list and manifest).
  • Fixed issue with WiThrottle handling of wildcard multi-throttles (seen with EngineDriver only).
  • Added signalmast list and monitoring to xmlio server, added memory and signalmast to json servers
  • Added signalmast aspect image list to /panel servlet
  • full Italian translation
  • Fixed a problem where CAN interfaces might pick up the wrong protocol name in the preferences.
  • To allow use of UTF-8 characters (special characters with accents, Japanese text, etc) in XML files, particularly decoder definitions, the default file encoding has been changed to UTF-8. This requires a change to the startup scripts distributed with JMRI. If you're using your own custom startup scripts, you need to add a "-Dfile.encoding=UTF-8" option to them.
  • Added RailStars Limited to the list of decoder manufacturers (company has been around for a while, but the NMRA C&I Department hasn't updated their list in more than 18 months).
  • some documentation updates and fixes.
  • edited the BN-1989 signal mast set to have required specific aspects and a basic set of aspect mapping.
  • submitted icon files for the BN-1989 and aspects.
  • submitted the following changes to Virtual Sound Decoder
  • Sound will now follow the locomotive if you use one of the following location tracking systems:
  • Digitrax Transponding (verified)
  • RPS (not verified)
  • RFID (not verified)
  • Dcc4PC (not verified)
  • ECoS (not verified)
  • Listener position does not have to be the origin now.
  • Roster "Save" button on the VSD window now saves to the file on disk
  • New Diesel engine model (still under development)
  • If you have one of the location reporting hardware systems listed above as "not verified", and would like to help verify correct operation, please contact Mark (user "twindadrails") on the JMRI Yahoo! Group.
  • decoder definition for the Tsunami for Rapido FP9A.
  • added some new Zimo Unified Software decoder definitions.
  • fixed a problem preventing the help page from showing for the preference pane.
  • removed OpSw 36 from the DCS51 configuration page, as it's not supported by that command station.
  • provided two MRC decoder definitions
  • Layout Editor - The click area for turnouts now increases to match larger turnout circle sizes (Steve Todd)
  • updated the Zimo programming script for additional functions
  • Updated the About dialog to now incorporate the application name in the title bar and to include copyright information in the window itself.
  • Following input from Dave Merrill, updated the audio documentation to better clarify the use of velocity with audio sources.
  • updated the Zimo version 28, 30 and 31 decoders.
  • changes to Virtual Sound Decoder:
  • New, consolidated user interface keeps all decoders in one window
  • New locations manager makes setting physical locations easier
  • New, smoother sounding Diesel engine model
  • Numerous bug fixes in various areas (and, likely, new bugs!)
  • Usability improvements including tool tips
  • "Load VSD Files" window remembers the last folder you visited
  • New Listener model handles listener location and orientation
  • New Validator catches errors in VSD files when the file is loaded