Dualsense en GNU/Linux

May 20, 2021
sony driver linux kernel dualsense fedora

Desde finales del año pasado Sony anunció que daría soporte al nuevo control de su consola Play Station 5, denominado DualSense, liberando el código de un módulo para el kernel de linux que brinda este soporte. Sin embargo, la integración de este código en el kernel de linux se da en la versión 5.12, la cual no es aún adoptada por ninguna de las más conocidas distribuciones de linux (exceptuando probablemente a Arch). Este controlador soporta, como es de esperarse, las funcionalidades básicas del control y además incluye soporte para el motor de vibración, el giroscopio y acelerómetro, así como el touchpad.

Si quieres probarlo por tu cuenta, pero no tienes idea de cómo compilar y cargar un modulo del kernel de linux basta seguir estos sencillos pasos:

Asegúrate de tener instalados los paquetes de desarrollo del kernel de acuerdo a tu distribución. Por ejemplo en Fedora:

$ sudo dnf install kernel-devel

Asegúrate de tener instalado el compilador gcc y make (Fedora las incluye por defecto)

Descarga los siguientes archivos (parte del paquete hid-playstation-dkms) de Arch en algún directorio

En el mismo directorio crea el archivo Makefile con el siguiente contenido:

obj-m += hid-playstation.o

KERNEL_SRC ?= /lib/modules/$(shell uname -r)/build

all:
	$(MAKE) -C $(KERNEL_SRC) V=0 M=$$PWD

install:
	cp hid-playstation.ko /lib/modules/$(shell uname -r)/kernel/drivers/hid/
	depmod -a
	modprobe hid-playstation

clean:
	rm -rf deps.h *.o *.ko *.mod *.mod.c *.symvers *.order .*.cmd .tmp_versions

Aplica el parche para habilitar la función de vibración del control:

$ patch hid-playstation.c disable-ff-enabled-check.patch

Y finalmente compilamos e instalamos usando el Makefile

$ make
$ sudo make install

Una vez hecho esto puedes conectar el control ya sea via bluetooth o de manera alámbrica. Sabrás que el módulo se ha instalado correctamente porque la luz de jugador se encenderá (Esta luz no enciende si conectas el control sin el módulo).

comments powered by Disqus