Cómo configurar Steam Controller fuera de Debian y derivadas
Aunque Steam puede funcionar sobre casi cualquier distribución Linux, no se puede decir lo mismo de su mando oficial, Steam Controller, cuyo funcionamiento puede dejar fríos a todos aquellos que no usen Ubuntu, Linux Mint o Debian 8 o superior. Que Valve y la inmensa mayoría de las desarrolladoras recomienden Ubuntu y/o SteamOS para jugar no es algo trivial, ya que son las únicas distribuciones oficialmente soportadas por la popular plataforma de videojuegos.
¿Qué problema hay? Si no se instala Steam desde el paquete oficial, posiblemente no se configuren las reglas de udev necesarias para hacer funcionar de forma plena Steam Controller. En consecuencia, el usuario verá que no puede actualizar el firmware del mando y que tiene que conectarlo al USB antes de encender el ordenador para que sea detectado correctamente por el sistema, ya que este proceso no puede hacerse en caliente.
Este problema no está presente en Windows, por lo que el periférico de Valve puede terminar siendo decepcionante para muchos usuarios de GNU/Linux que no lo son de Debian y sus derivadas. Pese a todo, esto tiene remedio, pudiéndose obtener una experiencia plena, con detección en caliente y actualización de firmware, sobre cualquier distribución capaz de ejecutar Steam correctamente.
¿Usáis Ubuntu, Linux Mint o Debian 8 y no os aparecen las reglas de udev? Sería recomendable realizar una desinstalación completa de Steam, empezando por el paquete y luego por las configuraciones de usuario (~/.steam y ~/.local/share/Steam/), descargarse el paquete Deb del sitio web oficial de Steam e instalarlo. Cuidado con las partidas guardadas, porque no todos los juegos las suben a Steam Cloud y pueden estar almacenadas en algunas de las carpetas a borrar. ¿Os da pereza reinstalarlo todo? Podéis seguir algunas de estas soluciones, que a fin de cuentas os tendrían que servir igual.
Solución rápida
Sobre un GNU/Linux moderno, para establecer las reglas de udev para el Steam Controller (en caso de no haber instalado Steam a través del paquete Deb oficial), se tiene que abrir el siguiente fichero con permisos de root (cuidado con sudo, porque algunas distribuciones no lo instalan o configuran por defecto).
sudo nano /lib/udev/rules.d/99-steam-controller-perms.rules
Después de crear el fichero hay que copiar y pegar en su interior el siguiente código:
# 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"
El código situado justo arriba se tiene que introducir en todas las soluciones propuestas en este especial. Solo cambiando la línea resaltada en rojo y con una palabra en negrita, que es la siguiente:
KERNEL=="uinput", MODE="0660", GROUP="pgriffais", OPTIONS+="static_node=uinput"
Es imprescindible sustituir la palabra pgriffais en GROUP= por el nombre de algún grupo al cual pertenezca el usuario. No, esto no es VirtualBox, aquí vale cualquier grupo, aunque el resultado puede terminar siendo algo chapucero. Por ejemplo, si nuestro usuario está añadido al grupo video, esta configuración sería válida:
KERNEL=="uinput", MODE="0660", GROUP="video", OPTIONS+="static_node=uinput"
Tras establecer en la norma de udev el grupo del usuario que hace uso de Steam, solo hay que guardar los cambios, cerrar el fichero y reiniciar el ordenador para que el Steam Controller pueda ser detectado en caliente sobre GNU/Linux.
Con un poco más de elegancia
Con el fin de ofrecer una solución un poco más ortodoxa, lo que haremos será añadir nuestro propio usuario al grupo generado para este. Dicho de otra forma, si el usuario utilizado se llama muylinux, lo añadiremos al grupo muylinux.
Para comprobar desde la consola si nuestro usuario está añadido al grupo homónimo hay que introducir el siguiente comando:
cat /etc/group | grep tuusuario
Obviamente, se tiene que sustituir la palabra tuusuario por el nombre del usuario que está haciendo uso de Steam. Si está añadido al grupo homónimo, entre los resultados tendría que aparecer el siguiente:
tuusuario:x:1000:tuusuario
Sin embargo, si no está añadido, el resultado tendría que ser este otro, ya que la columna de la izquierda corresponde a los grupos, mientras que la columna de la derecha corresponde a los usuarios añadidos a ese grupo (el número 1000 es mejor obviarlo, ya que puede cambiar según la distribución, la configuración o bien si se ha estado añadiendo y quitando usuarios durante el tiempo de uso del sistema):
tuusuario:x:1000:
Así que para añadirlo solo es necesario ejecutar el siguiente comando:
usermod -a -G tuusuario tuusuario
Con una buena herramienta gráfica para la gestión de grupos y usuarios (YaST, gestor de configuración de Manjaro, Kuser, gnome-system-tools… ) estos pasos se pueden realizar de forma más rápida y fácil.
Tras añadir el usuario al grupo homónimo, se sustituye la palabra pgriffais en las reglas de udev (el fichero /lib/udev/rules.d/99-steam-controller-perms.rules) por el nombre del usuario que hace uso de Steam. Luego se guardan los cambios, se cierra el fichero y se reinicia el ordenador. Con esto el cliente de Steam ya es capaz de detectar en caliente un Steam Controller sobre GNU/Linux sin complicaciones, además de otorgar permisos de escritura para las actualizaciones de firmware.
KERNEL=="uinput", MODE="0660", GROUP="tuusuario", OPTIONS+="static_node=uinput"
Remedio para openSUSE
La distribución del camaleón tiene una configuración por defecto propia para los usuarios comunes, añadiéndolos todos al grupo users. Esto facilita la tarea de configuración del Steam Controller, ya que en el fichero /lib/udev/rules.d/99-steam-controller-perms.rules solo se tiene que cambiar la palabra pgriffais por users.
KERNEL=="uinput", MODE="0660", GROUP="users", OPTIONS+="static_node=uinput"
Para cuando hay varios usuarios del sistema utilizando el Steam Controller
Este es el remedio “genérico” propuesto por la comunidad de Arch Linux y es el más fácil de explicar tras el de openSUSE. En caso de tener varios usuarios del sistema haciendo uso de Steam y el Steam Controller, lo suyo es crear un grupo específico para el periférico y añadir a este los usuarios pertinentes. En primer lugar creamos el grupo para el Steam Controller:
groupadd steamcontroller
Después añadimos los usuarios que utilizan Steam al grupo recientemente creado:
usermod -a -G steamcontroller tuusuario
Se puede añadir varios usuarios a la vez de la siguiente manera:
usermod -a -G steamcontroller usuario1 usuario2 usuario3
Después, en el fichero 99-steam-controller-perms.rules ubicado en /lib/udev/rules.d/, hay que sustituir la parte donde pone GROUP=”pgriffais” por GROUP=”steamcontroller“, guardar los cambios, cerrar el fichero y reiniciar para que el Steam Controller pueda ser detectado en caliente.
KERNEL=="uinput", MODE="0660", GROUP="steamcontroller", OPTIONS+="static_node=uinput"