JMRI Integration Guide

Last updated: July 3, 2026

JMRI (Java Model Railroad Interface) is widely used for DCC decoder programming, rosters, panels, sensors, and layout control. RailScanPro can work with JMRI data in several places, including roster import/export and RailCommand layout import.

What JMRI Can Provide

Feature Provided By
Locomotive roster JMRI roster data imported into RailScanPro
Decoder details JMRI/DecoderPro data used to seed or verify locomotive records
Layout/panel data JMRI panel or layout data imported into RailCommand where supported
Hardware context JMRI can remain part of the local hardware ecosystem
Car routing / waybills RailScanPro (RailCommand)
Inventory, photos, reports RailScanPro

For live train running, prefer the RailCommand desktop app and local runtime workflow. JMRI may still be part of your hardware environment, but RailCommand's operator docs should be followed for live RailCommand sessions.

Prerequisites

  • JMRI 5.0 or later running on a computer on your local network
  • A saved JMRI roster or exported layout/panel file, depending on the workflow
  • RailScanPro access to the target organization and layout
  • A RailCommand layout when importing layout-specific data

Roster Import

Use roster import when you want RailScanPro to know about locomotives already defined in JMRI.

  1. In RailScanPro, open /app/settings/integrations/jmri.
  2. Choose the roster import flow.
  3. Upload or select the JMRI roster data.
  4. Review matched locomotives.
  5. Approve new draft records or update existing inventory records.

RailScanPro is the home for photos, collection details, reporting, and operational assignments. JMRI can remain the home for DecoderPro-specific decoder setup if that is how your railroad is managed.

Roster Export

Use roster export when you want RailScanPro data available for JMRI workflows.

Open /app/settings/integrations/jmri/export and follow the export prompts.

Layout Import

Use layout import when you want an existing JMRI panel or layout to become a starting point for RailCommand.

  1. Create or open a RailCommand layout.
  2. Open /app/railcommand/layouts/{LayoutId}/jmri-import.
  3. Import the JMRI file.
  4. Review topology, blocks, sensors, turnouts, and signals.
  5. Add RailCommand-specific operating details such as industries, staging, car routing, routes, and session data.

Live Dispatching Context

RailCommand CTC and desktop operator surfaces depend on current layout, hardware, runtime, and session state. If your railroad uses JMRI for detectors, turnouts, or command-station access, confirm the RailCommand hardware and runtime setup before assuming live state will appear.

Useful RailCommand pages:

  • Connection manager: /app/railcommand/connection
  • Hardware settings: /app/railcommand/layouts/{LayoutId}/hardware
  • CTC panel: /app/railcommand/layouts/{LayoutId}/ctc-panel
  • Desktop app: /downloads

Troubleshooting

Roster import does not find locomotives - Confirm the JMRI roster was saved/exported and that the file is the one you intended to import.

Imported locomotives do not match existing inventory - Check road name, road number, DCC address, manufacturer, and model number. You may need to approve draft records manually.

Layout import looks incomplete - JMRI panel data may not contain all RailCommand operating details. Add industries, staging, car routing, and session details after import.

Live hardware state is missing - Check RailCommand hardware setup, local runtime status, the command station, and whether JMRI is actually part of the configured live path.

Next Steps