How do I get a Steam Controller working?
I got a Steam Controller and I need to get it working in Ubuntu, how do I do that?
For Ubuntu releases older than 15.10
Recognizing the controller
Create a the udev file:
sudoedit /lib/udev/rules.d/99-steam-controller-perms.rules
then add the following contents, don't forget to use YOUR username in the file!
# 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="pgriffais", OPTIONS+="static_node=uinput"
Give the controller access to /dev/uinput
- For quick and dirty,
sudo chmod 666 /dev/uinput
- For a workaround that survives reboots:
sudo apt-get install python3-autopilot
Then log out/in or reboot. This will add you to a group that has write access to/dev/uinput
. This will add a few packages which you probably won't need, but you can remove them once the steam package update arrives.
See also:
- https://bugs.launchpad.net/ubuntu/+source/steam/+bug/1498658
- https://bugs.launchpad.net/ubuntu/+source/steam/+bug/1498655
- http://steamcommunity.com/groups/steamuniverse/discussions/2/490123197947211023/
Update as of 11/22/2016 (if you used this solution)
Due to a recent update your udev rule must be updated.
Edit the udev file:
sudoedit /lib/udev/rules.d/99-steam-controller-perms.rules
Replace everything in it with:
# 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="pgriffais", 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"
Now unplug and replug your Steam dongle and repair your controller
Instructions for Ubuntu 16.10
As the controller didn't work out of the box, it was a simple solution:
sudo apt install steam-devices
After reboot it worked fine.
I have 15.10 and my controller wasn't working.
I viewed the files mentioned above and I see a typo in the distribution provided file. It has ATTRS{idVendor}
twice. The second one is supposed to be idProduct
.
To recap, this is what the file used to say:
# Steam Controller device node write access, per lp:1498655
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idVendor}=="1102", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idVendor}=="1142", MODE="0666"
# Steam Controller udev write access, per lp:1498658
KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"
And this is what it was supposed to say (and works for me):
# Steam Controller device node write access, per lp:1498655
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1102", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1142", MODE="0666"
# Steam Controller udev write access, per lp:1498658
KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"