RealSimControl - System Architecture

The central control unit of the RealSimControl system is a single "master" controller board Mega2560 (Arduino2560) with RSC firmware uploaded to it only once (until next firmware update).

  1. All toggle, momentary, rotary switches and encoders are connected to the system using simple input extension boards (multiplexers), totally up to 500-800 digital inputs can be configured (depending on how many pins you reserve for output devices). Also, direct connection can be used for simple cockpits.
  2. Up to ~1000 LEDs can be connected using the output extensions - LED drivers, up to 64 LED for each extension. Also, direct connection can be used for few LEDs in simple cockpits.
  3. Up to 64 seven-segment displays (or displays plus LED drivers) can be connected to the system, using output multiplexers. A few indicators can be connected directly to the master board.
  4. Additional "slave" controller boards (Arduino Nano/Uno) are used: for servos (up to 32), stepper motors (8-19 motors now), LCD displays (12 LCDs) and key matrix inputs (+176 buttons). More slave boards can be added in future.
  5. Also, character LCDs can be used with "direct" connection, in case if you don't want to use the slave LCD board and have many free pins, or 12 LCD on the slave board is not enough.
  6. You can connect up to 24 PWM-driven moving-coil gauges or other PWM controlled devices or LEDs using one TLC5947 PWM driver or connect up to 15 directly to the master board if you have free pins not assigned to inputs/outpus.

All pins that are available in the CONFIGURATOR can be assigned for inputs/outputs or extensions

    Functions of the control/address bus pins:

  • Pins #22,23,24,25 are reserved and used as four address lines (S0 ... S3) for all multiplexer boards and directly connected LCDs.
  • These signal lines are reserved for outputs only - LCD, 7-segment displays and LED drivers, see more in the related sections:

  • #26 - "S (SIG)" Output port for OUTPUT extension boards
  • #27 - "L" - Control signal for all 7-segment displays (except TM1637), Serial LEDs, PWM
  • #28 - "D" - Data signal for all 7-segment displays (except TM1637), Serial LEDs, PWM and LCD displays.
  • #29 - "T" - Control signal for TM1637 7-segment displays only
  • Note: These 8 pins are configured as outputs, so you may think about common precautions not allowing outputs overload when you mistakenly short the pin to the GND. You can add serial safety resistors (30 - 100 ohm to each signal line) for current limiting, but in RealSimControl firmware these outputs are always in "low level" and for only a very short period of program time they can be in a high level state, so it's unlikely you will overload the address line.

  • The pins #14...19 can be used for serial communication with slave driver boards (steppers, servo, LCD, matrix).
  • The pins #10, and 50-53 can not be not used in LAN version, they are reserved by Ethernet module.

NOTE: The +5V output pin can be used as a source for all multiplexers connected to RealSimControl bus and also it can be used to power some low-current output devices. See more detail about system powering here.

You can create a flexible modular system and have full set of input controls for any complex cockpit and easily expand it by adding more extension modules at any time.


The RSC firmware is a heavily optimized program code, written from scratch (without using third-party Arduino libraries) to handle a large number of inputs, synchronize data control for a large number of different input/output devices, exchange data between plugin and “slave” boards.

RSC interface doesn't allow to use the controller board as a "usual" Arduino and users can not add any custom code, as there is no Arduino sketch, and the plugin uploads firmware directly to the board. At this moment the Atmega2560 is used as a convenient and easily available controller platform for RSC firmware.

The system is designed to work with Roman's SimVimX plugin. The latest stable RSC firmware is usually included in the plugin. The RSC Firmware is loaded only once, directly from the SimVimX plugin menu at the first time, or automatically on updates, as described below or in the SimVimX page.

Also, I can provide the latest Firmware version here below, or beta versions on the Boosty blog or Patreon as additional file that regular subscribers can download and place it to the SimVimX plugin folder after that it will be uploaded automatically. Without this file the in-built firmware will be used.

Database (SimVimX.dat file) Sept 2, 2022
>> Latest changes description Database file / firmware + plane conversions

Fresh (first time) Firmware upload

First time Firmware Upload

  1. Open the "I/O Hardware" window from SimVimX plugin menu.
  2. Make sure the master board (Mega2560) is not connected to USB and click the "[Continue] button.
  3. Plug the master board (Mega2560) USB cable into X-Plane computer USB port.
  4. Click the button >> "Master" in the Firmware Upload section on the left. The [Upload] button will appear in the window.
  5. When you see "Controller Board Connected" click "UPLOAD" . Wait until firmware upload is complete (about 3-5 s).
  6. If you need to upload the Ethernet firmware version set the "Ethernet" checkbox before pressing "Upload".

  7. After upload the plugin will connect to this controller automatically.

On successful connection you will see the messages "Master Board: Connected (USB/LAN)" and "Configured: 1 Input, 1 Output"
This means your board is working correctly, and you can start wiring all input controls and output devices to the controller and use the Configuration tool to assign all of them, but before you can run a simple test to make sure:

  • Load some standard X-Plane aircraft (Cessna or Baron 58). Connect a toggle switch to pin #5 / GND and flip it on/off.
  • The on-screen Pitot switch will change its position accordingly with your real switch. The on-board LED on the master board will change its state (Pitot Heat is on/off).

Connection, notes

  • If you have changed the configuration "data.cfg" file while X-Plane is running, just click the "Reload Config" button in the Status window.
  • The plugin should always establish connection automatically every time X-Plane is started, no matter how many times you have done it.
  • If you use Ethernet firmware instead of USB you don't need USB cable to be connected until you will need to upload a new firmware version.
  • Note for Linux users: Some Linux distributions do not grant the user access to serial ports by default. In this case you need to add your user name to the "dialout" group.

    • Firmware Auto-Update

      The plugin checks the currently used firmware version on connection, and if it needs updating (the new stable firmwre is included to the plugin or plugin finds a beta RSC file in the plugin folder), the program uploads the new firmware to the board and then establishes connection. There's nothing more for you to do for the serial USB version.

      • For Ethernet version you need to connect your master board to USB (or reconnect it) and click "Upload" - just like during the first upload.

      Alternative controller boards

      You can use any of the Mega 2560 based controller boards available on the market. In the photo you can see three mini controller boards that are tested with RealSimControl / SimVimX, the firmware was uploaded to every of these boards from SimVimX plugin menu without any problems.

      There are some other atmega2560 controller boards on the market like "Crumbuino-Mega", various "core" modules. You can find them yourself using such keywords as "2560 core", "atmega2560 mini", etc.

RealSimControl / SimVim / SimVimX 2012 - 2022