如何让Steam手柄正常工作?

我买了一个Steam控制器,现在需要在Ubuntu上让它工作,怎么做呢?
7个回答

对于早于15.10版本的Ubuntu

识别控制器

创建udev文件:

sudoedit /lib/udev/rules.d/99-steam-controller-perms.rules

然后添加以下内容,不要忘记在文件中使用您的用户名!
# 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"

给控制器访问/dev/uinput

  • 快速而简单的方法:sudo chmod 666 /dev/uinput
  • 为了解决重启后仍然有效的问题:sudo apt-get install python3-autopilot 然后注销/重新登录或者重启。这将把您添加到一个具有对/dev/uinput写入权限的组中。这将添加一些您可能不需要的软件包,但是一旦steam软件包更新到位,您可以将它们删除。

另请参阅:


1我使用的是15.10版本,并且我有.rules文件。然而,第二行(KERNEL=="uinput", MODE=...)没有包含在内。这是否意味着如果我想要游戏手柄仿真,我还需要添加这一行呢?或者它会自动添加进去? - Joschua
如果您使用的是15.10或更新版本,除了插入适配器并在启动Steam大图模式时配对控制器外,无需进行任何操作。我正在使用Xubuntu 15.10,我已经插入了适配器,启动了大图模式,但无法配对控制器。它在Windows上运行良好,在Linux上有线连接时也可以工作,并且在我的SteamOS安装中也可以工作,但在Xubuntu 15.10上却无法工作。 - Aaron Franke
在后续的Ubuntu版本中安装Steam设备时需要执行以下步骤。然而,意识到这是问题的根源促使我在系统上安装了Steam设备并重新安装了Steam本身,因为我的安装非常旧(可能很久以前手动安装了Steam)。 - marcus

截至2016年11月22日的更新(如果您使用了此解决方案

由于最近的更新,您的udev规则必须进行更新。

编辑udev文件:

sudoedit /lib/udev/rules.d/99-steam-controller-perms.rules

将其中的所有内容替换为:

# 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"

现在拔出并重新插入您的Steam dongle,并修复您的控制器。

2这解决了我通过电缆无法识别SC的问题,但是我还需要注册参加Steam Beta。否则没有改变。 - Carolus
在这边运行得很好!谢谢!(我这边不再需要Steam Beta了) - Dominic Hayes
这解决了我在Ubuntu GNOME 17.04上的问题。谢谢! - Jesse

Ubuntu 16.10 使用说明

由于控制器无法直接使用,解决方案很简单:

sudo apt install steam-devices

重启后,它正常运行了。

此外,截至11月9日(我测试时),您还需要将Steam设置为Beta模式,以便在大图模式下更新控制器。 - Svetlana Belkin

我有15.10版本,我的控制器不工作。
我查看了上述提到的文件,发现提供的分发文件中有一个拼写错误。它将ATTRS{idVendor}重复了一次。第二个应该是idProduct
简而言之,这是文件原本的内容:
# 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"

这就是它应该说的(对我来说有效):
# 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上面提到的是哪些文件? - Oli
我明白了。/lib/udev/rules.d/99-steam-perms.rules 现在请看下面 ;) - Oli

正如Jorge Castro所指出的那样,这个解决方案运行良好。如果你将GROUP更改为users,它将覆盖系统上的所有用户账户。这样,如果你的安装使用不同的账户,你就不必不断修改文件了。

我刚拿到我的Steam手柄,插入我的Ubuntu 15.10 x64系统,却完全无法使用。然而,我注意到我的手柄有一些不同之处,在这里没有提到。
我在终端输入了lsusb,发现了以下内容:
Bus 001 Device 011: ID 28de:1042

我注意到默认的udev规则中列出的idProduct是"1102"或"1142"。所以,我在/lib/udev/rules.d/99-steam-perms.rules中添加了以下行(在其他类似行的下方):
SUBSYSTEM=="usb", ATTRS{idVendor}=="28de", ATTRS{idProduct}=="1042", MODE="0666"

我随后拔掉了USB插头,重新插入,然后它就正常工作了!接着它立即进行了固件更新(在Steam中)到“1142”,所以从技术上讲,我不再需要我添加的那行代码了。希望这对其他人有所帮助。

无法让我的控制器工作。Ubuntu 16.04。我按照Insperatus的建议将文本放入文件中,但仍然没有效果。
而是将文本放入/etc/udev/rules.d文件夹中的一个文件中。
在终端中输入以下内容: sudoedit /etc/udev/rules.d/99-steam-controller-perms.rules 然后从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"

我使用了上面的文本块,并按照第一个答案中的建议将文件命名为99-steam-controller-perms.rules
控制器现在可以正常工作。