Why isn't Steam detecting the Steam Controller?

I am using up-to-date Arch linux (kernel 5.8.3-arch1-1) with the vanilla multilib/steam 1.0.0.64-1 package.

Today I plugged in my Steam Controller for the first time on this install, and to my surprise it was plug-and-play. I could immediately move my mouse around with the thumb pad, and I can use it to navigate the Steam Big Picture mode menu.

However, Steam doesn’t seem to recognize it as a controller. If I go to Settings -> Controller -> Controller settings (inside Big Picture) it says “No controllers detected” at the very bottom. This means I can’t apply any profiles to the controller, which makes it completely useless.

Does anybody else have a Steam Controller working on Linux at the moment? Should I even expect it to work as it does on Windows?


What I have tried:

  • Rebooting the PC with the receiver plugged in

  • Plugging the receiver out and back in again with Steam running

  • Running udevadm control --reload and udevadm trigger, then restarting Steam

    This results in these errors:

    ➜ sudo udevadm trigger
    Failed to write 'change' to '/sys/devices/virtual/input/input46/uevent': Cannot allocate memory
    Failed to write 'change' to '/sys/devices/virtual/input/input47/uevent': Cannot allocate memory
    

I have had issues connecting the controller before due to permission errors, but this seems to have been fixed with udev rules that comes packaged with the Steam package. I have read/write access to all of /input/event*, and Steam isn’t printing any permissions errors on startup like it did back then. Here is the entire output from Steam from startup until after I’ve opened Big Picture:

➜ steam
Running Steam on arch rolling 64-bit
STEAM_RUNTIME is enabled automatically
Pins up-to-date!
Steam client's requirements are satisfied
/home/tomas/.local/share/Steam/ubuntu12_32/steam
[2020-08-28 14:53:39] Startup - updater built Jul 31 2020 09:12:07
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
[2020-08-28 14:53:39] Verifying installation...
[2020-08-28 14:53:39] Verification complete
Loaded SDL version 2.0.13-5893924

(steam:5833): Gtk-WARNING **: 14:53:41.797: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Adwaita-dark/gtk-2.0/main.rc:733: error: unexpected identifier 'direction', expected character '}'

(steam:5833): Gtk-WARNING **: 14:53:41.799: Unable to locate theme engine in module_path: "adwaita",
/usr/share/themes/Adwaita-dark/gtk-2.0/hacks.rc:28: error: invalid string constant "normal_entry", expected valid string constant
Installing breakpad exception handler for appid(steam)/version(1596217132)
STEAM_RUNTIME_HEAVY: ./steam-runtime-heavy
[0828/145342.029828:INFO:crash_reporting.cc(247)] Crash reporting enabled for process: browser
[0828/145342.045224:WARNING:crash_reporting.cc(286)] Failed to set crash key: UserID with value: 0
[0828/145342.045262:WARNING:crash_reporting.cc(286)] Failed to set crash key: BuildID with value: 1596186727
[0828/145342.045268:WARNING:crash_reporting.cc(286)] Failed to set crash key: SteamUniverse with value: Public
[0828/145342.045271:WARNING:crash_reporting.cc(286)] Failed to set crash key: Vendor with value: Valve
[0828/145342.084359:WARNING:crash_reporting.cc(286)] Failed to set crash key: UserID with value: 0
[0828/145342.084415:WARNING:crash_reporting.cc(286)] Failed to set crash key: BuildID with value: 1596186727
[0828/145342.084424:WARNING:crash_reporting.cc(286)] Failed to set crash key: SteamUniverse with value: Public
[0828/145342.084431:WARNING:crash_reporting.cc(286)] Failed to set crash key: Vendor with value: Valve
[0828/145342.084968:INFO:crash_reporting.cc(247)] Crash reporting enabled for process: gpu-process
[0828/145342.146455:ERROR:sandbox_linux.cc(372)] InitializeSandbox() called with multiple threads in process gpu-process.
[0828/145342.164370:WARNING:crash_reporting.cc(286)] Failed to set crash key: UserID with value: 0
[0828/145342.164420:WARNING:crash_reporting.cc(286)] Failed to set crash key: BuildID with value: 1596186727
[0828/145342.164425:WARNING:crash_reporting.cc(286)] Failed to set crash key: SteamUniverse with value: Public
[0828/145342.164430:WARNING:crash_reporting.cc(286)] Failed to set crash key: Vendor with value: Valve
[0828/145342.164909:INFO:crash_reporting.cc(247)] Crash reporting enabled for process: utility
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Warning: failed to set thread priority: set failed for 8: -1: setpriority() failed
Warning: failed to set thread priority: set failed for priority 8
Warning: support for elevated priorities is most likely unavailable, suppressing future warnings
Warning: failed to set thread priority: set failed for 8: -1: setpriority() failed
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Proceed to auto login

