Skip to content

Virpil controller support #6839

Description

@cyb3rd4d

Hello dear Proton community

I recently bought a Virpil controller (a Constellation Alpha) and it was recognized as a game pad by my Steam games (Elite Dangerous and Star Wars Squadrons). I tried a lot of different versions of Proton with those games, official, experimental and also from GE.

I was pretty sure that was a Proton (or at least a Steam) issue, and not a Wine issue, because my controller works in Star Citizen that I run through Lutris. I only had to open the wine control panel for my game, run the game controllers settings and move my controller from the xinput section to the "connected" one (the first section of the window settings).

But for my Steam games, I tried a lot of things I found on wine forums, Reddit etc... mainly tweeking regedit keys with no luck, until I found this post: https://www.reddit.com/user/xatrekak/comments/12hnz0d/fixing_vkb_and_virpil_hotas_running_on_linux/ which fixed my issue.

Here is the content of the post:

So there is an issue with the VIRPIL and VKB products being detected as xbox controllers when Running them on Linux, particularly with Elite: Dangerous. Here is how I fixed it.

After weeks of trouble shooting this is the workarounds that I came up with. Hopefully this helps.

This is the standard documented fix:

Open regedit in your WINEPREFIX

Navigate to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\winebus

Create a new DWORD named "Enable SDL" with value 0

Create a new DWORD named "Map Controllers" with value 0

In theory the two values above should prevent wine from mapping your devices to xinput. In my experience this alone does not resolve the problem, so if you still have issues then we need to remove every trace of xinput from the registry without completely nuking the controller (which is what happens when you indiscriminately delete the PID/VID entries from the registry) so also complete the following steps:

Navigate to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\WINEXINPUT

Delete every folder heading under this

Navigate to HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\WINEBUS

Expand every heading that matches the VID/PID of your HOTAS (execute lsusb from the terminal to find your VID/PID)

you should see a long ass folder with a name similar to 273&03000000443300009043000011010000&0&0

Change these key values

Name "Service": change the data from xinput -> winehid

Name "DeviceDesc": change the data from: Wine XInput compatible device -> Wine HID compatible device

Name "CompatiableIds": The data field is a multi line input field. delete everything except: WINEBUS\WINE_COMP_HID

Here are some other things related to my setup that some people have found to be necessary and some have had luck without needing:

Running from lutris instead of though Steam/proton

wine version >= lutris-GE-Proton7-27-x86_64

I didn't had to run the game through Lutris though. After applying the regedit changes, my controller axes and buttons became available in the Elite Dangerous settings.

I really hope this feedback will be useful to improve the Proton support of Virpil controllers.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions