Air Manager Yes!

The best instrument panel tool on the market.

Air Manager is an application which allows you to create your own 2D flight simulator panels. You can run it on the same computer as your flight simulator, or on a seperate computer.
It will automatically connect to your X-Plane, FS2020, FSX or Prepar3D flight simulator on your local network.
Choose your panel from one of the included 23 pre-made panels, or create your own from a library of more than 1000 free instruments.
Is the instrument you are looking for not in our library? No problem, you can create your own by using our simple API in combination with the Lua scripting language.
Panel layout
Choose your panel from one of the included 14+ premade panels, or create your own from a library of more than 400 free instruments.
Flight simulator
Automatically connects to X-Plane, FS2020, FSX or Prepar3d running on the same computer or another computer on your network.
Create instruments
Create or edit instruments with powerful Lua scripting.
Touch control
Control instruments with touch input. Reach and touch just like real life.
Join our active user community and help each other build awesome flight simulators.
Smooth graphics
Animations are smooth, up to 60 frames per second!
Connect buttons, switches, LED's, rotary encoders etc. to your flight simulator using Arduino or Raspberry Pi boards.
Automatic updating
Software updates are detected and downloaded automatically.

Instrument panels

Community panels
Air Manager comes with a library of more than 20 free panels you can choose from!
Complete panels are available for the Cessna 172, Robinson R44 and the Beechcraft Baron 58, among many others. Air Manager allows you to select one of these panels and show them on your computer within seconds!
Premium panels
We offer a selection of premium panels that you are able to buy for a small extra charge.
Premium panels are available for the Beechcraft Baron 58, Cessna 172SP and others. These panels have more polish and have gone through rigorous testing.
Click on the button on the right to see which panels are available for purchase.

Sim Innovations Arduino!

Air Manager and Air Player applications come with Arduino support, even on the Raspberry Pi. This makes it easy to connected all sorts of hardware parts, like switches, buttons, rotary encoders, LED's, potentiometers and much more. All of this is interfaced with an easy to understand API.

For those who want to take it up a notch there's our Arduino library, which can be integrated right into your Arduino Sketch and makes it possible to communicate with Air Manager and Air Player.

Create Instruments

