Modeltrain Software

There are many different software available (some of them as open source) to control a modeltrain layout, but none of them are really realistic in terms of different components that control the real world trains. I wanted to have many interlockings, an application with a GUI to access the interlockings (like ILTIS by Siemens, used by many Swiss Rail Operators including SBB) and also an application which acts as a driver for the trains running on the modeltrain layout. So i started developing my own solution which I am still improving gradually (in my spare free time).

To test out my software I also need a physical track layout. After starting with a layout on the naked floor i realised that this couldn’t be a permanent solution so I began to plan for a bigger layout with wood elements and multiple height layers. I documented the building process in the Stummiforum (German)

Tracks on the floor

The start: Tracks on the floor


The current situation and layout


The software consists of different independent modules and pieces which can run on different machines and act as a distributed system. Currently the following modules (most of them written in C#/.NET) are in use:

  • a track-editor to create the layouts
  • a Python application to act as a gateway (SRCP Server) between the Märklin CAN-Bus and the other components
  • interlocking application to simulate an interlocking (at the moment 3 instances are running to control the whole layout)
  • an ILTIS-like application to act as a GUI for the control of routes, streets and for train disposition. The actual drawing is done via WebGL and displayed with the Chromium framework inside the C#/XAML application.
  • a locomotive-driver (actually its a Server with a GUI client application) to control the rolling stock (automated based on routing information from the interlockings or manually via keyboard or gamepad)

Below you can see a screenshot from the ILTIS-GUI application: