protonscr

Steam Controller stops working inside games

steamclosed reviewed
ValveSoftware/steam-for-linux#4183 · opened 2015-12-14 by Vintodrimmer · updated 2019-07-27 · 13 comments · github
VVintodrimmer 2015-12-14 github

Steam Controller works great out of the box, everything in Steam or outside of it works, but none of the games seem to notice the controller. It's as if it's not plugged in or no input reaches them. I can still summon steam's overlay to check configs, but the game itself does not react to the controller whatsoever.

I've tried it with Binding of Isaac: Rebirth; Towerfall:Ascension; Sublevel Zero; Portal

The only modification to the original Steam Runtime is deleted video libraries so my radeonsi driver works.

My system information is as follows:

Processor Information:
    Vendor:  GenuineIntel
    CPU Family:  0x6
    CPU Model:  0x2d
    CPU Stepping:  0x7
    CPU Type:  0x0
    Speed:  3800 Mhz
    12 logical processors
    6 physical processors
    HyperThreading:  Supported
    FCMOV:  Supported
    SSE2:  Supported
    SSE3:  Supported
    SSSE3:  Supported
    SSE4a:  Unsupported
    SSE41:  Supported
    SSE42:  Supported

Network Information:
    Network Speed:  

Operating System Version:
    Linux (64 bit)
    Kernel Name:  Linux
    Kernel Version:  4.3.2-swift_alicorn
    X Server Vendor:  The X.Org Foundation
    X Server Release:  11704000
    X Window Manager:  bspwm
    Steam Runtime Version:  steam-runtime-release_2015-06-12

