ArdSimX Interface for home cockpit builders

Started in August 2016, supported X-Plane Interface for Linux, PC, Mac.
Precursor of latest SimVimCockpit Interface.

Please note: Although ArdSimX is active and supported, take in account that we've launched the new SimVimCockpit Interface, which is our primary project now.

SimVimCockpit is considered a replacement of all our previous interfaces, since it offers much more I/O capabilities and requires less efforts and costs to use. Check all news and development status on our Patreon page or blog.

ArdSimX project was developed as successor of our previous interfaces, but unlike them, ArdSimX should have provided input/output control for your home cockpit without any programming and electronics skills.

ArdSimX interface is not just a plugin, it's a composite system consisted of the firmware for the controller (Arduino) and plugin, which cannot work separately and are used together only!

Note: Arduino is used only as convenient controller platform for ArdSimX firmware and not supposed to be programmed by user. You can use up to 8 Arduino-compatible boards for one system, with both LAN and USB firmware uploaded, in any combination.

Note: The ArdSimX plugin also is used for our SimVim Panels


Download ArdSimX.zip archive and save it in some folder.

Get Arduino IDE software from the official Arduino website: IDE Releases. You can use any version of IDE greater than 1.8 for ArdSimX.

If you don't have ArdSimX Library installed, start Arduino IDE, open menu --> "Sketch" ---> "Include Library"---> "Add .ZIP Library..."

In the opened dialog select downloaded ArdSimX.zip file, and ArdSimX library folder will be added to Arduino libraries folder.

If you have previously installed ArdSimX and you download a new firmware version, make sure you've replaced the old version. (you can just replace the existing ArdSimX folder in your Arduino libraries folder if you had it previously).

ArdSimX Plugin Installation:

Unzip the downloaded ArdSimX_Plugin.zip file "AS-IS" into your X-Plane/Resources/plugins/ folder.

The "ArdSimX" item in X-Plane "Plugins" menu should appear after X-Plane start. This menu has three submenu items: Status, Reconnect and Reload Plugins (optional).

In the "Status" window of ArdSimX version 1.30+ you can see curennt connections status, the "Reconnect" button (used to let plugin to send new configuration to Arduino), the "PAUSE" button (used to pause communication with plugin and let you to upload new firmware code).

ArdSimX - Getting started

--- Latest update - May 18, 2018, v 1.31 (see Versions history here)

When updating ArdSimX, make sure you have both the plugin and the library of the latest versions.

All you need to start - upload the ArdSimX sketch to your Arduino and configure inputs/outputs pins, it can be done just in few minutes to try. ArdSimX Configurator allows you to easily link all your input controls and output instruments to X-Plane, no need Arduino programming and other libraries using.

Upload ArdSimX to Arduino

To upload the ArdSimX sketch to your Arduino - launch Arduini IDE, connect your Arduino to USB, then: - open ArdSimX sketch from examples menu -- Select right Arduino board type -- Select correct USB port (if needed) -- Click "Upload button:

If using LAN connection, uncomment the #include <Ethernet.h> line.

What you need to start:

  • Take any toggle switch to test digital inputs.
  • If Ethernet connection will be used, attach Ethernet module to Arduino board.
  • Connect your Arduino to USB port of the main X-Plane PC.

Testing communication for ArdSimX firmware

  1. Connect the toggle switch to pin #5 of your Arduino. The sample data.cfg file in ArdSimX plugin folder will be used.
  2. Start X-Plane, open ArdSimX plugin "Status" screen. Enable USB checkbox if USB is used. Otherwise the plugin will not scan USB ports.
  3. You will see connection status and a rotating bar during the search process (the plugin scans the IPs or USB ports if enabled).
  4. When Arduino responds and is configured you will see the message "Connected to" and the list of Arduino boards.
    (including the number of inputs/outputs configured for each board numuber).
  5. When you throw a switch connected to pin #5 you should see a message from this Arduino #1 in the status screen: D5+ / D5-.
  6. You will see how the Pitot switch toggles in the on-screen panel and the on-board LED of your Arduino switches On/Off accordingly.

