Wine: Wrong gamepad-detection after system-update


since I’ve updated my system to Ultima Thule, wine doesn’t recognize my gamepad (8BitDo SN30pro+) correctly anymore, if I use it via bluetooth.
The joy.cpl from wine recognizes the gamepad as “XBox One S Controller”. Some buttons are not detected or not properly mapped.
Before the update, wine recognizes the pad as “XBox One Controller”. (Without the S)
Everything worked perfectly fine.

I’ve tested multiple wine-version. No changes.
So I think, that the problem isn’t concerning wine only.
(I used the wine-versions from lutris, so they are still the same before and after the update.)

So what’s the error here? How can I change the detection, so wine detects the pad properly?
I don’t want to use another mode on the pad, because I need the analog-triggers. Also I don’t want to use xpadneo, xboxdrv or any other driver.
(With xboxdrv the pad is detected as Xbox360-pad, but it has no rumble then.)

If you need more information, let me know it. :wink:



PS: Things I’ve also noticed, since the update:

  • the bluetooth-pairing sometimes failes

Until that fix is released you can either downgrade SDL2 as mentioned there, or just force the mapping using SDL_GAMECONTROLLERCONFIG environment variable. Add this line to /etc/environment and then logout/login.

SDL_GAMECONTROLLERCONFIG=""050000005e040000e002000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b6,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b10,leftshoulder:b4,leftstick:b8,lefttrigger:a2,leftx:a0,lefty:a1,rightshoulder:b5,rightstick:b9,righttrigger:a5,rightx:a3,righty:a4,start:b7,x:b2,y:b3,","050000005e040000fd02000003090000,Xbox One Wireless Controller,a:b0,b:b1,back:b15,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,dpup:h0.1,guide:b12,guide:b16,leftshoulder:b6,leftstick:b13,lefttrigger:a5,leftx:a0,lefty:a1,rightshoulder:b7,rightstick:b14,righttrigger:a4,rightx:a2,righty:a3,start:b11,x:b3,y:b4,""

Hello @MrLavender,

thank you for your answer. Much appriciated.

I should have mentioned, that I already fiddled around with the environment variable.
Sorry for that.
I used the tool “SDL2 Gamepad Tool”. I think I’ve overseen something here. Anyway.

Your method works!
But I have to adjust that to this:

SDL_GAMECONTROLLERCONFIG="050082795e040000e002000003090000,Xbox One S Controller,a:b0,b:b1,x:b2,y:b3,back:b6,guide:b10,start:b7,leftstick:b8,rightstick:b9,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a3,righty:a4,lefttrigger:a2,righttrigger:a5,platform:Linux,crc:7982,"

It works perfectly fine again! Thank you very much!

Have a nice day. =)

PS: If you like, can you answer me another quick question related to this problem?
A while ago, as I started gaming on Linux, I noticed that, under some wine-version, when the gamepad-rumble kicks in, the rumble doesn’t stop and my character is moving around, till I disconnected the pad.
As I figured out, the problem relies on a combination of using my gamepad with bluetooth + wine + some gamedevelopers poorly implement gamepads.

Is there any fix for that except on deactivate the rumble?

For instance, if I play No Man’s Sky with the wine-version “lutris-6.21-6-x86_64”, and I fly with the jetpack, the jetpack and the rumble doesn’t stop.
If I use “lutris-GE-Proton7-43-x86_64” everthing works fine.
But this doesn’t work on any game.

On Horizon Zero Dawn, the rumble is always faulty and the character walks by it’s own.

With xboxdrv or xpadneo, there is no rumble.

No idea about the rumble thing, sorry. I don’t like it and never use it myself.

No problem,

I’m very grateful, that you helped me with the main issue.
Thanks again. :smile:

This topic was automatically closed 2 days after the last reply. New replies are no longer allowed.