FS#49926 - [steam] Fix Steam Controller Hot Swapping

Attached to Project: Community Packages
Opened by Dor Askayo (xtor91) - Sunday, 03 July 2016, 13:34 GMT
Last edited by Levente Polyak (anthraxx) - Monday, 05 December 2016, 22:50 GMT
Task Type Bug Report
Category Packages: Multilib
Status Closed
Assigned To Levente Polyak (anthraxx)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 2
Private No

Details

Description:
Hot swapping during a session doesn't currently work since Steam Controller dongles only becomes userspace-accessible upon logind session creation/change.

Additional info:
steam 1.0.0.52-2

The root cause:
Steam requires Steam Controller dongles to be userspace-accessible in order to access and control them. As such, the steam package was recently updated to allow that, by specifying TAG+="uaccess" in "80-steam-controller-permission.rules".
However, the problem here is that logind applies these rules only on session creation/change, while for hot swapping to work, the rules also have to be applied when the dongle is connected during a session. While udev is responsible for that, it currently ignores these rules since it stops looking for "uaccess" after it reaches "73-seat-late.rules".[1] Therefore, to solve the issue, the current rules must simply be applied before "73-seat-late.rules".

Proposed solution (tested with multiple dongles and controllers):
Rename "80-steam-controller-permission.rules" to "70-steam-controller-permission.rules". (80 to 70)

[1] https://lists.freedesktop.org/archives/systemd-devel/2015-August/033960.html
This task depends upon

Closed by  Levente Polyak (anthraxx)
Monday, 05 December 2016, 22:50 GMT
Reason for closing:  Duplicate
Additional comments about closing:   FS#46752 
Comment by Jan (medhefgo) - Friday, 08 July 2016, 13:01 GMT
 FS#49926 ,  FS#47330  and  FS#46752  are all the same.

Right now the controller is working perfectly fine when it was plugged in before booting. As  FS#47995  explains, this is because the uaccess tag is applied by udev rules after it is consumed by the logind udev rule. Since the tag would usually be applied before the rule before logind starts, the controller works fine after boot, but not, for hotpluggin or suspend/resume cycles.

The correct solution would indeed be moving the steam controller udev rule priority to 70 and not as the other bugs suggest to change the mode or use a special steam controllers group for this. This ensure that the uaccess tag mechanic is in use (acl based access rights to the user whose session is active according to logind).

Loading...