Train Sim World + Arduino · "Model train" in Italian
Bridge your custom hardware to Train Sim World
Features · Getting Started · Supported Hardware · Development
Build your own train controls with real throttle levers, brake handles, switches, and gauges — then connect them to Train Sim World through a simple desktop app. No programming required. Wire up your Arduino, flash the firmware with one click, and start driving.
- One-click firmware flashing — flash Arduino boards directly from the app, no extra software needed
- Guided calibration — step-by-step process to calibrate your levers and controls
- Auto-detection — automatically recognizes which train you're driving and loads the right configuration
- Visual control mapping — map any hardware input to simulator controls using the built-in API explorer
- Windows virtual joystick — expose selected calibrated levers and buttons as one removable DirectInput joystick with eight axes and 32 buttons, independently of Train Sim World
- I2C display modules — show live simulator data (speed, brake pressure, gear position) on HT16K33 7- or 14-segment LED displays wired to your Arduino
- Lua scripting — write custom logic to flash warning LEDs, react to speed changes, automate sequences, and more (scripting guide)
- AI-assisted setup — describe what you want in plain language and let Claude configure your train via MCP integration
- Train Sim World 6 with the External Interface API enabled (see below)
- An Arduino board — see Supported Hardware
Virtual joystick mode additionally requires Windows 10 or 11. The signed vJoy
runtime is included in the Windows NSIS .exe; no separate driver download is
needed when that installer is used. The MSI does not manage the vJoy driver
lifecycle. See Getting Started.
Download the latest installer for your platform from the Releases page:
- Windows: NSIS installer (
.exe) or MSI — the Visual C++ Redistributable is bundled, no separate install needed. Virtual joystick mode requires the NSIS.exe; the MSI does not run Trenino's vJoy install, ownership, or shared-driver uninstall hooks. - Linux: AppImage (
.AppImage) — download, mark as executable, and run
macOS builds are not provided as pre-built releases. See the Development Guide to build from source.
Train Sim World 6 ships with an External Interface API for third-party apps. To enable it:
- Right-click Train Sim World 6 in Steam → Properties
- In the General tab, add
-HTTPAPIto Launch Options - Launch the game once to generate the API key
Trenino detects the API key automatically on startup.
| Board | MCU | Analog Inputs | Digital I/O | Status |
|---|---|---|---|---|
| Arduino Nano | ATmega328P | 8 | 14 | Fully tested |
| Arduino Nano (New Bootloader) | ATmega328P | 8 | 14 | Fully tested |
| SparkFun Pro Micro | ATmega32U4 | 12 | 18 | Fully tested |
| Arduino Uno | ATmega328P | 6 | 14 | Supported |
| Arduino Leonardo | ATmega32U4 | 12 | 20 | Supported |
| Arduino Micro | ATmega32U4 | 12 | 20 | Supported |
| Arduino Mega 2560 | ATmega2560 | 16 | 54 | Supported |
All boards can be flashed directly from Trenino.
git clone https://github.com/albertorestifo/trenino.git
cd trenino
mix setup
mix phx.serverVisit localhost:4000. See the docs folder for architecture and development guides.
CC BY-NC 4.0 — free to use and modify for non-commercial purposes. For commercial licensing, contact alberto@restifo.dev.
Inspired by MobiFlight.