JMRI (Java Model Railroad Interface) is the most popular open-source DCC control software in the hobby. Tens of thousands of layouts run JMRI — and for good reason. Its throttle system, turnout control, and programming track integration are mature, reliable, and free.
RailScanPro does different things: inventory management, AI photo identification, car routing, dispatch management, and community features. The two platforms complement each other naturally, and RailScanPro's integration connects them at the right seams.
The Division of Labor
Think of JMRI as the layout's nervous system — it handles electrical signals, decoder programming, and physical control of locomotives and turnouts.
Think of RailScanPro as the layout's brain — it knows what the trains are hauling, where they're supposed to go, and what happened in the last ten operating sessions.
| What JMRI Does | What RailScanPro Does |
|---|---|
| Throttle control | Inventory management |
| Decoder programming | AI photo identification |
| Turnout control | Car routing & waybills |
| Block detection | Dispatch management |
| Signal logic | Valuation & insurance |
| WiThrottle server | Community & marketplace |
Roster Sync
The integration starts with your locomotive roster. Most JMRI users have spent significant time building a roster — entering DCC addresses, decoder types, speed tables, and function mappings for each locomotive.
When you connect RailScanPro to JMRI, it reads your roster automatically. Each entry in JMRI becomes an item in RailScanPro (or is matched to an existing item by road number). You keep all your JMRI configuration; RailScanPro adds photos, AI identification, valuation, and the other inventory layers on top.
The sync is one-directional: JMRI is the master for DCC data. RailScanPro doesn't write back to JMRI. This respects JMRI's role as the authoritative source for hardware configuration.
Block Occupancy on the CTC Panel
RailScanPro's dispatcher view includes a CTC (Centralized Traffic Control) panel — a live display of your track schematic. When connected to JMRI, block occupancy and turnout positions update in real time as trains move and operators throw switches.
This creates a true dispatcher role: someone watching the board while crews operate, issuing movement authorities and managing meets and passes between trains. It's the closest thing to prototype CTC operation you can do on a model layout.
The Setup Process
- Enable JMRI's JSON/WebSocket server (in JMRI Preferences → Web Server)
- In RailScanPro, go to RailCommand → Integrations → JMRI and enter your JMRI machine's IP address
- Click Sync Roster to import your locomotives
- Start an ops session — block occupancy data feeds into the dispatcher panel automatically
The full technical walkthrough is in the JMRI Integration Guide.
Do You Need JMRI?
No. RailScanPro's car routing, waybill generation, and session management work without any hardware connection. Many operators use RailScanPro to generate switch lists and run a session entirely on DC with conventional block control — the software provides the organization even without the hardware link.
JMRI integration is an enhancement, not a requirement.
Next Steps
- JMRI Integration Guide — technical setup steps
- Car Cards & Waybills — the operations layer that sits on top of any hardware
- Track Schematic Editor — build the layout diagram that connects with JMRI