In these screenshots you can see the board with LAN connection only and two boards connected with USB and LAN:

Please note: having pluging communicating with Arduino in ArdSimX will prevent you from uploading a program code to your board. To upload code without exiting X-Plane, first press the "PAUSE" button in the "Status" window. After uploading the code to Arduino, press "Reconnect" button.

When you've made sure that your ArdSimX is working with your Arduino, you can start configuring it for your own inputs and outputs.

  • When you use "Reconnenct" or restart the plugin it reconnects to all Arduino boards and receives the current state of controls.
  • If an Arduino board configured for USB communication has been physically connected to USB port while X-Plane was already running, or, if you have changed the config file while X-Plane is running you should press "Reconnect" button to read the new config.

If you see "Connection status - Awaiting connection" message and a rotating bar in ArdSimX Status window for too long (more than 30 sec) try using "Reconnect" button and/or reset Arduino with the on-board "reset" button and wait for connection.

If the plugin still didn't find your Arduino board, see troubleshooting (or contact us).


- ArdSimX Firmware, v1.31 - ArdSimX Plugin, v1.31

ArdSimX - Troubleshooting

Follow these steps only if ArdSimX plugin didn't find your Arduino after you went through the previous "Getting started" steps.

1. General guidelines:

  • Make sure you have correct version of ArdSimX library used when uploaded base sketch to Arduino board.
  • Check your Arduino powering in case you have many devices connected to it. See this page for instructions.

2. LAN communication:

  • Check your LAN connections, router settings, switch, make sure you're using the right cable.
  • Check your firewall settings (port 5080) or admin settings and access rights.
  • If you have more than one active network, make sure Arduino is connected to the same network that the plugin detects in X-Plane
  • If Ethernet module has a sticker with MAC address, try to use it, adding the line in the "setup" section of Arduino code (see the "ArdSimX_LAN_Options" example sketch)
  • If you still have no connection, you can try to define your Arduino IP and/or X-Plane IP addresses, see the "ArdSimX_LAN_Options" example sketch.

3. USB communication:

  • Make sure you have commented (or deleted) the #include <Ethernet.h> line in your sketch.
  • Some serial drivers on Windows and MasOS Sierra systems are known to cause problems. Trying different drivers might work.
  • If X-Plane crashes just after the flight loading, try to remove other USB devices that communicate with computer using virtual serial port (like those bluetooth usb connectors used for smartphone communication programs etc.).
  • The length and quality of USB cable can be a problem sometimes. Use a good cable.
  • Use external power supply for all additional deviced connected to Arduino.
  • In your Arduino IDE, check the name of the port your Arduino uses. ArdSimX for Mac supports port names starting with "/dev/tty.usb..." and "/dev/tty.wchusb...", for Linux supports port names starting with "/dev/ttyUSB" or "/dev/ttyACM". ArdSimX for Windows checks ports from COM1 to COM64. If your Arduino is using a different port name, please contact us and tell us the port name so we can make the appropriate changes in the plugin.

ArdSimX Interface History


May, 18, 2018
- Corrected "Reconnect" issue with Ethernet.
- Added option for using two +/- buttons instead of any encoder.
- Some small bugs corrected.

