Configurando el ratón Logitech G500 en Linux

Una vez más, es la comunidad la que hace un trabajo que deberían hacer los fabricantes. Si tienes uno de estos ratones y quieres configurarlo en Linux, puede que esto te ayude.

Un usuario del ratón Logitech G500 ha estado realizando un trabajo de ingeniería inversa para intentar averiguar de qué forma funciona el protocolo de este ratón.  El código no es demasiado amigable para el usuario final por lo que si no estás familiarizado con este tipo de configuraciones y quieres configurar este ratón sobre Linux, tendrás que seguir esperando. No obstante, lo recomendable en estos casos si tu sistema principal es Linux (y si todavía estás a tiempo), es no adquirir hardware que no tenga un buen soporte para Linux porque de lo contrario vas a perder el tiempo y los nervios.

El código fuente publicado contiene varias herramientas que hacen uso del controlador ‘hidraw’ del kernel. Este controlador proporciona una interfaz con los datos en bruto (raw) de los dispositivos de interfaz humana (HIDs) conectados mediante USB y Bluetooth.

El Logitech G500 genera dos dispositivos ‘hidraw’ de forma que hay que usar el segundo de ellos para configurar el ratón. Será necesario tener acceso de lectura y escritura al dispositivo ‘hidraw’ que se quiere manipular por lo que los comandos hay que ejecutarlos como root o cambiando los permisos al dispositivo.

Las herramientas que se han creado son estas:
· g500-dump-page: lee una página de memoria determinada del ratón y la muestra en la salida estándar (stdout).
· g500-read-block: Sólo lee datos de una longitud en bytes terminada.
· g500-edit-profile: Lee un perfil de la entrada estándar (stdin) y escribe el perfil modificado en stdout. Dispone de numerosos comandos de edición.
· g500-fill-page: Rellena una página de memoria determinada de unos (bytes FF).
· g500-mem-op: Un comando de propósito general para probar los comandos relacionados con las operaciones con la memoria.
· g500-parse-macro: Analiza el macro desde stdin.
· g500-parse-profile: Analiza el perfil desde stdin.
· g500-set-profile: Establece el perfil actual a uno almacenado en una página de memoria determinada.
· g500-write-block: Escribe un bloque de una longitud determinada de bytes desde stdin a una página de memoria establecida.
· g500-write-page: Sobreescribe una página completa con lo que se introduzca por stdin.

Todo esto establece una base para crear un programa de configuración que pueda usar cualquiera y, en realidad, supone todo el trabajo más pesado del desarrollo.

Si quieres experimentar con tu Logitech G500 en Linux, puedes conocer todos los detalles del funcionamiento de estas herramientas, descargar el código fuente y consultar las instrucciones de compilación en la página en Github de este pequeño proyecto.