I got a Steam Controller and I need to get it working in Ubuntu, how do I do that?

up vote 25 down vote accepted

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

  • 2
    This 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
  • This fixed my problem on Ubuntu GNOME 17.04. Thanks! – Jesse May 3 '17 at 6:13

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:

  • 1
    I'm on 15.10 and I have the .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 7 '15 at 13:43
  • "If you have 15.10 and newer you do not need to do anything except plug in the dongle and pair the controller when you launch steam big picture mode" I'm on Xubuntu 15.10, I plugged in the dongle, I launch big picture, and I can't pair the controller. It works fine in Windows and works when plugged in wiredly on Linux and also works on my SteamOS install but it doesn't work on Xubuntu 15.10 for me. – Aaron Franke Dec 10 '15 at 22:12

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.

  • 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 0: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
    Which files [mentioned above]? – Oli Apr 5 '16 at 21:14
  • I see. /lib/udev/rules.d/99-steam-perms.rules Now below ;) – Oli Apr 5 '16 at 21:15

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.

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.

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.

Your Answer

 

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.