Steam Controller support: need read-write access to /dev/uinput for controller emulation

Bug #1498658 reported by Pierre-Loup Griffais on 2015-09-22
48
This bug affects 9 people
Affects Status Importance Assigned to Milestone
steam (Ubuntu)
Undecided
Unassigned
Trusty
Undecided
Unassigned
Vivid
Undecided
Unassigned
Wily
Undecided
Unassigned

Bug Description

The Steam Controller is about to ship; for native controller support through the SteamWorks API, keyboard emulation, mouse emulation, having access to the regular device nodes is enough, but to emulate a game controller that applications can use through SDL, the user that runs Steam needs write access to /dev/uinput in order to create a virtual controller device. This is a pretty critical feature of the controller and not having it will limit the end-user experience in various ways.

This is already enabled in SteamOS through a udev rule for the 'steam' account, but we have not flipped that switch across the board in our own Ubuntu package for Steam, as it could be seen as a security concern.

Ideally the Ubuntu-provided 'steam' package would be set up in such a way that only the Steam client has write access to /dev/uinput.

Marc Deslauriers (mdeslaur) wrote :

On Ubuntu, users should already have write access to /dev/uinput:

$ getfacl /dev/uinput
getfacl: Removing leading '/' from absolute path names
# file: dev/uinput
# owner: root
# group: autopilot
user::rw-
user:mdeslaur:rw-
group::rw-
mask::rw-
other::---

Is that not enough?

It should be enough. Was that always the case in Ubuntu or a recent change?

It also doesn't seem to be the case for me on Ubuntu 15.04:

pgriffais@spaceport:/etc/udev/rules.d$ getfacl /dev/uinput
getfacl: Removing leading '/' from absolute path names
# file: dev/uinput
# owner: root
# group: root
user::rw-
group::rw-
other::---

Marc Deslauriers (mdeslaur) wrote :

Oh, you're absolutely right.
It looks like mine is like that because I have the "python3-autopilot" package installed which adds a udev rule:

KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"

So yes, something similar needs to be added to the steam package.

Changed in steam (Ubuntu):
status: New → Confirmed
Changed in steam (Ubuntu Wily):
status: Confirmed → Fix Committed
Changed in steam (Ubuntu Trusty):
status: New → Confirmed
Changed in steam (Ubuntu Vivid):
status: New → Confirmed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package steam - 1:1.0.0.48-1ubuntu2

---------------
steam (1:1.0.0.48-1ubuntu2) wily; urgency=medium

  * Add device node udev rules for the Steam Controller. (LP: #1498655)
  * Add uinput rule for the Steam Controller. (LP: #1498658)

 -- Martin Packman <email address hidden> Tue, 13 Oct 2015 19:57:01 +0000

Changed in steam (Ubuntu Wily):
status: Fix Committed → Fix Released

On Ubuntu 15.10, the proposed rule (KERNEL=="uinput", SUBSYSTEM=="misc", TAG+="uaccess"), which was preapplied on my system, doesn't fix the issue (of permissions on /dev/uinput) for me - I still need to either manually chmod it or add a custom udev rule that sets the mode.

ted chang (monkeyboyted) wrote :

http://askubuntu.com/questions/686214/how-do-i-get-a-steam-controller-working/711081

As reported by stephen, it has been noted there is a typo in the udev rules.

On a fresh 15.10 install, changing

SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idVendor}=="1102", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idVendor}=="1142", MODE="0666"

to
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1102", MODE="0666"
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1142", MODE="0666"

fixes the issue.

Please release commit a new fix. I was quite surprise that the steam controller issue is not fixed already.

Marc Deslauriers (mdeslaur) wrote :

The fix for this is already in -proposed for all releases. It is being tracked in bug 1498655.
Please test it and add testing results to bug 1498655 so the fix gets released.

ted chang (monkeyboyted) wrote :

hmmm, I did not realize it was in proposed. Its works

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers