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

Using VKB controllers with MobiFlight

To control LEDs on VKB controllers and get the best encoder experience, you need version 10.4 or newer of MobiFlight connector.

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. Note: Controller configurations are currently designed for STECS with Mk1 grips (analog stick in the OTS position). If your STECS came with a Mk2 grip (analog stick in the MB1 position), download the the Mk2 definition files and place them in your Mobiflight/Joysticks folder.

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.

Custom device configs / My LEDs are not responding / I have no button names

The number of module combinations in VKB's ecosystem are practically endless. While a large selection of pre-made profiles exists, it is impossible to prepare profiles for every combination that you might build. To help create config files for custom combos, you can use the VKB/MobiFlight Definer Tool. Here is a quick overview on how to use it:

Controller selection

Upon startup, you are presented with a list of controllers. Select the controller you want to create a definition file for by typing the number of your controller and pressing Enter.

Base selection

Select the base unit of your controller by typing in the corresponding number and pressing Enter. Note that for Gladiator NXT, this also includes the grip, since the base button numbering adjusts to the connected grip upon autoconfig. Traditional NXT and EVO are distinguished because of button labelling, choose NXT if you have an En2 encoder, EVO if you have an Sw1 switch. For STECS, it also includes the ATEM, since that module becomes part of the base unit after installation. GNX module combos without attached joystick or throttle use the GNX-HID USB Controller.

Adding modules

After selecting your base, you can add modules. Note that for optimum results, you should add modules in the same order that VKB's autoconfig detects them: First, start with any grips that are not included in the base configuration. For STECS, add the left grip first, then the right grip. Afterwards, add modules in the following order: First SEM, then THQ (with WW2 grip last, if used), then STEM, then FSM.GA. This will make the following steps easier. Select each module and press Enter.

You will be prompted for a button number. If you followed the order above correctly, the button number is usually correct, but just to be sure, you can use the VKBDevCfg test tab to double-check. If you need to edit the button number, enter the correct button number. Afterwards, press Enter.

If your module has LEDs, you will be prompted for an LED number. If you followed the order above correctly, the LED number is usually correct. You can verify the LED number by looking at the devices Base entry next to LedsN under Global -> External -> External devices. You should not need to edit this if you have added devices in the correct order unless your stick has been configured manually. Press Enter to confirm.

Repeat this process until all modules have been added.

Using VKBDevCfg to validate button mappings

In the above screenshot you can see a manual correction for the button ID using the tools provided by VKBdevCfg.

Finally, select module 0 ("No additional modules") to complete setup. Follow the prompts to set up encoders if your combo includes them. Using this feature and mapping your encoders in Mobiflight will drastically improve your experience with using encoders. Once again, if you followed the above instructions on module order, the encoders will be assigned the correct IDs. You can verify encoder IDs using the Encoder Visualizer tool.

Encoder visualizer

When you turn a physical encoder, the corresponding encoder on in the application will turn with it.

After completing the configuration, the definition file will be created in the output folder. Copy it to the Mobiflight/Joysticks folder to be able to use your new combo in MobiFlight.

Note that if you have done extensive remapping in VKBdevCfg or use a combination of STECS button modules not listed in the definer tool, you may need to edit your definition file manually. The sections below provide some background and technical details to help you adjust your config file.

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.