Video Card:
    Driver:  X.Org Gallium 0.4 on AMD TAHITI (DRM 2.43.0, LLVM 3.7.0)

    Driver Version:  3.0 Mesa 11.0.7
    OpenGL Version: 3.0
    Desktop Color Depth: 24 bits per pixel
    Monitor Refresh Rate: 59 Hz
    VendorID Not Detected
    DeviceID Not Detected
    Number of Monitors:  1
    Number of Video Cards Not Detected
    Primary Display Resolution:  2560 x 1440
    Desktop Resolution: 2560 x 1440
    Primary Display Size: 23.50" x 13.23"  (26.97" diag)
                                            59.7cm x 33.6cm  (68.5cm diag)
    Primary VRAM Not Detected

Sound card:
    Audio device: 

Memory:
    RAM:  15966 Mb

Miscellaneous:
    UI Language:  English
    LANG:  en_US.UTF-8
    Microphone:  Not set
    Total Hard Disk Space Available:  2861587 Mb
    Largest Free Hard Disk Block:  2676334 Mb

Installed software:

Recent Failure Reports:
    Mon Dec 14 14:00:38 2015 GMT: file ''/tmp/dumps/assert_20151214170037_19.dmp'', upload yes: ''CrashID=bp-59998f22-a42f-4f0c-91fb-5589a2151214''
    Mon Dec 14 14:23:15 2015 GMT: file ''/tmp/dumps/crash_20151214172312_121.dmp'', upload yes: ''CrashID=bp-d6214fe1-20e2-46e3-82ae-1b30b2151214''
    Mon Dec 14 14:23:44 2015 GMT: file ''/tmp/dumps/assert_20151214172342_123.dmp'', upload yes: ''CrashID=bp-5181b04c-3d9c-4f7e-933c-1c1862151214''
` ` `
Iian-g-holm-intel 2015-12-19 github

Just started having the same problem after recent update.

Vvoidplayer 2015-12-28 github

This same thing happens to me, but only on gamepad mode. Games that uses K+M layout seems to work fine (like life4dead 2 or portal)

Aaldrik 2016-01-05 github

You need to configure permissions to the HID device nodes:
https://steamcommunity.com/app/353370/discussions/0/490123197956024380/

VVintodrimmer 2016-01-07 github

Created /etc/udev/rules.d/90-steam-controller.rules with

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

KERNEL=="uinput", MODE="0660", GROUP="games", OPTIONS+="static_node=uinput"

And nothing changed. Maybe because I already had /etc/udev/rules.d/99-joystick.rules with

KERNEL=="event[0-9]*", ENV{ID_BUS}=="?*", ENV{ID_INPUT_JOYSTICK}=="?*", GROUP="games", MODE="0660"
KERNEL=="js[0-9]*", ENV{ID_BUS}=="?*", ENV{ID_INPUT_JOYSTICK}=="?*", GROUP="games", MODE="0664"

Also, my lsusb and dmesg if this might help:

Bus 003 Device 002: ID 28de:1102  

[  990.283774] usb 3-1: USB disconnect, device number 2
[  991.777048] usb 3-1: new full-speed USB device number 4 using xhci_hcd
[  992.097982] usb 3-1: New USB device found, idVendor=28de, idProduct=1102
[  992.097985] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=0
[  992.097987] usb 3-1: Product: Wired Controller
[  992.097988] usb 3-1: Manufacturer: Valve Software
[  992.098104] usb 3-1: ep 0x81 - rounding interval to 64 microframes, ep desc says 80 microframes
[  992.098107] usb 3-1: ep 0x82 - rounding interval to 32 microframes, ep desc says 48 microframes
[  992.098109] usb 3-1: ep 0x83 - rounding interval to 32 microframes, ep desc says 48 microframes
[  992.099579] input: Valve Software Wired Controller as /devices/pci0000:00/0000:00:1c.6/0000:09:00.0/usb3/3-1/3-1:1.0/0003:28DE:1102.0008/input/input25
[  992.150199] hid-generic 0003:28DE:1102.0008: input,hidraw0: USB HID v1.11 Keyboard [Valve Software Wired Controller] on usb-0000:09:00.0-1/input0
[  992.150739] input: Valve Software Wired Controller as /devices/pci0000:00/0000:00:1c.6/0000:09:00.0/usb3/3-1/3-1:1.1/0003:28DE:1102.0009/input/input26
[  992.150956] hid-generic 0003:28DE:1102.0009: input,hidraw1: USB HID v1.11 Mouse [Valve Software Wired Controller] on usb-0000:09:00.0-1/input1
[  992.151672] hid-generic 0003:28DE:1102.000A: hiddev0,hidraw2: USB HID v1.11 Device [Valve Software Wired Controller] on usb-0000:09:00.0-1/input2
JJoshuaMurphynz 2016-01-09 github

Are you still able to reproduce this?

VVintodrimmer 2016-01-10 github

Kinda. It works if I use it for keyboard bindings, but games just don't recognise it as gamepad. Even the ones with official bindings like "they bleed pixels" just say "please, connect the gamepad".

Aaldrik 2016-01-10 github

It works if I use it for keyboard bindings, but games just don't recognise it as gamepad.

The second line of your udev rules is responsible for binding gamepad functionality. Change the MODE from 0660 to 0666 and it should work.

VVintodrimmer 2016-01-10 github

Didn't help, sadly.

I even commented everything in my "joystick.rules" out to doublecheck.

In-game HUD shows only keyboard buttons and trackpads. Any other key/stick/trigger shows nothing if it's set to standard gamepad actions.

And if it was due to permissions, I don't think it would work inside "big picture" either.

Zzkraus 2016-01-13 github

I had precisely same issue, and adding udev rules file, as mentioned here, resolved this issue.

root # cat /etc/udev/rules.d/99-steam-contoller.rules
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE=="0666"
KERNEL=="uinput", MODE="0666", GROUP="games", OPTIONS+="static_node=uinput"

unfortunately it's necessary to reboot, then it should apply new udev rules.

for the thought with permission vs. big picture, big picture and steam may not be bounded to group games as actual games probably are.

VVintodrimmer 2016-01-15 github

Yeah, problem was on my side after all, sorry.

First of all, I've been missing User level driver support from the kernel, which might have caused it.
Secondly, Steam from overlay comes with it's own rules, which I was unaware of:

/lib/udev/rules.d/99-steam-controller-perms.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666" KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666"
I've removed them and created

/etc/udev/rules.d/99-steam-controller-perms.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666" KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input" KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666"

Everything works great now. Thank you all for the help!

####Small update.

It seems that for some reason "games" group didn't work for me in that case.

Aack0329 2016-11-13 github

OK Problem after switching back to a different Distro Root Partition,

and the last solution WORKED !! THANKS !! with a twist ... I just changed the one File,
∘ $ sudo gedit /lib/udev/rules.d/99-steam-controller-perms.rules

SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666" KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess" KERNEL=="hidraw*",
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666"

  • Change to, ... and Save/Reboot

SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666" KERNEL=="uinput", SUBSYSTEM=="misc", MODE="0660", GROUP="input" KERNEL=="hidraw*",
SUBSYSTEM=="hidraw", ATTRS{idVendor}=="0bb4", ATTRS{idProduct}=="2c87", MODE="0666"

Jjomarocas 2019-07-27 github

with this udev rules always working for me "without put GROUP MEMBER"


# Valve USB devices
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"

# Steam Controller udev write access
KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess", OPTIONS+="static_node=uinput"

# Valve HID devices over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="28de", MODE="0660", TAG+="uaccess"

# Valve HID devices over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*28DE:*", MODE="0660", TAG+="uaccess"

# DualShock 4 over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c4", MODE="0660", TAG+="uaccess"

# DualShock 4 wireless adapter over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="0ba0", MODE="0660", TAG+="uaccess"

# DualShock 4 Slim over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="09cc", MODE="0660", TAG+="uaccess"

# DualShock 4 over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*054C:05C4*", MODE="0660", TAG+="uaccess"

# DualShock 4 Slim over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*054C:09CC*", MODE="0660", TAG+="uaccess"

# Nintendo Switch Pro Controller over USB hidraw
KERNEL=="hidraw*", ATTRS{idVendor}=="057e", ATTRS{idProduct}=="2009", MODE="0660", TAG+="uaccess"

# Nintendo Switch Pro Controller over bluetooth hidraw
KERNEL=="hidraw*", KERNELS=="*057E:2009*", MODE="0660", TAG+="uaccess"

# Nacon PS4 Revolution Pro Controller
KERNEL=="hidraw*", ATTRS{idVendor}=="146b", ATTRS{idProduct}=="0d01", MODE="0660", TAG+="uaccess"

# Razer Raiju PS4 Controller
KERNEL=="hidraw*", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="1000", MODE="0660", TAG+="uaccess"

# Razer Panthera Arcade Stick
KERNEL=="hidraw*", ATTRS{idVendor}=="1532", ATTRS{idProduct}=="0401", MODE="0660", TAG+="uaccess"

# Mad Catz - Street Fighter V Arcade FightPad PRO
KERNEL=="hidraw*", ATTRS{idVendor}=="0738", ATTRS{idProduct}=="8250", MODE="0660", TAG+="uaccess"

# Mad Catz - Street Fighter V Arcade FightStick TE S+
KERNEL=="hidraw*", ATTRS{idVendor}=="0738", ATTRS{idProduct}=="8384", MODE="0660", TAG+="uaccess"

# EMiO Elite Controller for PS4
KERNEL=="hidraw*", ATTRS{idVendor}=="0c12", ATTRS{idProduct}=="1cf6", MODE="0660", TAG+="uaccess"

# HORI RAP4
KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="008a", MODE="0660", TAG+="uaccess"

# HORIPAD 4 FPS
KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="0055", MODE="0660", TAG+="uaccess"

# HORIPAD 4 FPS Plus
KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="0066", MODE="0660", TAG+="uaccess"

# Armor Armor 3 Pad PS4
KERNEL=="hidraw*", ATTRS{idVendor}=="0c12", ATTRS{idProduct}=="0e10", MODE="0660", TAG+="uaccess"

# STRIKEPAD PS4 Grip Add-on
KERNEL=="hidraw*", ATTRS{idVendor}=="054c", ATTRS{idProduct}=="05c5", MODE="0660", TAG+="uaccess"

# NVIDIA Shield Portable (2013 - NVIDIA_Controller_v01.01 - In-Home Streaming only)
KERNEL=="hidraw*", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7203", MODE="0660", TAG+="uaccess", ENV{ID_INPUT_JOYSTICK}="1", ENV{ID_INPUT_MOUSE}=""

# NVIDIA Shield Controller (2015 - NVIDIA_Controller_v01.03 over USB hidraw)
KERNEL=="hidraw*", ATTRS{idVendor}=="0955", ATTRS{idProduct}=="7210", MODE="0660", TAG+="uaccess", ENV{ID_INPUT_JOYSTICK}="1", ENV{ID_INPUT_MOUSE}=""

# NVIDIA Shield Controller (2017 - NVIDIA_Controller_v01.04 over bluetooth hidraw)
KERNEL=="hidraw*", KERNELS=="*0955:7214*", MODE="0660", TAG+="uaccess"
Ssupersasho 2019-07-27 github

@jomarocas Thank you so much! From all the udev rules this one actually worked. I'm considering myself lucky that after 3 years someone replied to this thread.

So what worked for me:

  1. Move all udev rules somewhere away (don't delete just in case)
    mv /etc/udev/rules.d/99-steam* ~/etc-udev/
    mv /lib/udev/rules.d/99-steam* ~/lib-udev/
  2. Copy above content from @jomarocas
    vi /lib/udev/rules.d/99-steam-controller-perms.rules
  3. Don't need to reboot just resend the udev rules:
    udevadm trigger
  4. Default settings in big picture in steam didn't work, had to change this:
    Settings > Controller Settings > Xbox Configuration Support

I've tried that only with octodad so far, so your experience may be different.

Nothing extracted yet.