Release Notes for JMRI 4.0 release
Date: July 13, 2015
From: Matthew Harris
Subject: Production version 4.0 of JMRI/DecoderPro is available for download.We are very pleased to announce that the 3.11 series of JMRI test releases has resulted in a version that's good enough to be recommended for general use, including by new users. We're therefore making that version, "Production version 4.0" available for download today.
This JMRI version requires Java 1.8. To use this or any later JMRI test or production releases, you'll have to update the Java on your computer to Java 1.8 or later.
Warnings:See the JMRI 3.10.1 release note for older warnings that may be relevant to you if you're updating from an earlier version.
The old DecoderPro has been removed from the distribution package and DecoderPro 3 has been promoted to be the only available DecoderPro version. Existing custom launchers that launched the old DecoderPro should continue to function without change or issue. If you absolutely cannot use the new DecoderPro user interface, we suggest using PanelPro instead, as with the exception of a different icon and different fixed buttons on the main window, PanelPro has an identical user interface to the old DecoderPro. See below in Miscellaneous section for usage of "MakeOriginalDecoderPro.py" script. More information on "Retrieving "legacy" DecoderPro from versions prior to 4.0.x
JMRI 3.11.3, and therefore this version, removes some files that were present in earlier versions. Failure to remove these can result in some portions of JMRI (notably the web server) failing to function correctly. If you are updating an existing JMRI installation to this version on Linux, you must remove any older version of JMRI or unpack this version of JMRI in an alternate location. The recommended update procedures for JMRI on Microsoft Windows (run the installer) and Mac OS X (open disk image and drag to final location, e.g. Applications folder) remove/replace the older version of JMRI, ensuring that these obsolete files are not present.
This release uses JDOM 2.0.5, which requires some code changes if you are directly calling the parts of JMRI that interchange XML objects.
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.
If you are making a direct connection to a Intellibox unit via serial or USB, you will have to reselect your preferences. See the Uhlenbrock support page for instructions.
If you are using an NCE USB adapter, you will have to reselect your preferences the first time you use a JMRI 3.11 version (if you set them using JMRI 3.10 or earlier). See the page on configuring JMRI for NCE for instructions.
The Save button in the Preferences window now only prompts for restarts if required. There may be instances when pressing save incorrectly fails to prompt to restart JMRI or prompts to restart JMRI when it should not.
Because of internal code changes, this version of JMRI may not be compatible with CATS 2.34 or earlier. Keep using JMRI 3.10 with CATS until there's a CATS update that says it will work with JMRI 3.11.
The XmlIO web service has been removed. All users who were relying on the XmlIO API are recommended to begin using the JSON API. inControl web throttle users are recommended to begin using webThrottle instead, or invest in devices that can support webThrottle, the iOS WiThrottle, or the Android Engine Driver.
Known problems with this releaseThere's a problem with this release where it will hang if a LocoNet device (only LocoNet, not others like NCE, etc) isn't present where it was configured to be. The 4.0.1 production release was created to fix this. If you're encountering this, please update to JMRI 4.0.1.
The OpenLCB library in this version has a bug in its alias calculations which prevents JMRI from communicating occasionally. A patch has been submitted to the OpenLCB group. In the meantime, the workaround is to restart JMRI and/or the node and try again; that might allocate different alias values.
We recommend that you verify the downloaded files using the provided sha256 key.
Please use these links for downloading:
Changes since production release 3.10.1
Default programmer choiceThere 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 modeDave 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.
Dennis Miller 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
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
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.
- Mark Riddoch 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 (Matthew Harris)
- Reduced logging level to debug for regular message reply loop to avoid unnecessarily polluting the console log
- Ken Cameron added support for inverting turnouts on MRC systems.
- Ken Cameron has 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.
- Dave Heap 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.
- Dave Heap 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.
- Now supports version 0.61.13 for programming (KD)
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.
Egbert Broerse improved the signal-system and signal mast setup help files.
Dave Sand improved the SPTCO-1930 definitions.
Egbert Broerse improved the signal documentation.
Suzie Tall provided additional signal icons UP-2008 (Patch 1061)
Egbert Broerse improved the signaling system documentation
Balazs Racz: 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).
Oscar Moutinho updated the DB-HV-1969 signals definition to improve speed control and icons
The signal speed defintion has been updated for consistent operation. Also, a release test has been added to keep it that way.
Randall Wood fixed a NullPointerException error sometimes seen when using signal definitions from a user's own files.
John Lang provided an update to NYCS-1956 to correctly handle held signals. (Patch 1068)
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. Mast files contain page references for the aspect appearances in the 1969 rulebook.
Provided by Suzie Tall, patch 1067
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.
- Updated the Function Mapping page to emphasise that "label" and "tooltip" attributes should not be added to a "fnmapping" element (they are ignored).
- Michael Mosher improved the BLI P2 definition
Economy Series 6: version (CV7) starts with 51 instead of 52 (Alain Le Marchand)
SFX Sound Decoders: Extended Series 6 updated for 16bits Sound Projects v3.0 (John McMasters)
Doehler & Haass
Global update (Pierre Billon)
- 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.
- Mathias Rufer and Dave Heap added an ESU LokPilot Standard V1.0 definition.
- Dave Heap 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 recognised 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.
- Xavier Chazelle 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
- Alain Le Marchand 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)
- Alain Le Marchand 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 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.
- Dick Bronson provided an update to the SignalMan decoder file
- 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 (Alain Le Marchand)
- 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.
- FD-R Basic 2 new definition provided by Pierre Billon, patch 1066
- Michael Mosher 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.
- Added Trix 66840 (Bj�rn Kvisli - Alain Le Marchand)
- Added definitions for Trix Sound HO BR V160 and BR 41 (Alain Le Marchand)
- Nigel Cliffe and Mark Waters did a lot of work on the Zimo decoders.
- Add DCCconcepts Zen series of decoders (Alain Le Marchand)
- Peter MacKenzie added definitions for the Hattons MD4 and Gaugemaster Opti DCC25 decoders.
- Digikeijs (Digirails): Added definition for Function decoder DR80015 (Alain Le Marchand)
- Hornby: Added definitions for Hornby TTS Class 37 and Class 40 (Nigel Cliffe)
- 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. See http://jmri.org/help/en/package/jmri/jmrit/operations/Operations.shtml#TrackBlockingOrder for more info.
- 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.
- 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 reseting 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. Thanks to Dave Waraxa for finding and reporting the two last problems.
- Bug #520 fixed. Actions Delayed Turnout and Delayed Sensor now toggle states correctly.
- 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).
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. (Randall Wood)
Closing the Preferences window now prompts to save or discard preferences if the preferences have been changed. (Randall Wood)
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.
Fix an issue preventing the Web Throttle from handling certain turnouts. (Randall Wood)
Fix an issue preventing the Web Throttle from loading rosters. (Randall Wood)
Fix an issue preventing the Web Throttle from setting routes. (Ken Cameron)
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. (Randall Wood)
Pete Cressman made the following changes to warrants:
- Fixed bug #481 "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.
- 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.
- Randall Wood 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. (Randall Wood)
- 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). (Randall Wood)
- Fixed an issue where editing the DecoderPro 3 Preferences could cause the configuration to be corrupted or destroyed. (Randall Wood)
- Lisby 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 neighbours 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. - KD
- Fixed an issue where WebThrottle could occasionally send unwanted emergency stops with LocoNet and CBUS systems. (Bug 516) - Randall Wood
- 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. (Matthew Harris)
- Added ability to set timeout for automatically starting with a profile. (Randall Wood)
- 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. (Matthew Harris)
- 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. (Randall Wood)
- Fixed the Windows installer so it installs DecoderPro as "DecoderPro" instead of as "DecoderPro3". (Randall Wood)
- Added the native OpenAL and JOAL libraries for ARM Linux platforms. (Matthew Harris)
- Howard Watkins, Matt Harris and Randall Wood 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. (Pete Cressman)
- Fixed can't add new signals bug in OBlocks. (Pete Cressman)
- Randall Wood fixed a problem with invalid schema locations in the BR-2003 signal aspects definition and one of the decoder definition tests.
- Pete Cressman fixed the Portal/Signal tables to now conform with Speed Profiling.