** (steam:5833): WARNING **: 14:53:42.454: Could not initialize NMClient /org/freedesktop/NetworkManager: The name org.freedesktop.NetworkManager was not provided by any .service files
CApplicationManagerPopulateThread took 56 milliseconds to initialize (will have waited on CAppInfoCacheReadFromDiskThread)
Installing breakpad exception handler for appid(steam)/version(1596217132)
CAppInfoCacheReadFromDiskThread took 129 milliseconds to initialize
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Fossilize INFO: Overriding serialization path: "/home/tomas/.local/share/Steam/shader_cache_temp_dir_vk_64/fozpipelinesv4/steamapprun_pipeline_cache".
Opted-in Controller Mask for AppId 0: 0

(steam:5833): Gtk-WARNING **: 14:53:52.717: gtk_disable_setlocale() must be called before gtk_init()
Installing breakpad exception handler for appid(steam)/version(1596217132)
roaming config store loaded successfully - 25813 bytes.
migrating temporary roaming config store
BRefreshApplicationsInLibrary 1: 23ms
[0828/145355.096453:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
[0828/145355.179044:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
[0828/145355.264643:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
Installing breakpad exception handler for appid(steam)/version(1596217132)
Failed to init SteamVR because it isn't installed
ExecCommandLine: "'/home/tomas/.local/share/Steam/ubuntu12_32/steam'"
System startup time: 15.50 seconds
Warning: failed to set thread priority: set failed for 4: -1: setpriority() failed
Warning: failed to set thread priority: set failed for priority 4
Warning: support for elevated priorities is most likely unavailable, suppressing future warnings
[0828/145355.592870:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
[0828/145355.594858:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
Warning: failed to set thread priority: set failed for 4: -1: setpriority() failed
Warning: failed to set thread priority: set failed for priority 4
Warning: support for elevated priorities is most likely unavailable, suppressing future warnings
BuildCompleteAppOverviewChange: 502
RegisterForAppOverview 1: 28ms
RegisterForAppOverview 2: 29ms
[0828/145357.731307:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
[0828/145357.794872:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
Installing breakpad exception handler for appid(steam)/version(1596217132)
Fontconfig warning: "/home/tomas/.local/share/Steam/bin/panorama/etc/fonts/conf.d/41-repl-os-win.conf", line 148: Having multiple values in <test> isn't supported and may not work as expected
Fontconfig warning: "/home/tomas/.local/share/Steam/bin/panorama/etc/fonts/conf.d/41-repl-os-win.conf", line 160: Having multiple values in <test> isn't supported and may not work as expected
Compiled against SDL version 2.0.13 and linked against SDL version 2.0.13
COpenGLSurface::BInitialize: Current session is 
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
Installing breakpad exception handler for appid(steam)/version(1596217132)
defaultfocus=DummyInput not found within layout file for welcome_nocontroller
defaultfocus=DummyInput not found within layout file for welcome_nocontroller
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/mainmenu_bg_2.png (dimensions 1920x1080, took 61 msec)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
Installing breakpad exception handler for appid(steam)/version(1.0)
No cached sticky mapping in Get*ActionHandle. Native Steam Controller support won't work.
Installing breakpad exception handler for appid(steam)/version(1596217132)
[0828/145731.892212:INFO:crash_reporting.cc(270)] Crash reporting enabled for process: renderer
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/profile/profile_bg_wash.png (dimensions 1879x928, took 27 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/profile/activity_bg_wash.png (dimensions 1879x928, took 35 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/systemmenu/capsule_glow.png (dimensions 1920x1080, took 47 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/welcomeupdates/controller_update_moystick.jpg (dimensions 1922x598, took 28 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/welcomeupdates/controller_update_personalize.jpg (dimensions 1922x598, took 23 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/welcomeupdates/controller_update_mouseregions.jpg (dimensions 1922x598, took 41 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/welcomeupdates/controller_update_gyro_touchmenu.jpg (dimensions 1922x598, took 48 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/welcomeupdates/controller_update_hometheater.jpg (dimensions 1922x598, took 23 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/welcomeupdates/controller_update_shortcuts.jpg (dimensions 1922x598, took 30 msec)
Slow image load - /home/tomas/.local/share/Steam/tenfoot/resource/images/panel_background.png (dimensions 1920x1080, took 23 msec)
saving roaming config store to 'sharedconfig.vdf'
roaming config store 2 saved successfully
HTTP Response for https://store.steampowered.com/api/messages/?cc=NO&l=english&gids=2544925237355664223,3333975576870345937,9151592789844588702: 200, 1511
HTTP Response for https://store.steampowered.com/api/featured/?cc=NO&l=english: 200, 21558
HTTP Response for https://store.steampowered.com/api/featured/?cc=NO&l=english: 200, 21558
DispatchAsyncEvent backlog, failed to dispatch all this frame. Queue depth: 1104 (1527 input number was)
Installing breakpad exception handler for appid(steam)/version(1596217132)
DispatchAsyncEvent backlog, failed to dispatch all this frame. Queue depth: 594 (1130 input number was)
DeleteFBOFreeList: Removing 47 FBO objects, total 1
Moving back to: ShowSettingsMenu (focus: none)
Removing from backstack: ShowSettings (focus: none)
Moving back to: ShowSettingsMenu (focus: none)
Removing from backstack: ShowSettings (focus: none)
Moving back to: ShowSettingsMenu (focus: none)
Removing from backstack: ShowSettings (focus: none)
Moving back to: ShowSettingsMenu (focus: none)
Removing from backstack: ShowSettings (focus: none)
Moving back to: ShowSettingsMenu (focus: none)

Don’t know what this means per se, but it seems to be telling you that it won’t work. I guess look into cached sticky mapping?

Also, is this running Gnome or some other DE? idk if that matters

According to the Arch and Gentoo wikis, try running udevadm control --reload and udevadm trigger as root and see if that changes anything

Did you try plugging it in again, with steam running?

@reavessm @Trooper_ish

Ok I think I figured it out, apparently the udev rules that come with the Steam package still don’t work… :roll_eyes:

I was focused on /dev/input/event*, but apparently those don’t matter. All /dev/hidraw* are still owned by root and have no read/write permissions by anybody else.

If I run sudo chmod o+rw /dev/hidraw* before I start Steam, now it picks up the controller natively like it does on Windows.

This permission issue has drained far too many hours of my life already. How come these rules don’t work?

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

# Steam Controller udev write access
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", 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"

# PowerA Wired Controller for Nintendo Switch
KERNEL=="hidraw*", ATTRS{idVendor}=="20d6", ATTRS{idProduct}=="a711", MODE="0660", TAG+="uaccess"

# PowerA Wireless Controller for Nintendo Switch we have to use
# ATTRS{name} since VID/PID are reported as zeros. We use /bin/sh
# instead of udevadm directly becuase we need to use '*' glob at the
# end of "hidraw" name since we don't know the index it'd have.
#
KERNEL=="input*", ATTRS{name}=="Lic Pro Controller", RUN{program}+="/bin/sh -c \"udevadm test-builtin uaccess /sys/%p/../../hidraw/hidraw*\""

# 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"

# ZeroPlus P4 (hitbox)
KERNEL=="hidraw*", ATTRS{idVendor}=="0c12", ATTRS{idProduct}=="0ef6", 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"

# HORIPAD for Nintendo Switch
KERNEL=="hidraw*", ATTRS{idVendor}=="0f0d", ATTRS{idProduct}=="00c1", 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"

# Astro C40
KERNEL=="hidraw*", ATTRS{idVendor}=="9886", ATTRS{idProduct}=="0025", MODE="0660", TAG+="uaccess"

I assume the top three lines are the relevant lines for the Steam controller. The wireless receiver for the Steam controller has this ID: 28de:1142. Are these rules supposed to give me read/write access to the hidraw devices when the controller is connected? If so, why don’t they? :thinking:

1 Like

You didn’t specify a group for your udev rules, and you’re saying the mode is 0660 which gives 0 acces to non-owners and non-group members. Try changing the Steam Controller udev write access to be:

KERNEL=="uinput", SUBSYSTEM=="misc", GROUP="input", MODE="0660", OPTIONS+="static_node=uinput", TAG+="uaccess"

You might also want to change all the other steam controller udev rules (particularly the hidraw*'s) to have a MODE=“0666”

then adding your user to the input group with sudo gpasswd -a <user> input

I didn’t write these rules :man_shrugging: You would think the rules that come packaged with a piece of software would work for that software.

I have started a thread on the Arch linux forums about this: https://bbs.archlinux.org/viewtopic.php?pid=1923859

I will test your proposed changes to the udev rules as soon as possible.

1 Like

yeah, I got those rules from the Gentoo Wiki FWIW. I’m out of town so I can’t check my personal configs but I imagine they’re whatever the wiki says is default

@reavessm @Trooper_ish I figured it out! :smiley: Turns out I wasn’t following all of the Arch wiki’s advice when starting my desktop session. I am now forcing X to start on the same TTY that I logged in on, which apparently is needed to make ACLs work.

3 Likes