Using VKB controllers with MobiFlight - MobiFlight/MobiFlight-Connector GitHub Wiki

Using VKB controllers with MobiFlight

VKB controller support is currently in beta. To get the current beta version, follow these steps:

  1. Download and install MobiFlight. You will need Mobiflight Beta 10.3.0.1 or later versions.
  2. Enable beta versions by going to Extras in the menu, selecting Settings, and checking the box next to Yes, I would like to receive beta version upgrades
  3. Restart MobiFlight to get prompted to install the beta version. Install it.

TL;DR Quick Start

If you have a standard VKB combo (e.g. any STECS version sold on the store, any GNX combo sold on the store, any single GNX module upgraded with HID controller), your LEDs are ready to go as soon as you are on the correct version of MobiFlight.

To enable responsive encoders, make sure you are running firmware 2.18.5 or later on your VKB controller. You can get the firmware images and update tools at https://www.vkbcontrollers.com/pages/downloads

Once your firmware is up to date, you can activate encoder support in VKBDevCfg by checking the "Virtual BUS over USB" box on the Global/External page and using the Set action to write the change to your device: Visual enstructions for enabling encoders

On the next start of MobiFlight Connector, responsive encoders should be available.

Sample config

If you have a FSM.GA module with a GNX-HID controller installed, a great way to get started is with this config file by UntoldForce that turns the FSM.GA into a fully functional autopilot panel in Microsoft Flight Simulator (2020). Please make sure no in-game bindings are active and assign the orphaned FSM.GA to your own FSM.GA in MobiFlight Connector. No other VKB device benefits as much from responsive encoder support.

Fundamentals

Since VKB devices present themselves as standard HID joysticks, standard button and axis inputs are available in all versions of MobiFlight Connector since 9.1. However, advanced functionality like fast rotary encoders and LED outputs requires specific support from newer MobiFlight Connector versions.

In addition to an up-to-date version of MobiFlight connector, a definition file for the controller is required. Due to the modularity of VKB controllers, particularly in the GNX ecosystem, it is impossible to provide definitions for every imaginable controller unit. If you bought a ready-to-use device from a VKB dealer or followed one of the GNX assembly guides to the letter, a definition file is already bundled with MobiFlight Connector. If you have set up a custom combination of modules, a custom definition may however be necessary.

LEDs

Out of the box, the LEDs of a VKB controller follow events configured in VKB's configuration program, VKBDevCfg. While there are powerful tools for LED event configuration available, they can only rely on information within the joystick itself, not data provided by the simulator. This is where MobiFlight Connector comes in. For each programmable LED on the controller, MobiFlight Connector can take over control of the LED to use as an output device. Note that once the PC has taken control of an LED, it will no longer respond to events set in VKBDevCfg until the controller is disconnected and reconnected.

LEDs on VKB controllers may have multiple color channels. Typically, the main power/status LED is blue/red (the color channels are physically separated on Gladiator NXT bases), whereas the LEDs on most GNX modules are green/red. RGB LEDs may be present on some grips, as well as the STECS base.

In MobiFlight connector, each color channel is presented as a separate output device. Mixed colors, like purple or amber, may be created by simultaneously turning on multiple color channels of the same LED. Note that brightness adjustment of LEDs, as well as the controller's internal blink patterns, are currently not available via MobiFlight Connector, but the red and green channels of GNX module LEDs have been adjusted to display an amber color if both are turned on.

Encoders

By default, VKB controllers will emulate button pulses from encoder turns to provide their position changes in a standard DirectInput-compatible format. However, because encoders can be turned faster than buttons can be tapped, this results in queued pulses, where the button pulses take time to catch up to the current encoder position. This makes it difficult to use rotary encoders for inputs where speedy changes are required.

Starting with VKB firmware 2.17.9, it is possible to use MobiFlight Connector to read the status of the encoder directly, and send position updates to compatible simulators without having to rely on the queued pulses from DirectInput emulation. On the provided definition files, the standard button actions are still available with the "Legacy DirectInput" label, but additional inputs are available for fast encoder actions.