ValveSoftware / ValveSoftware/Proton

Steering Wheel Input Not Recognized

Open
#6,674 19 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Regression
Dominant language
C++
Stars
32.8k
Forks
1.6k
PR merge metrics
PR metrics pending

Description

Hi,

I've spent the last two weeks tracking down this issue. I have a T300RS steering wheel, using the hid-tmff2 driver, and I cannot seem to make it work within Proton 7. I have based my tests mainly on Assetto Corsa (id 244210), but this is common to any game using Proton with a version more recent than 5.13.
My issue is that the game can see my device (see below), but any steering/button input is not recognized in game.
AC_controls
Some users have reported a similar issue and solved it by adding a udev rule to their system in order to add r/w accesses to all users for the wheel, which I have successfully done.

$ ls -al /dev/hidraw2
  crw-rw-rw-+ 1 root root 240, 2 Apr  8 22:45 /dev/hidraw2
$ cat /sys/class/hidraw/hidraw2/device/uevent 
  DRIVER=tmff2
  HID_ID=0003:0000044F:0000B66E
  HID_NAME=Thrustmaster Thrustmaster T300RS Racing wheel
  HID_PHYS=usb-0000:04:00.3-1.3/input0
  HID_UNIQ=
  MODALIAS=hid:b0003g0001v0000044Fp0000B66E

I have confirmed that the device works with native Linux programs, with udevtest and oversteer. The farthest I have gotten in my investigation is that when running protontricks -c "wine control" 244210, I can replicate the behavior that I see in game, meaning that my wheel is listed, but it does not respond to any sort of inputs. That being said, by adding the --no-bwrap flag to protontricks, the wheel does respond. Now the question is, does this point to a permissions error for bubblewrap, or is something else amiss?

I am running Steam OS 3.4.6 on my Steam Deck, with the latest stable Steam for Deck version and proton 7.0-6 (also tried Proton GE, but the same symptom occurs). Let me know if you need any more details!

EDIT
The issue seems to stem from Steam Linux Runtime Soldier. If I run the game without the runtime, by generating the PROTON_DUMP_DEBUG_COMMANDS and launching via /tmp/proton_<username>/run, the wheel works perfectly! I also tried running the game with Soldier with the --devel flag, but it did not change the behaviour.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce with the T300RS, Proton 7, Assetto Corsa, and Steam Linux Runtime Soldier, comparing normal execution with protontricks --no-bwrap and the generated PROTON_DUMP_DEBUG_COMMANDS launch under /tmp/proton_/run. Use the Soldier/runtime behavior described in the report as the starting boundary; done means steering and button input is recognized while the runtime is enabled.

Written by the indexing model from the issue text.

Assessment

Tech stack
linux
Domain
operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.