Twin Usb Joystick Driver Windows 10

Use vJoy + Joystick Gremlin (free)

This is the preferred solution for older games or unusual twin-stick configs.


Not all joysticks require custom drivers. Here is a breakdown by category. twin usb joystick driver windows 10

The most famous bug is known as the joystick swap. After rebooting your PC, Windows 10 may assign the joystick that was previously "Player 1" to "Player 2" because it enumerates USB devices in a non-deterministic order. Your game then detects the wrong controller for Player 1.

Despite Windows 10’s good native support, there are three scenarios where you need a dedicated driver or utility: Use vJoy + Joystick Gremlin (free)

While this article focuses on Windows 10, note that Windows 11 has improved USB device handling but still suffers from the "twin identical joystick" issue. The same drivers that work on Windows 10 (HID, HidHide, vJoy) are fully compatible with Windows 11.

Microsoft has announced a new Raw HID API that allows games to identify devices by serial number, but adoption is slow. Until then, the twin USB joystick driver ecosystem remains reliant on third-party tools. This is the preferred solution for older games


The solution for Windows 10 involves a two-part driver architecture: a USB filter driver (or a custom function driver) and a virtual HID device driver. The USB driver portion attaches to each physical joystick’s device stack. Written using the Kernel-Mode Driver Framework (KMDF), this driver intercepts HID reports from both joysticks before they reach the native HIDCLASS.SYS. Each report—containing axis values (X, Y, Z, Rx, Ry, Rz) and button states—is timestamped and placed into a locked, non-paged memory pool.

The critical innovation lies in the aggregator module within the driver. Since USB HID reports arrive asynchronously (typically on a 1ms to 8ms poll interval), the driver must implement a merging policy. A common method is to use a "master timer" that samples both joystick states at a fixed interval (e.g., 4ms). The driver reads the latest complete packet from each stick, normalizes the raw analog values (e.g., converting 16-bit ADC readings to a 0–65535 range), and then constructs a merged HID report. For example:

This merged report is then forwarded to a virtual HID device (created using the HID Client Driver pattern or via UmdfHidMini). To the rest of Windows 10, this virtual device appears as a standard USB game controller with a custom report descriptor.