How to fix your Steam Controller under Linux (Mint 18.3)

Upon plugging in a Steam Controller into my system under Linux the other day I found that it didn’t recognize it no matter what way I plugged it in (different USB ports, Bluetooth, wired or wireless), then I did some research and found out that you have to add your own ruleset. Not something difficult to do, but if anyone is still looking for a guide you can read this:

First you’ll need to figure out where your udev folder is, under Mint and most Ubuntu based distro’s the path should be /lib/udev/ and on other distros it can also be /usr/lib/udev

Once you figure that out type:

sudo gedit /lib/udev/rules.d/99-steamcontroller.rules

Or on other distro’s type su and your root password, then type:

gedit /lib/udev/rules.d/99-steamcontroller.rule

You can replace gedit with whatever text editing program you want to use, it can be terminal based or GUI. Running this command will open up a text file called 99-steamcontroller.rule (or create one if it doesn’t exist), edit it to look like this:

# 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 a group that the user that runs Steam belongs to KERNEL=="uinput", MODE="0660", GROUP="REPLACEWITHYOURNAMEORGROUP", OPTIONS+="static_node=uinput"

# Valve HID devices over USB hidraw KERNEL=="hidraw*", ATTRS{idVendor}=="28de", MODE="0666"

# Valve HID devices over bluetooth hidraw KERNEL=="hidraw*", KERNELS=="*28DE:*", MODE="0666"

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

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

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

# DualShock 4 over bluetooth hidraw KERNEL=="hidraw*", KERNELS=="*054C:05C4*", MODE="0666"

# DualShock 4 Slim over bluetooth hidraw KERNEL=="hidraw*", KERNELS=="*054C:09CC*", MODE="0666"

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

# Nintendo Switch Pro Controller over bluetooth hidraw KERNEL=="hidraw*", KERNELS=="*057E:2009*", MODE="0666"

Save your file and close, then restart Linux and launch Steam. Your controller should now be in working order as long as you have Steam open. If you close Steam it will stop functioning, you can get it to work outside of Steam if you install the Open Source Steam Controller Drivers.