JMRI® is...


By the community of


JMRI tools for working with your layout:

Layout Automation

Use JMRI to automate parts of your layout and operations:

Supported Hardware

Devices, command stations, networks, and protocols:

JMRI Setup and Installation

JMRI environments...

JMRI Help:
Contents/ Index
Glossary/ FAQ

Donate to JMRI Donate to

JMRI: Storing Your Work

What Everyone Should Know

This page provides the basic information you should know about what commands are used to store the data you create and update in JMRI. A companion page with more information for advanced users about when, how, and where JMRI stores data is available here.

JMRI's model for creating, updating, and storing (or discarding) the information it needs to perform its various functions depends on which JMRI function you are dealing with. Certain kinds of data are handled completely automatically. Others are created by you and updated by JMRI. For still others, you have the ability to control whether or not to change or keep that data from one run of JMRI to the next. For example, saving changes to roster entries is separate from storing away your layout configuration.

Unfortunately, JMRI does not always notify you if there is unsaved data when it exits (although the community of developers is constantly working to improve this). For example, when you create a Sensor in the Sensor Table, it will appear in the Sensor Table Window, but it will be gone if you close JMRI - unless you take one of the actions listed below to save it.

To ensure that data you create (or is created and updated for you) is kept as you require, you should understand when and how the different kinds of data get saved to a disk file, or not, and, in the case of CVs, to your locomotives and other DCC decoders. This page is intended to give you the basic information you need to know.

Things you need to take action to "store" or "save"

JMRI will sometimes (but not always) notify you when you might want to "save" or "store." These are the places user action may be required:

  • Preferences (all apps)
    • All Preferences items: Edit⇒Preferences, Hit "Save"

  • DecoderPro
    • Roster entry:
      • On an individual roster entry window: Select File⇒"Save" or "Save to Roster"
      • On an individual roster entry window: Select "Write" to Decoder in order to change CVs
    • Roster Group: Stored Automatically

  • PanelPro
    • Panels: Panel⇒New Panel, or from any panel editor: Select File⇒"Store Panels..." (command also available on the PanelPro main window: Panels⇒"Store Panels..."). Note that this command also stores all tables so it performs the same function as "Store configuration and panels" that appear on Table windows.
    • Tables: Tools⇒Tables⇒[Specific Table], Select:
      • File⇒"Store configuration" (stores ALL tables) or
      • File⇒"Store configuration and panels" [which does the same as "Store Panels" in the panel editors]
    • Fast Clock: Tools⇒Clocks⇒Set up Fast Clock..., then same as for Tables.
    • Images/Icons: Hit "Save Image Index"
    • Scripts: Panel⇒Script Entry, Hit "Store..."
    • Throttles: Tools⇒Throttles⇒
      • "Save Throttle Layout"
      • New Throttle⇒File⇒"Save Current Throttle"
      • New Throttle⇒File⇒"Save Current Throttle As..." [additionally allows you to save custom function buttons]

  • DispatcherPro
    • Tables (Sections, Transits): Tools⇒Tables⇒[Specific Table], Select:
      • File⇒"Store configuration" (stores ALL tables) or
      • File⇒"Store configuration and panels" [which does the same as "Store Panels" in the panel editors]
    • Dispatcher Options: Tools⇒Dispatcher⇒Options⇒"Save Options"

  • OperationsPro
  • SoundPro
    • Audio Tables (Listener, Buffer, Sources): Tools⇒Tables⇒Audio, Select:
      • File⇒"Store configuration" (stores ALL tables) or
      • File⇒"Store configuration and panels" [which does the same as "Store Panels" in the panel editors]

So make sure your hit "Save" and "Store" for all the different tools you use within JMRI and you will always have what you worked on the next time. And if there is a problem, remember that JMRI keeps backup files when it writes your data to permanent storage, either automatically or by your command, so look for files with the ".bak" suffix and you'll be able to recover from most missteps.

[Go to top of page]

Lost Panels: An issue commonly reported on the JMRI user forum is that panels have disappeared on restarting PanelPro and opening a panel file. Often, this is because someone selected "Store configuration" rather than "Store configuration and panels" and overwrote an existing panel file. Don't panic - the backup copy (in the directory "backupPanels" in the Profile Location) is there. Best practice in working with PanelPro is to almost always use "Store configuration and panels" or "Store Panels..." where it appears, and to rename the file you are saving so you have multiple versions named by you to go back to if necessary.

Things that are stored automatically

  • Window positions and sizes (not all are saved)
  • DecoderPro
    • Roster entry: Automatically stored when changed on the main roster page
    • Roster Group: new, including changes to Roster Group Table Association; also renaming and deletion of groups
  • OperationsPro data: automatically stored when data is changed.

[Go to top of page]

Things that are NOT stored after you quit JMRI

Some data you will create during your JMRI session or that will be created via communication with your layout is NOT saved after you quite JMRI. This is normal as this data represents the current state of your trains and layout (e.g. turnout position) so requires feedback from you or your layout. These transitory data are:

  • Sensor state
  • Turnout state
  • DispatcherPro Trains
  • [Possibly incomplete list]

[Go to top of page]