May, 11, 2018
- Encoder processing algorithm for different types of rotary encoders is finished.
- Now you can point out specific detents type for each single encoder in the data file.
- Acceleration sensitivity can be set for any encoder (from strict single-step to maximum acceleration).
- Fixed all cases of incorrect encoder processing (acceleration and fine-step movements).
- Independently from acceleration curve and type of detents phase, an encoder always makes one step when rotated slowly to the next detent position.
NOTE: format of ArdSimX base sketch was changed! "BoardNumber" is no longer used, and instead of "ArdSimScan" the ArdSimX(#) function is used in the loop, where # is the board number. Please correct your working sketch!

Plugin 1.22
Library 1.26
- Changes in "Skip steps" option for encoders.
- Smooth needle/card movement when encoder accelerates ("animation").
1.18 ... 1.25 - Library performance improvements, several bug fixes.
- Some fixes related to reconnection and serial ports.
- Fixed X-Plane event-based inputs reset for USB.
- Matrix Inputs corrected.
- Fixed a bug with analog precision over 100 not working properly.
- Encoder processing algorithm with rotation speed acceleration (still beta).
- Encoder acceleration accounts for frame rate.
Added version control for plugin/library compatibility. An error will be displayed in the Status window if a connected Arduino has an older library version than required by the plugin, and this Arduino will be ignored.
1.15...1.17 Transitional temporary versions
Plugin 1.14
Library 1.14
- Fixed the bug with Serial LED non-range condition not working.
- Output config lines sharing the same ID will all be active again by default, unless an output parameter switch for them is present.
1.13 - Fixed the problem with detection of certain custom datarefs.
- Expanded communication with SimVim Panel. Future support for Raspberry Pi GPIO.
- Buttons can act as output parameter switch (no configurator support yet).
1.12 - Fixed the bug with Programmed Input values not being accepted correctly.
1.11 - Fixed the crash with LAN connection in Windows version.
- Support for inputs from SimVim Panel (v2.3).
- USB_FIX now enabled by default in Windows version.
- Fixed the dot not disappearing when integer exceeds the number of digits on a 7-segment display with "Reverse" flag.
- Experimental quadratic function support for analog input (Q A0 A1 ... line under [A] config section) Update 1.11a: Fixed a bug related to multiple USB connections in Linux and Mac versions.
1.10 - "ardsimx/starter_ignition" command no longer requires "Press-and-hold" functionality configured.
- Added optional step skipping for encoder input (experimental feature).
- Added an option for config.ini - "USB_FIX = 1" (only use if you experience the rare bug with USB communication stopping after "Scanning" finishes).
Update: Fixed a USB-related crash on Mac introduced since v1.9
1.10d for Mac: Fixed inputs not working.
1.9 - Output byte array type datarefs to Arduino (NAVAIDs) - will not work until the Library is updated
- Fixed a bug with press-and-hold commands also executing a momentary action on start
- Implemented custom commands for Starter+Ignition (included in the configurator)
- Optional limits for dataref values controlled by encoders or increment buttons (config - third value in line, example: "1+,500"). Datarefs only.
- For Mac: Added support for USB port names starting with "cu."
1.8 - Press-and-hold for buttons on analog inputs now works properly
- Fixed a crash caused under certain conditions by datarefs with Press-and-hold function
- Inverted Serial LED order on each register to reflect the new connection scheme
- Supports "d" and "b" config identifiers for differentiating between rotary switch digital positions and ordinary digital buttons
1.7Fixed a bug with continuous commands (such as engine ignition) and test buttons. Could potentially lead to crashes.
1.6 - More options for Indication Test button (7-segments, direct and serial LEDs)
- Added custom dataref for blinking LEDs (autopilot)
- Added Servo support
1.5cFixed issue with Analog inputs not working when precision is configured between 51-100.
1.5bFixed typo in Stepper initialization code.
1.5aFixed a crash when connected to network router with broadcast support.
1.5 - Internal code optimizations. More unification between input and output config
- Added reverse digits order for 7-segment display
- Cyclic mode button can now be configured with the number of steps to increment
- Sends individual number to connected devices
- Modified "Repeat" function for commands
- Fixed Encoder mode output to LEDs
- Added Encoder mode output to Serial LEDs and Programmed Output
- "Test 7-segment display" button
Hotfix: Fixed crash when connecting to Arduino with no config for this Arduino present
1.4Fixed crash if array number is specified as "0" in config file.
1.3Multiple-mode encoders fixed
1.2- Added cyclic toggle buttons support
- Changed repeat button config - now listed in [A] section
1.1ArdSimX Release

© Copyright 2012-2018 - SimVim Design