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"