With Air Manager, you can create your own instruments or edit one of the 1000+ community instruments.
Create instruments quickly using an easy to use language called Lua and our powerfull and simple API.
  • Add your own PNG grahics to your instrument within seconds with easy to use functions like img_add_fullscreen() and img_add. Once added, you can move and rotate and hide them with ease.
    my_image = img_add_fullscreen("my_image.png")
    visible(my_image, false)

    my_second_img = img_add(100, 100, 200, 200
    move(my_second_img, 200, nil, nil, nil)
  • Add text to your instrument with txt_add(). Once added, easily change, move and hide the text.
    my_txt = txt_add("hello world", "font:myfont.ttf; size:11; color: black; halign:right;", 0, 0, 800, 200)
    txt_set(my_text, "goodbye world")

    my_second_txt = txt_add("number 42", "font:myfont.ttf; size:11; color: black; halign:right;", 0, 0, 800, 200)
    move(my_second_txt, 200, nil, nil, nil)
  • The canvas allows you to quickly draw shapes like rectangles, circles and triangles. These shapes can be changed dynamically.
    canvas_id = canvas_add(0, 0, 100, 100, function()
      _circle(50, 50, 20)
      _stroke("red", 4) end)
  • Connect to data form your Flight Simulator with easy to use functions. You tell us what data you want, and we will take care of it!
    function new_altitude_callback(altitude)
      print("New altitude: " .. altitude)

    fsx_variable_subscribe("INDICATED ALTITUDE", "Feet", new_altitude_callback)
  • Drive buttons, LED's, rotary encoders, etc... connected to your Arduino or Raspberry Pi device from the instrument code.
    led_id = hw_led_add("RPI_V2_P1_38", 1.0)

    hw_button_add("ARDUINO_MEGA2560_A_D52", function()
      hw_led_set(led_id, 0.5)
      print("LED brightness is set to 50%")


There are various ways to get support from us, this is an overview of all options.


With the support for Arduino, Air Manager can be the heart of your sim. Taking care of the instrument visuals and hardware I/O.

The Arduino Mega2560, Uno, Nano and various clones of these types are supported by Air Manager and Air Player. All it takes you to do is upload Sim Innovations firmware to the Arduino, with our free to use Arduino Installer tool. When this is done, the Arduino is automatically recognized by Air Manager and Air Player, even on the Raspberry Pi.

Up to 16 Arduino’s from each supported type can be connected, giving you a crazy (theoretical) amount of 1696 I/O ports per computer. Should be enough right?


The behavior of the Arduino I/O is scripted in the same easy to learn scripting language as our instruments: Lua

The script can be integrated in existing instruments, or run as a dedicated ‘hardware-only’ instrument. The hardware uses our easy to understand hardware API functions, which has a full range of skills from input to output. No need to learn C++, no compiling, it can’t possibly be easier!



These examples give a brief overview of what is possible with our API, in fact the possibilities are nearly endless. Click here to see the full hardware API. In these examples random Arduino pins and channels were chosen, click here to see the full hardware ID list.

An example on how to connect a button, this uses the API function hw_button_add. In this case we use the button to swap the NAV1 radio frequency.

-- Callback function which is called when the button is pressed
function button_pressed()
    -- Swap the NAV1 radio frequency
    print("NAV1 frequency just swapped")

-- Bind to Arduino Nano, Channel B, Pin A0
hw_button_add("ARDUINO_NANO_B_A0", button_pressed)

An example on how to connect a switch, this uses the API function hw_switch_add. In this case we use a switch to turn the strobe light on and off.

-- This function is called every time the switch has a new position
function switch_callback(position)
    if position == 0 then
    elseif position == 1 then
    print("The switch got changed to position " .. position)

-- Bind to Arduino Uno, Channel A, Pin D7 and D8
hw_switch_add("ARDUINO_UNO_A_D7", "ARDUINO_UNO_A_D8", switch_callback)

Rotary encoder
An example on how to connect a rotary encoder, this uses the API function hw_dial_add. In this case we use the rotary encoder to set the autopilot heading.

-- Callback function which is called when the rotary encoder is turned
-- direction  1: The dial turned clockwise
-- direciton -1: The dial turned counterclockwise
function dial_change(direction)
  if direction == 1 then
    -- Move the autopilot heading up
    print("The autopilot heading was increased")

  if direction == -1 then
    -- Move the autopilot heading down
    print("The autopilot heading was decreased")

-- Bind to Arduino Mega2560, Channel A, Pin D2 and D3
hw_dial_add("ARDUINO_MEGA2560_A_D2", "ARDUINO_MEGA2560_A_D3", dial_change)

An example on how to connect a potentiometer, this uses the API function hw_adc_input_add. In this case we use the potentiometer to set the volume of the COM radio.

-- Callback function which is called when the ADC input state changes
-- 0.0 : GND (lowest voltage)
-- 1.0 : VCC (highest voltage)
function adc_input_change(value)
    print("COM volume: " .. tostring(value) )
    -- Set the COM radio volume
    xpl_dataref_write("sim/operation/sound/radio_volume_ratio", "FLOAT", value)

-- Bind to Arduino Nano, Channel A, Pin D11
hw_adc_input_add("ARDUINO_NANO_A_D11", adc_input_change)

An example on how to connect an LED, this uses the API function hw_led_add. In this case the brightness of the LED will be controlled by the instrument lighting.

-- Bind to Arduino Uno, Channel A, Pin D10
led_id = hw_led_add("ARDUINO_UNO_A_D10", 0.0)

-- Let the simulator value from X-Plane control the brightness
function new_data_xpl(brightness)
    -- The value from X-Plane ranges from 0 to 1
    hw_led_set(led_id, brightness)

xpl_dataref_subscribe("sim/cockpit/electrical/instrument_brightness", "FLOAT", new_data_xpl)

An example on how to connect a servo, this uses the API function hw_output_pwm_add. In this case the PWM output will be controlled by the flaps deployment ranging from 0 to 1.

-- Bind to Arduino Mega2560, Channel C, Pin D5
-- PWM frequency is set to 50 Hz, with a duty cycle of 5%.
output_id = hw_output_pwm_add("ARDUINO_MEGA2560_C_D5", 50, 0.05)

function new_data_xpl(flaps)
    -- We change the duty cycle runtime, between 5 and 15%
    -- These values are about right for a TowerPro SG90 servo
    hw_output_pwm_duty_cycle(output_id, 0.05 + (0.1 * flaps) )

xpl_dataref_subscribe("sim/flightmodel2/controls/flap_handle_deploy_ratio", "FLOAT", new_data_xpl)

An example on how to use the MessagePort library, this uses the API function hw_message_port_add. The MessagePort library can be used to directly communicate between instruments and your own Arduino sketch.

-- This function will be called when a message is received from the Arduino.
function new_message(id, payload)
    print("Received new message with id: " .. id)

id = hw_message_port_add("ARDUINO_MEGA2560_A", new_message)

-- You can also send messages to the Arduino
-- In this case a message with id 7000 with 4 bytes (0x01, 0x02, 0x03, 0x04)
hw_message_port_send(id, 7000, [ 7, 6, 0, 0 ])

Some of our Professional users

About us

Sim Innovations was born in 2013 when two life-long friends, one a helicopter pilot trained in electronic hardware design, the other an experienced programmer, came up with a revolutionary idea in simulation cockpit panel design. The result of their efforts is Air Manager, a flight simulation instrumentation software tool allowing for open source simulator panel and instrument design. The innovative and easy-to-use tool results in short development cycles that can respond quickly to your changing technical needs. Our development group now includes pilots with military, airline and civilian experience in both fixed and rotary wing aircraft who are also skilled in programming or simulator hardware design. This creates a unique ability to combine technical development skills with real life piloting experience and leads to a commitment to achieving uncompromising simulation realism at an surprisingly affordable price.
Corjan van Hamersveld
Software engineer
Corjan is a seasoned programmer with experience dating back to the early days of the Commodore 64. Specializing in Java and C, he loves the challenges of new technology and mastering new programming languages.
Ralph Rietveld
Electronics engineer
Ralph became a commercial helicopter pilot in 2010, and soon had a vision to combine his passion for aviation & simulation with his passion for electronics. Expertise as a hardware engineer specializing in printed circuit board design rounds out his qualifications.
Hardware engineer
As a military and civilian helicopter pilot, Gerwin has flown the NH90, AS355 and EC155. A long-time aviation and flight simulation enthusiast, he also brings loads of real life experience with the hardware he develops.
Jasper Klein
Software engineer
A professional programmer and all around expert on most any technical issue, Jasper is usually the go-to-guy when the problem seems unsolvable. Not clouded by a love for flight and simulators like the rest of us, he usually offers the pragmatic balance our team needs.