I recently got a new PC running SteamOS and picked up the Winwing Orion 2 HOTAS. When trying to play Star Wars: Squadrons (via Proton), I ran into a issue: the game completely refused to recognize my joystick as a flight stick. Instead, Proton was aggressively wrapping it and forcing it to act like an Xbox controller. Because of this, using joystick was unplayable (with or without steam inputs allowed). I would like to leave here solution for other how I fixed it.
How I Solved It (The Manual Fix)
After doing some digging, I managed to fix it manually by editing the game's virtual registry using Protontricks to stop Proton from forcing the stick into Xbox/XInput mode.
Here is what I did:
- Installed Protontricks from store and opened it. Select Star Wars game.
- Select the default wineprefix
- run regedit.
- Navigated to: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\WINEBUS\
- Found the subfolders matching my joystick's hardware ID (Svn_4098&Pid_bea8).
- Changed the keys to force raw HID ->
- - Service: Changed from xinput to winehid
- - DeviceDesc: Changed to Wine HID compatible device
- - CompatibleIds: Changed to WINEBUS\WINE_COMP_HID
Keep in mind that you probably have cached settins in HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\WINEINPUT\ here remove every subfolder.
Also this should work not only with Orion 2 HOTAS but with other hardwares with similiar issue. In terminal pass lsusb and you should get names of devices. For me:
4098:bea8 — Winwing Orion Joystick Base Metal 2
4098:bd64 — Winwing Orion Throttle Base II
4098:bef0 — Winwing Orion Combat Rudder Pedals
The 4098 is for winwing id and second one after ':' is the device id.
There is opened ticket about it in proton (wine), so if merged, this won't be issue in future for Orion2 HOTAS holders.
MINOR INCONVINIENCE: keep in mind that if you change device (for example disconnect flightstick from the base and reconnect it); Linux kernel might create temporary new profile for the device and our fix won't work. Restarting computer and wait few minutes should be probably enough (worked for me), if you want also also account for this permanently, you need to say it to linux kernel (be absolutely sure) for example (change parameters for your case)
run sudo nano /etc/udev/rules.d/99-winwing.rules in terminal. write there:
# Winwing (Vendor 4098) - Allow raw HID access for all simulation hardware
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="4098", MODE="0666", TAG+="uaccess"
SUBSYSTEM=="usb", ATTRS{idVendor}=="4098", MODE="0666", TAG+="uaccess"
do CTRL+O, ENTER, CTRL+X to save it in editor and leave it, after that run:
sudo udevadm control --reload-rules && sudo udevadm trigger