ValveSoftware / Proton

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

Games launched with proton do not detect controllers #1549

Open Tuerai opened 5 years ago

Tuerai commented 5 years ago

Compatibility Report

System Information

I confirm:

steam-742120.log

Symptoms

Tested with an Xbox One S controller, and a PS Dual Shock 4 controller, both connected wired. They work in native steam games. They work in games where I use Lutris with WINE. They work in Steam Big Picture Mode. They are not detected at all in games I launch through proton. Have tested in Burnout Paradise and Dragon Quest XI.

Reproduction

I have steam installed on Arch Linux. I have launched it as both "Steam Native" and as "Steam Runtime" with the same behavior on both (works in BPM and not detected by Proton-launched game).

I tried both with and without xboxdrv/ds4drv installed, and had the same behavior as well.

unomar commented 5 years ago

Same issues here. Tried both a Steam Controller and wired Xbox 360 gamepad. Running Fedora 28 with the latest beta steam client. No controller inputs detected in Burnout Paradise. Both controllers work fine in big picture mode and native Linux games.

dearlygparted commented 5 years ago

I have steam installed on Arch Linux. I have launched it as both "Steam Native" and as "Steam Runtime" with the same behavior on both (works in BPM and not detected by Proton-launched game).

Similar issue here. Xbox 360 wired controller works in Steam BPM and in native Steam for Linux games, but not in Final Fantasy VII, however it works in Kingdom Come Deliverance.

grahammitchell commented 5 years ago

Same issue here. Trying to play Tales from the Borderlands through Proton 3.7-6 using my Steam Controller and the game only shows options for keyboard and mouse. It doesn't matter what config I load in.

It's a shame, because the game works great through Proton otherwise; it would be really nice to sit on the couch and play through it finally.

junglerobba commented 5 years ago

The latest Steam Client Beta Update seems to fix this. I had the same issue with Monster Hunter World, both with Steam and Xbox One Controller, and those work fine now.

grahammitchell commented 5 years ago

I just updated to the latest Steam Client Beta, and this still isn't fixed for me. Tales from the Borderlands still doesn't detect that a controller is plugged in.

jonathansty commented 5 years ago

Experience this issue when launching monster hunter world although this issue doesn't seem to be happening with Castlevania: Lords of shadows.

ghost commented 5 years ago

Right click on the game in your library and make sure your mapping is configured correctly for your controller. Also check "Controller Settings" in Steam.

grahammitchell commented 5 years ago

make sure your mapping is configured correctly for your controller

What?

Utopanic commented 5 years ago

I'm having the same problem here on multiple games(Monster Hunter World, Darksiders Warmaster edition and Nier Automata)

Rabcor commented 5 years ago

Hmm my logitech rumblepad set to xinput mode works fine.

bradleypariah commented 5 years ago

Having the same problem with an official wireless 360 controller.

Controller still works perfectly in SteamOS games, it works in Big Picture, but it doesn't work in Proton games anymore.

When I first installed Fallout: New Vegas, I had opted for Proton v3.14 (I think?) in Steam Play settings, but the controller didn't work, so I fell back to an older version (3.7-8, I believe), and the controller started working. It worked for The Witcher 3 and Fallout 3, as well. A Steam update came out, and now it doesn't matter if I'm in the Steam beta update or not. It doesn't matter which version of Proton I choose. None of the controller configurations/templates work, except for one - if I choose the template that emulates a keyboard and mouse.

Kubuntu 18.04 64-bit, i7-2600S octa-core CPU, 8GB DDR3 RAM, Nvidia gtx680

bradleypariah commented 5 years ago

Interesting revelation. Found a fix.

Step One: Open Big Picture mode, then navigate to Settings > Controller Settings. Check Xbox Configuration Support

Step Two: (Still in BPM) Navigate to Fallout: New Vegas > Manage Game > Controller Options > Steam Input Per-Game Setting > Set to: "Forced Off"

Profit. Still running Proton 3.7-8. I'll check back on the topic if the fix is only temporary.

200Puls commented 5 years ago

@bradleypariah I just had the same problem.

My setup is a bit different. I am using a PS4 controller, Ubuntu 18.10, Proton 3.16.6 beta and NBA 2K Playgrounds 2 is the game in which the controller was not recognized.

Your suggested workaround fixed it also for me. So it seems to be a Steam problem.

grahammitchell commented 5 years ago

I just tried bradleypariah's workaround and it didn't make any difference. Controller still not recognized for me in Tales from the Borderlands.

