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.
Notes:
JMRI is now only available under the
GNU General Public License. For more information, please
see our
copyright and licensing page.
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 release
There'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.
Download links:
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
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
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
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 Fleischmann 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
- 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
MRC
- Ken Cameron added support for inverting turnouts on MRC systems.
NCE
- 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.
SPROG
- 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.
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.
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)
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. 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).
BLI
- Michael Mosher improved the BLI P2 definition
Digitrax
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.
ESU
- 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.
Fleischmann
- 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
MRC
- 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 website.
RR-CirKits
- Dick Bronson 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 (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.
TAMS
- FD-R Basic 2 new definition provided by Pierre Billon, patch 1066
TCS
- 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.
Trix
- Added Trix 66840 (Bjørn Kvisli - Alain Le Marchand)
- Added definitions for Trix Sound HO BR V160 and BR 41 (Alain Le Marchand)
Zimo
- Nigel Cliffe and Mark Waters did a lot of work on the Zimo decoders.
Miscellaneous
- 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)
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. 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 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 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.
Logix
- Bug #520 fixed.
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. (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.
Web Server
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)
Warrants
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.
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.
- 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.