Skip to content

USB controllers

OpenSimGear firmware presents inputs through USB HID, the standard interface used by game controllers. A direct-connected module provides its own controller. A gateway provides a controller for each enabled module on its chain, through one USB connection.

Assign those controls in your simulator. Cockpit configures the devices, but ordinary HID input does not require the app to stay open.

The current STM32 gateway automatically enables a newly discovered compatible module and adds it to the end of its saved controller list. You do not need Cockpit to perform this setup. Adding a controller can cause a USB reconnect while the computer reads the updated list.

The gateway remembers devices and their enabled state across restarts. With no enabled devices, it exposes only its configuration connection and no empty game controllers.

Device stateWhat you see
New compatible deviceAutomatically added as an enabled controller.
Enabled and connectedA controller with live inputs.
Enabled but disconnectedAn offline entry in Cockpit; its controller remains present with neutral inputs.
DisabledA remembered device with no gateway controller; an online device can still be configured.
Removed while offlineThe gateway forgets the device. Reconnecting it treats it as new.

These behaviors are implemented in firmware and software simulations. Their effect on physical STM32 USB controllers and saved Windows/game bindings has not been validated.

Use Disable to hide a device’s gateway controller without erasing its settings. It stays disabled after reconnection or gateway restart. Enable adds it to the end of the enabled list again.

Use Remove to forget an offline device. Temporary disconnection alone does not remove it.

Removing a published controller causes a USB reconnect and can require rebinding other controllers in your simulator. Cockpit shows a warning before such changes. A game may also need restarting after its controller list changes; binding retention is not guaranteed.

When a module has an active direct USB input connection, its gateway controller remains present but sends neutral inputs. When direct USB input ends, fresh CAN inputs restore the gateway route. A USB connection that only supplies power does not take input ownership.

Calibration and name changes that keep the same control layout do not require a new layout. If a device’s configured buttons, hats or axes change its USB control profile, its enabled gateway controller stays neutral until you explicitly use Update profile.

That update can reconnect USB and change simulator bindings. Check your assignments after changing the layout.

Mapping and calibration are stored on the module and move with it. Gateway controller lists are stored on each gateway. The old gateway keeps the module’s enabled offline entry until you disable or remove it; the new gateway automatically adds an unknown device.

If the destination already remembers the device as disabled, it remains disabled. Moving between gateways changes the USB connection identity, so game bindings may need updating.

The software supports up to 32 remembered devices and enabled controllers per gateway. A device profile can contain up to 128 buttons, four hats and eight axes. These are software limits, not tested physical chain ratings or guarantees that every simulator accepts that many controls.

No public OpenSimGear USB vendor/product identifier allocation is established. Firmware builders must use identifiers they are authorized to use; compile-only placeholders are not deployment identifiers.

See hardware requirements and current validation status before planning a physical setup.