udev-hid-bpf, una utilidad para solucionar los problemas con los dispositivos de entrada
Uno de los grandes «obstáculos» que tuvo Linux hace ya varios años fue el problema de compatibilidad de hardware y hablando, concretamente desde mi persona, en mi primer acercamiento con Linux en el 2009, si mi memoria no falla (efectos secundarios del Covid).
El primer gran problema al que me enfrente (después de lidiar con la instalación de Ubuntu y perder toda la info de mi HDD) fue el tema de la compatibilidad con mi tarjeta de video ATI Radeon HD de la serie 4000 (sinceramente no recuerdo el modelo exacto) y posterior a ello con un joystick, problemas con teclados, mouse, discos duros externos, antenas wifi, un sin fin de dispositivos que en su momento si no respaldabas en controlador que te daban en un CD, era rogar porque alguien más lo compartiera en la red.
Recuerdo que en esos ayeres, el poder encontrar información o apoyo al respecto era algo bastante tardado y complicado, ya que a diferencia de hoy en día que existen las redes sociales, hay mayor actividad y sobre todo la comunidad es mucho más grande y puedes encontrar mayor información o una documentación mucho más clara.
Esto fue uno de los motivos que me llevo a crear mi primer blog (en blogger) donde compartí todas aquellas soluciones a mis problemas con mis dispositivos en Ubuntu y que no muy fácilmente podías encontrar en la red. Gracias a ello encontré cierta pasión debido a que en su momento conocí a gente de diferentes países, con las cuales compartí mis experiencias, errores, dudas y básicamente mis vivencias con Linux. Para no hacer más largo el cuento y llegar al punto del artículo, es que cuantos de nosotros no nos llegamos a topar con algún problema de compatibilidad de hardware en Linux y tuvimos que lidiar un buen rato con ello.
La razón de haber hablado un poco sobre esto, es que navegando por la red me encontré con una noticia que me hubiera gustado tener en ese 2009. Y es que Peter Hutterer, responsable del subsistema de entrada X.Org en Red Hat junto con Benjamin Tissoires (un ingeniero de Software de Red Hat) han ideado una propuesta para resolver estos problemas que solían requerir la creación de controladores personalizados o la aplicación de parches al nivel del kernel.
Con la finalidad de abordar esta problemática ha surgido una herramienta llamada «udev-hid-bpf» que simplifica y agiliza este proceso. Esta herramienta está diseñada para cargar automáticamente programas BPF que solucionan problemas en dispositivos de entrada HID (Human Interface Device) o modifican su comportamiento según las preferencias del usuario.
Para crear controladores para dispositivos HID, como teclados y ratones, se utiliza el subsistema HID-BPF, que se introdujo en el kernel de Linux 6.3 y como tal el subsistema permite crear controladores de dispositivos de entrada en forma de programas BPF o gestionar varios eventos en el subsistema HID.
udev-hid-bpf se puede usar junto con udev para activar automáticamente programas BPF cuando se conectan nuevos dispositivos de entrada, o para cargar programas BPF manualmente y ofrece dos categorías principales de programas BPF que se pueden usar con udev-hid-bpf: programas para solucionar problemas de hardware o firmware, y programas para cambiar el comportamiento de los dispositivos a solicitud del usuario.
Estos programas son específicos del dispositivo y se utilizan para modificar informes según las necesidades particulares. Por ejemplo, en el primer caso, se abordan problemas como ejes de coordenadas invertidos, rangos de valores incorrectos (por ejemplo, informar sobre 8 botones en lugar de 5) y secuencias de eventos ilógicos. En el segundo caso, se trata de cambiar la configuración del dispositivo, como intercambiar botones.
Lo que hace udev-hid-bpf es aplicar programas BPF de HID que el kernel percibe el informe modificado como si proviniera directamente del dispositivo, simplificando el proceso de corrección en comparación con el desarrollo de controladores de kernel personalizados. Al utilizar comandos como ‘udev-hid-bpf install’, los programas BPF se cargan automáticamente al conectar los dispositivos, facilitando la corrección y mejora la interacción con los dispositivos de entrada.
Si estás interesado en conocer más sobre esta herramienta, puedes consultar los detalles en el siguiente enlace.