ValveSoftware / Proton

Compatibility tool for Steam Play based on Wine and additional components
Other
24.38k stars 1.07k forks source link

Logitech G27 is not detected by Proton versions newer than 4.2 #4445

Open RyuzakiKK opened 3 years ago

RyuzakiKK commented 3 years ago

While trying to reproduce #4441 I encountered a slightly different problem:

I have a Logitech G27 and it gets detected only with Proton 4.2, but it doesn't with Proton 5.0 nor Proton 5.13. My issue seems to be very similar to this one https://github.com/ValveSoftware/Proton/issues/2366#issuecomment-620913710

This is the Proton 4.2 log of Project CARS 2 Demo: steam-737770_4.2.log

And this is the log with Proton 5.0: steam-737770_5.0.log

So far I tried Project CARS 2 Demo and F1 2018, and both presented the same issue.

And for the record, with native Linux games (Euro Truck Simulator 2 and DiRT Rally) the G27 is successfully detected.

I'm using Arch Linux as my OS with the latest Steam beta client.

RyuzakiKK commented 3 years ago

In the Proton 5.0 log, with Arch, this is probably relevant to the issue:

7037.610:00c4:00c8:trace:dinput:find_sdldevs Found a joystick on 0x7eec5d40: G27 Racing Wheel
7037.610:00c4:00c8:trace:dinput:find_sdldevs  ... with force feedback
7037.610:00c4:00c8:trace:dinput:find_sdldevs joystick 046d/c29b is in SDL blacklist, ignoring

I tried a fresh Ubuntu 20.04 for comparison and there my G27 was working with both Proton 5.0 and also Proton 5.13. From the Ubuntu log there is no mention of the SDL blacklist:

1509.521:00d8:00dc:trace:dinput:find_sdldevs Found a joystick on 0x7e541280: G27 Racing Wheel
1509.521:00d8:00dc:trace:dinput:find_sdldevs  ... with force feedback
1509.521:00d8:00dc:trace:dinput:fill_joystick_dideviceinstanceA 580 0x21e790
1509.521:00d8:00dc:trace:dinput:fill_joystick_dideviceinstanceW 1100 0x21ea70
aeikum commented 3 years ago

Do you have Steam's Generic Gamepad Configuration support enabled? This is in Steam->Settings->Controller->General Controller Settings.

RyuzakiKK commented 3 years ago

@aeikum yes, the problem seems to be related to that.

When I plug my G27, on Steam Big Picture, I keep seeing the "No Controllers Detected" text and I can't use the G27 to navigate the BP interface.

If I leave the "Generic Gamepad Configuration Support" enabled, the G27 works only with Proton 4.2, but If I disable the Steam generic gamepad support, then it starts to work also on Proton 5.0 and 5.13.

Can it be that when the configuration support is enabled, the real G27 device is added in the SDL blacklist to let the game use the virtual compatibility gamepad that Steam was supposed to create. But because Steam, for some reasons, doesn't create the virtual G27, it just gets completely disabled?

aeikum commented 3 years ago

Steam's controller support feature basically hides the real device and replaces it with a fake device which behaves like an Xbox gamepad. You can use that to map any generic controller into an Xbox controller, which most games have support for. Older Protons didn't hide the true device correctly, so you could end up with multiple devices in some games. This bug let the G27 work for you in older Proton, since we weren't hiding it. We now hide it correctly, but that means that your G27 is now replaced by the fake Xbox controller, which your game doesn't respond to.

With controller support turned off, is your wheel now fully functional in 5.13?

RyuzakiKK commented 3 years ago

With controller support turned off, is your wheel now fully functional in 5.13?

Yes, it is.

aeikum commented 3 years ago

Shall we close this issue, then, or are there any other problems?

RyuzakiKK commented 3 years ago

We now hide it correctly, but that means that your G27 is now replaced by the fake Xbox controller, which your game doesn't respond to.

The problem is that this is what should have happened, but instead Steam is not replacing my G27 with any fake Xbox controller (probably because it's a wheel?). So I'm left with just the real G27, that gets blacklisted by Proton anyway.

The solution is to just disable the "Generic Gamepad Configuration Support". But unfortunately I guess that this could affect other users too. If someone turns on the "Generic Gamepad Configuration Support", because he need it for some controllers that he has, then when he tries its wheel it will not work and it's not immediately obvious what's the problem.

Do you think a more clever check on the Proton side might be possible? Even something along the line of "if there isn't a Steam fake xbox controller, do not blacklist any real joystick" should be able to solve this issue (unless you have multiple controllers plugged in).

aeikum commented 3 years ago

That is an interesting suggestion. I do have a G27 here that I can play around with, to reproduce your issue and see if there's an elegant way to work around it. Let's leave this open and I'll try to take a look some time.