Using an Xbox One controller wirelessly using xpadneo and Proton 3.7-8 (non-beta).

These Proton games work out-of-the-box with the controller:

The Xbox controller also works great with Linux native titles (not using Proton):

The controller is not detected in the following game under Steam Play/Proton:

It won't detect the controller using bradleypariah's workaround or without. It also doesn't seem to matter whether I use the Xbox One controller or my Steam Controller.

bradleypariah commented 5 years ago

grahammitchell - Question, just to move the conversation forward - If you turn on XBox Configuration Support in BPM settings, and Force On Steam Input Per-Game Setting on the game, then download and apply a template, does that work? What if you choose the keyboard and mouse template? I'm thinking the devs might be curious to know which hand-off is getting dropped.

grahammitchell commented 5 years ago

Thanks for the suggestions.

If you download and apply a template, does that work?

No. Tales from the Borderlands still behaves like no controller is detected.

What if you choose the keyboard and mouse template?

That does work, in the sense that it allows me to move the mouse around using the right stick and click using right trigger. It's a fairly unpleasant gaming experience but I guess it could be made to work if one were desperate to play it with a controller.

MartinDueren commented 5 years ago

I can confirm this. No proton launched game works with Steam controllers so far for me. Using the keyboard and mouse template works, but this is a tedious workaround. All native ones work flawlessly. The Steam overlay (and navigation in the overlay menus) works with the controller without problems.

aroskuski commented 5 years ago

I was having some issues like this with NieR: Automata a while ago. I think I eventually worked around it by adding my user account to the input group, but it's been a while so I'm not 100% sure.

Britaliope commented 5 years ago

I can confirm that Steam Controller does not work (as a controller) for proton-launched games. Steam Controller works correctly on Big Picture and steam overlay menu but the game does not detetect the presence of a controller.

Here is the log for Ori and the Blind Forest Definite Edition steam-387290.log

DanMan commented 5 years ago

In Shadow of War it's also only detected, if you turn off the XBox Configuration Support in BPM settings. Proton 3.16-6B, Ubuntu 18.04.

Edit: in Dead Or Alive 6 it doesn't react to any input once I'm past the start screen, which I am able to dismiss by pressing the enter key. Doesn't matter if Steam Input is enabled or not. Forcing it off makes the XB1 pad work though.

just-Bri commented 5 years ago

