protonscr

Non-Valve games don't work with the Steam Controller

steamclosed reviewed
ValveSoftware/steam-for-linux#4083 · opened 2015-10-21 by ghost · updated 2015-11-17 · 20 comments · github
?ghost 2015-10-21 github

So I got the Steam Controller today. It works and is awesome. I played Portal 2 and everything works. No other game, including the games with a controller logo can use the controller. Yes, I did add the udev rule. Games are totally not working with the controller for me.

?ghost 2015-10-21 github

I have to force close the game by clicking the Steam logo on the controller and go for Exit game. Then Big Picture returns and it freezes. That's another bug, but still part of my experience.

Yyajo 2015-10-21 github

The same happening to me, but I did not do anything about udev.

Linking here anyway FWIW: https://steamcommunity.com/app/221410/discussions/0/490123197949350214/

I'll try Portal 2 and see.

?ghost 2015-10-21 github

Do your Big Picture freeze too?

Jjdorn-eu 2015-10-22 github

I think the official udev rule is in this post by a Valve dev: http://steamcommunity.com/app/353370/discussions/0/490123197956024380/ A bit different from the one posted on gamingonlinux, maybe the problem is here? Don't forget to set the GROUP correctly to the user that runs Steam. Also it's important to update the Controller to the newest firmware. After that, I didn't have issues with my games anymore.

?ghost 2015-10-22 github

I added the official Valve rule. I also did the firmware update.

So you had the same issue before?

This is my rule (terminal copy):

[alexhultman@localhost ~]$ cd /etc/udev/rules.d/
[alexhultman@localhost rules.d]$ ls
99-steam-controller
[alexhultman@localhost rules.d]$ cat 99-steam-controller

This rule is needed for basic functionality of the controller in Steam and keyboard/mouse emulation

SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"

This rule is necessary for gamepad emulation; make sure you replace 'pgriffais' with the username of the user that runs Steam

KERNEL=="uinput", MODE="0660", GROUP="alexhultman", OPTIONS+="static_node=uinput"
[alexhultman@localhost rules.d]$

I'm on Fedora 22, I have no idea if these rules are active or not but I did reboot.

Yyajo 2015-10-22 github

Do your Big Picture freeze too?

Twice only.

Yyajo 2015-10-24 github

After setting the udev rule, everything is working as before. This was somehow what I expected (if I had perms to use steam, those should be enough to play a game, no?). Portal 2 plays fine, but sometimes in the menu, pressing B does not go back.

Jjdorn-eu 2015-10-24 github

Maybe it's about Kernel version? Does the problem persist on 4.2?

?ghost 2015-10-24 github

"After setting the udev rule, everything is working as before"

As in, it doesn't work? I have kernel 4.2.3 and it is not working (Portal 2 is the only game that works, maybe some other Valve games but haven't tried)

Yyajo 2015-10-25 github
$ uname -r
4.2.3-200.fc22.x86_64

Actually I'd say that emulating a keyboard+mouse works, but emulating a gamepad does not.

Portal 2 plays nice with default settings (Portal 2 Motion Controls), but Fez does not play with defaults (Gamepad) but it does with some community settings (tried Fez, from SaberMage).

Jjdorn-eu 2015-10-25 github

Ok if you have the correct udev rule, then please confirm these: Is your user in the group that you set in your udev rule? Try groups username. If yes, is uinput loaded to begin with? Try lsmod | grep uinput. If you don't get any output, load uinput with sudo modprobe uinput, afterwards logout/login again. Now look again in lsmod output, there should be a use count of 1 if you connect your controller. (use count is the number at the end, if it is 0 then there's something wrong)

Yyajo 2015-10-26 github

Is your user in the group that you set in your udev rule? Try groups username.

Yes.

is uinput loaded to begin with? Try lsmod | grep uinput.

No.

If you don't get any output, load uinput with sudo modprobe uinput, afterwards logout/login again. Now look again in lsmod output, there should be a use count of 1 if you connect your controller. (use count is the number at the end, if it is 0 then there's something wrong)

It counts 0 no matter if the controller is plugged or not. I tried wired and wireless, having Steam open and not, having Fez with gamepad settings open and not.

?ghost 2015-10-27 github

Wow thank you It works for me now.

I did this:

sudo modprobe uinput
sudo chmod 666 /dev/uinput (this is what the rule should do)

Now, lsmod | grep uinput shows 0 connections so I reinserted the USB dongle and now it shows up as 1 connection. Games work now, really good integration actually.

Yyajo 2015-10-27 github

I did what you say, but still no luck.

I also did su -c 'echo uinput > /etc/modules-load.d/uinput.conf' and rebooted to have uinput loaded automatically, but after reboot:

$ ll /dev/uinput 
crw-------. 1 root root 10, 223 oct 27 18:56 /dev/uinput

I repeated chmod, but still no luck. lsmod | grep uinput is always at 0. The only thing I notice is that even without all of this, my Steam Controller emulates a keyboard and a mouse in my GNOME session (I imagine this is expected).

Yyajo 2015-10-27 github

Oh wait! It works, but only after opening Steam.

If I close it later lsmod shows 1 device.

If then I unplug and plug the controller, lsmod shows 0 devices again until I open Steam.

But I don't get it... Is all of this not supposed to be fixed by the udev rule?

For now the workaround is clear:

$ sudo modprobe uinput
$ sudo chmod 0666 /dev/uinput
$ steam
?ghost 2015-10-27 github

I just had steam opened the whole time. The thing that made it work was reinserting the dongle I suppose. Been playing Bioshock Infinite with the controller all day now and it works pretty okay - much better than regular controllers and much worse than a mouse. I guess we should close this and make sure the distribution makes these probes automatically? What dist are you running? I'm on Fedora 22.

Yyajo 2015-10-28 github

It does not make much sense to close a bug that is still open IMHO. If I'm not wrong, all of this should not be needed after adding the udev rule, so there must be something failing... OTOH, sending a bug to RPMFusion to ask them to include the udev rule in the package seems fine. I use Fedora 22 too.

Mmcdoh 2015-11-12 github

@Yajo does your udev rule have a .rules extension? e.g. /etc/udev/rules.d/99-steam-controller.rules

PPlagman 2015-11-13 github

Yes, you do have to open Steam for the controller emulation to work. If after rebooting your permissions are still crw------- on /dev/uinput your rules are not set up properly. Steam will try to open /dev/uinput when it sees a Steam Controller to create the virtual controller device and will fail to do so if it's not able to write to it.

Yyajo 2015-11-17 github

Fun, it was just the .rules extension. FWIW after rebooting, lsmod | grep uinput shows nothing until Steam is started.

Nothing extracted yet.