I got a Steam Controller and I need to get it working in Ubuntu, how do I do that?
7 Answers
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:

- 71,754
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

- 4,693
-
2This fixed my problem with SC not being recognized via cable, but I also needed to sign up for Steam Beta participation. Otherwise didnt change. – Carolus Nov 28 '16 at 12:08
-
Works great over here! Thanks! (Doesn't need Steam Beta anymore from my side) – Dominic Hayes Dec 26 '16 at 10:40
-
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.

- 795
-
Adding to this: As of Nov 9th (when I tested this), you will also need Steam in Bata mode to the next update for the controller in the Big Picture mode, – Svetlana Belkin Nov 10 '16 at 00:22
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"

- 1,797
As noted by Jorge Castro. The solution works well. If you change the GROUP to users
it will cover all user accounts on the system. This way if your install uses different accounts, you don't have to keep making changes to the file.

- 71,754

- 113
I just got my Steam Controller, plugged it into my Ubuntu 15.10 x64 system and it wouldn't work, at all. However, I noticed something different about mine that wasn't mentioned here.
I typed lsusb
at the Terminal and found this:
Bus 001 Device 011: ID 28de:1042
I noticed the idProduct listed in the default udev rules were "1102" or "1142". So, I added the following line to /lib/udev/rules.d/99-steam-perms.rules
(Underneath the other similar lines):
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1042", MODE="0666"
I then unplugged the USB dongle, plugged it in and it works! Then it did a firmware update immediately (in Steam) to "1142" and so, I don't technically need the line I added anymore. I hope this helps someone else.

- 5,431

- 66
- 1
Couldn't get my controller to work either. Ubuntu 16.04. I placed the text in the files as suggested by Insperatus, but still no love.
Instead place the text in a file in /etc/udev/rules.d
.
Enter this in terminal:
sudoedit /etc/udev/rules.d/99-steam-controller-perms.rules
Then paste from this answer:
# This rule is needed for basic functionality of the controller in Steam and keyboard/mouse emulation
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", MODE="0666"
KERNEL=="uinput", MODE="0660", GROUP="users", 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"
I used the block of text from above and named the file as suggested in the 1st answer: 99-steam-controller-perms.rules
Controller now works.

- 21
.rules
file. However the second line (KERNEL=="uinput", MODE=
...) is not included. Does this mean I also have to add this line, if I want gamepad emulation? Or will this get added automatically? – Joschua Nov 07 '15 at 13:43