Has there been any update on this? Want to make the switch to Linux only on my desktop, but I want to make sure I can use Proton for a couple games with my steam controllers. Specifically Death Squared, Lost Castle and Overcooked(1, haven't bought 2 yet).

kparal commented 5 years ago

Overcooked 1 works perfectly for me out of the box with both Steam Controller and Xbox One controller on Fedora 29.

grahammitchell commented 5 years ago

The vast majority of games work perfectly fine with controllers under Proton, which is why this bug hasn't been fixed yet. Only a very few games fail, and it's not clear why when so many others work.

In my comment from January 1, I list several other games that do work fine for me. Just not Tales from the Borderlands, in my case.

neurodiverseEsoteric commented 5 years ago

"Shooty Skies" doesn't work either, but it does in the native Linux version. Has anyone looked into this as being a directx issue rather than a proton issue? Why can't games just be rewritten in opengl instead of trying to get directx to work on linux?

just-Bri commented 5 years ago

Rewriting in OpenGL would be a full rewrite. DXVK is a layer between directx and vulkan, so you don't need to rewrite.

On Thu, Mar 14, 2019, 14:27 esotericDisciple notifications@github.com wrote:

"Shooty Skies" doesn't work either, but it does in the native Linux version. Has anyone looked into this as being a directx issue rather than a proton issue? Why can't games just be rewritten in opengl instead of trying to get directx to work on linux?

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/ValveSoftware/Proton/issues/1549#issuecomment-473023826, or mute the thread https://github.com/notifications/unsubscribe-auth/AEaZJL6p21QBpQCmC2bzJDbCa2HQNaFxks5vWqKcgaJpZM4W1enZ .

rmanosuthi commented 5 years ago

I had this problem a while ago and fixed it by disabling kernel modules that handle controllers. Steam doesn't seem to like those modules.

I'm using Gentoo and I compiled my kernel manually, and games launched through Steam (i.e. Witcher 3) didn't detect my XB1S controller until I did that.

Not sure if this will solve anyone's problem though, I didn't test it with native Linux games.

Azarilh commented 5 years ago

Interesting revelation. Found a fix.

Step One: Open Big Picture mode, then navigate to Settings > Controller Settings. Check Xbox Configuration Support

Step Two: (Still in BPM) Navigate to Fallout: New Vegas > Manage Game > Controller Options > Steam Input Per-Game Setting > Set to: "Forced Off"

Profit. Still running Proton 3.7-8. I'll check back on the topic if the fix is only temporary.

That worked for me on Monster Hunter World. Thank you!

ekthomson commented 5 years ago

Forced Off on the controller options also worked for Vessel.

schmidtbag commented 5 years ago

This is a pretty weird problem, because not only does this not affect every game, but it also seems to depend on your version of Proton. For example, I tried playing the game Gas Guzzlers Extreme, and in Proton 4.2-3, none of the suggestions listed above work, whether I enable or disable them, in any combination. But, if I downgrade to Proton 3.16, my controller works just fine. I have a DS4 that I connect through Bluetooth, if that makes any difference.

Jojonintendo commented 5 years ago

Unfortunately I face a similar issue. My controller (Nintendo Switch Pro) works perfectly fine in native games, but Monster Hunter World won't work with it. I have tried to "Force off" and downgrade to 3.16-4, but it still doesn't work. With latest 4.2-5 the exact same happens. I have tried multiple combinations but the result is always the same, the controller won't work with Monster Hunter World.

Edit: my system is latest opensuse tumbleweed, kernel 5.1.4, steam 1556574584.

fireedo commented 5 years ago

e.g. Sine Mora EX, proton 4.2-5, Tumbleweed 5.1.4, Nvidia 430.14, Xbox wireless controller detected fine, launching game using option "forced off" success detected the controller but controller movement in game is very fast also in the menu selection. any idea?

Jojonintendo commented 5 years ago

After much trial and error, it seems that completely deactivating the Nintendo Switch Pro support actually makes it work somewhat in game. All buttons are recognized but the joysticks are wonky. If I turn the controller support back on, the blue LED turns on, but then it doesn't work at all in game. I have no idea what to try next.

Edit: I could finally solve it. The problem is that my user doesn't have access to the file /dev/uinput, until I load the uinput module. For more information see here.

asgeir commented 5 years ago

For me it looks like this was an issue with my CORSAIR Gaming K70 keyboard.

It appears that it has a joystick interface (I can't imagine why. For RGB control maybe?) so I had two /dev/input/js devices. /dev/input/js0 which would be my xbox controller and /dev/input/js1 which would be my keyboard.

I created a udev rule to block the joystick interface in my keyboard and suddenly controller input is working again and I'm back to a single /dev/input/js device.

SUBSYSTEM=="usb", ACTION=="add", ATTRS{idVendor}=="1b1c", ATTRS{idProduct}=="1b09", ATTR{bInterfaceClass}=="03", ATTR{bInterfaceSubClass}=="01", ATTR{bInterfaceProtocol}=="01", ATTR{authorized}="0"
AaronLMorgan commented 5 years ago

After much trial and error, it seems that completely deactivating the Nintendo Switch Pro support actually makes it work somewhat in game. All buttons are recognized but the joysticks are wonky. If I turn the controller support back on, the blue LED turns on, but then it doesn't work at all in game. I have no idea what to try next.

Edit: I could finally solve it. The problem is that my user doesn't have access to the file /dev/uinput, until I load the uinput module. For more information see here.

I wanted to second this solution for any other OpenSuse Tumbleweed users.

Tumbleweed Version: 20190612 (Latest), Kernel: 5.1.7-1, Steam Version: 1560727279 (Latest Beta Build)

My Steam Controller was only working on my desktop and while using Big Picture Mode. It was not working while playing Doom or Sekiro through Proton 4.2-7. After loading the uinput kernel module using modprobe, the controller began to work in both of these games. Thanks for the solution, Jojonintendo!

WoutLin commented 5 years ago

I have had issues with game controllers working on Steam Proton since it became available. I had been using Steam on PlayOnLinux prior, but when Proton became available I wished to use it solely. However I could not get my controllers to work for Burnout Paradise: The Ultimate Box and Flatout Ultimate Carnage. Having fixed controller issues using Steam on PlayOnLinux I didn't need to spend time with Proton. The controllers I use: Saitek P2500 and Xiaoji Gamesir-G3w. Both dual stick gamepads.
Using PlayOnLinux I used wine controller config app to select either xinput or dinput and disable the other and that made the controllers work. The controllers worked almost perfect, fully configurable and identified by the games. Recently I updated Nvidia video drivers and had a booting issue. So after no quick fix I updated to Linux Mint 19.1 (from Linux Mint 18.3). I did a clean install from usb stick. Long story short, once Steam was installed, using the Xiaoji Gamesir-G3w gamepad, without doing any controller calibration, mapping or anything else, it was identified and worked perfectly by both games. Just had to set up the in-game controller settings. Also worked on DiRT Rally, but not as perfect, buttons being incorrect, but totally useable. Great.
Next day I fire up Steam. Flatout does not detect the gamepad. The buttons work to navigate the menus but game controller settings are totally missing. Burnout the gamepad name is there with previous settings but they won't respond to input. DiRT Rally I can get to work. Previously I mapped the gamepad with SDL2 tool and saved the result to a text file. DiRT would not recognize my rt joystick. I used jstest and evtest and both provide output when actions are performed on the gamepad. Proving linux is getting inputs. I found .../common/DiRT Rally/share/inputdevices.json was a library of input devices. I copied the PS4 gamepad section and replaced : { "Name": "Xiaoji Gamesir-G3w", "VendorID": "0x05ac", "ProductIDs": [ "0x055b", "*" ], "Category": "Gamepad", "Type": "PS4Gamepad", "SDLMapping": "a:b2,b:b1,x:b3,y:b0,back:b8,guide:b12,start:b9,leftstick:b10,rightstick:b11,leftshoulder:b4,rightshoulder:b5,dpup:h0.1,dpdown:h0.4,dpleft:h0.8,dpright:h0.2,leftx:a0,lefty:a1,rightx:a2,righty:a3,lefttrigger:b6,righttrigger:b7," }, Now works perfect. What ticks me off is that Flatout and Burnout worked perfect for 1 time and now they don't.
I have tried many of the suggestions. I have a keyboard that comes up as js0 or js1. Tried suggestions to add rules to blacklist keyboard to be identified as js. Tried unplugging keyboard and starting games. Still didn't work. Made rule to access to input, access logged in user. Not work. Any clues to why the gamepad was recognized only after being installed but not subsequently?

WoutLin commented 5 years ago

After spending many fruitless hours trying to get Burnout and Flatout to identify and map my game controller using Steam/Proton, my final method to get the games to work is install Steam via PlayOnLinux for each game. Then use wine control panel/game controller and disable "js for Burnout and "event" for Flatout. I don't have to touch Steam controller settings and the games work fine.

ghost commented 5 years ago

After spending many fruitless hours trying to get Burnout and Flatout to identify and map my game controller using Steam/Proton, my final method to get the games to work is install Steam via PlayOnLinux for each game. Then use wine control panel/game controller and disable "js for Burnout and "event" for Flatout. I don't have to touch Steam controller settings and the games work fine.

You can run wine control on the proton Wine prefix.

WINEPREFIX="$HOME/.local/share/steamapps/compatdata/24740/pfx" wine control

djohnson1865 commented 5 years ago

I had this problem a while ago and fixed it by disabling kernel modules that handle controllers. Steam doesn't seem to like those modules.

I'm using Gentoo and I compiled my kernel manually, and games launched through Steam (i.e. Witcher 3) didn't detect my XB1S controller until I did that.

Not sure if this will solve anyone's problem though, I didn't test it with native Linux games.

Wanted to see if I could get some more clarification on what modules exactly you disabled. Also running Gentoo and compiled my own kernel. I had controller support working with a 360 controller in The Witcher 3 for about a day before it started having issues again with a steam client update. Was previously running kernel 4.19.44, since I have upgraded to 5.1.12 with no change in behavior. Now with any proton <4.2.8. I can get the controller recognized and it works in BPM, but controls are mapped completely wrong in every game, Xbox button is start, D-pad doesn't work, and left click is select, etc... The mapping is consistent between all versions of proton except >4.2.8 and is consistent in The Witcher 3 and DOOM (the two games I have tried). Disabling the xpad module prevented Steam from detecting the controller at all. Also, when I did get the controllers working for a short time I was using I believe 4.2.8 and needed to use forced off with the steam controller settings for it to work.

Update: About 10 minutes after posting this a steam client beta update triggered and fixed the controller issues I was having. Still requires forced off controller settings, but that seems to fix my problem for anyone else in the same situation.

WoutLin commented 5 years ago
After spending many fruitless hours trying to get Burnout and Flatout to identify and map my game controller using Steam/Proton, my final method to get the games to work is install Steam via PlayOnLinux for each game. Then use wine control panel/game controller and disable "js for Burnout and "event" for Flatout. I don't have to touch Steam controller settings and the games work fine.

You can run wine control on the proton Wine prefix.

WINEPREFIX="$HOME/.local/share/steamapps/compatdata/24740/pfx" wine control

z0z0z, I tried your suggestion and was indeed able to change the game controller settings in the wine control panel. However it has no effect on the game using my controller. Still works with PlayOnLinux so it is not much of an issue anymore.

WoutLin commented 5 years ago

I just bought Wreckfest Appid 228380 and my controller is not identified. Again I tried Steam on PlayOnLinux, but had to run 32 bit, and the controller is identified. However this game is unplayable with bad slow graphics. I just need to identify what is different between proton and wine that affects the game controller. Any help is appreciated.

WoutLin commented 5 years ago

Need For Speed Hot Pursuit Appid 47870 also not identifying my controller. I opened wine control panel in both Hot Pursuit and Wreckfest proton directories and my game controller is identified and all inputs are registered in the test section. For some reason when the games are run on Steam proton the controller is not identified.

WoutLin commented 5 years ago

Contacted Steam support. Suggested in controller settings, select ONLY xbox configuration support (nothing else). Now the controller is accepted as xbox controller and inputs can be mapped. It works fine for Wreckfest Appid 228380, NFS Hot Pursuit Appid 47870 and Burnout Paradise Appid 24740. However, Flatout Ultimate Carnage Appid 12360 has a standard xbox controller template that works but inputs cannot be customized. Running from PlayOnLinux and using generic controller, my controller is identified and fully customizable.

I had worked on this for a long time and never came across this suggestion before. Is there official valve/steam documentation that I missed that addresses this?

I call this not a solution but a work around since my controller is still not identified and is not 100% effective.

Thanks to Steam support for the suggestion.

xinyazhang commented 4 years ago

Interesting revelation. Found a fix.

Step One: Open Big Picture mode, then navigate to Settings > Controller Settings. Check Xbox Configuration Support

Step Two: (Still in BPM) Navigate to Fallout: New Vegas > Manage Game > Controller Options > Steam Input Per-Game Setting > Set to: "Forced Off"

Profit. Still running Proton 3.7-8. I'll check back on the topic if the fix is only temporary.

I confirm this solves the Octopath Traveler (appid 921570) controller detection issue.

ChrisHighwind commented 4 years ago

Interesting revelation. Found a fix.

Step One: Open Big Picture mode, then navigate to Settings > Controller Settings. Check Xbox Configuration Support

Step Two: (Still in BPM) Navigate to Fallout: New Vegas > Manage Game > Controller Options > Steam Input Per-Game Setting > Set to: "Forced Off"

Profit. Still running Proton 3.7-8. I'll check back on the topic if the fix is only temporary.

Can confirm this works on Sonic Adventure DX using the Dreamcast Conversion mod.

tvjg commented 4 years ago

Confirming that this worked for me with Spelunky too.

DanMan commented 4 years ago

Yes, it's weird. I have support for generic gamepads enabled in the basic controller settings, but games don't detect my no-name DInput pad unless I go into the game's Steam properties and force off Steam Input (or I launch it through Big Picture mode). Then it responds to pad input and even still uses the correct button mapping as configured in Steam. The latter comes unexpected, since I forced it off in the properties. But at least it ends up the way I want it, so that's good.

Oh, and that's not just the case with Proton games, also native ones.

JulianGro commented 4 years ago

Running wine control in the prefix shows gamepad options. Running proton run control in the prefix does not show gamepad options on proton 4.11-1 Could this be related to some controller issues? Personally I cannot get my gamepad working in GTA V, but in No Man's Sky it just works out of the box.

ghost commented 4 years ago

@jug007 While having the controller plugged in, try right clicking the game in your Steam library and select "Edit controller configuration".

There is also global controller configuration configuration in the Steam setings.

Make sure you take a look at both of these. By the way you need the Steam Overlay for proper controller support.

JulianGro commented 4 years ago

Yeah it shows the controller and the right settings. The overlay also works.

DanMan commented 4 years ago

I've opened a ticket over here because it doesn't just affect Proton games for me: https://github.com/ValveSoftware/steam-for-linux/issues/6428