domingo, julio 01, 2018

Touchscreen funcionando en ArchLinux con Teclast Tbook T16 Power

domingo, julio 01, 2018

Después de muchos intentos y de una larga investigación, por fin puedo disfrutar de mi tablet x86 100% funcional, sin Android ni ningún sistema operativo extraño que no tenga soporte.

Gracias a un par de herramientas he podido completar con éxito el calibrado de la tablet.



El principal problema era el firmware que debía de utilizar, confié en la comunidad y en este caso... era la comunidad la que me hacía estar equivocado.

Mi confianza en la marca china Teclast ha sido bastante útil, no porque sea una marca símbolo de calidad, sino porque su precio y su hardware eran lo que deseaba encontrar (aunque su soporte era nefasto).

La primera tablet que cacharreé fue la Teclast x98 Air II, a esa tablet la he hecho de todo, hasta modificar su BIOS, ha sido una gran demostración para mí de romper fronteras, pero cuando conseguía tener todo 100% funcional... faltaba lo más básico, el touchscreen, que se volvía loco.

La segunda tablet es una Teclast Tbook T16 Power, con 8 gigas ni más ni menos de RAM. Es una pasada esta tablet, y la verdad es que es superpotente (para ser una tablet), una alternativa muy buena para los que no queráis tener Windows y tener las grandes ventajas de una Surface a un precio que cualquier bolsillo puede acceder.

En este caso, avancé hasta el mismo punto que conseguí con la x98, pero no quería abandonar. Intenté descifrar el problema y llegué a un punto en el que tenía táctil pero sólo conseguí que con un eje funcionara (el eje Y, por cierto). Me servía para bajar y subir de página mientras navegaba, pero eso no me permitía hacer cosas como escribir, o seleccionar con algún tipo de precisión lo que yo deseaba. Así que desistí.

Un año después, mirando el triste y sucio Windows que trae no pude actualizarlo. Tiene una licencia de W10Home en la BIOS), intenté actualizarlo a la última versión, pero qué sorpresa que me diera un error raro, un error de que Windows no se ha podido actualizar (el paquete de actualizaciones de este año de abril intenta, no sabiendo por qué, escribir en la partición reservada que crea durante la instalación (de 16 mb) algo relacionado con las traducciones, y resulta que no tiene espacio suficiente (o eso dicen desde Microsoft).

Un sistema operativo más inseguro e ineficiente que aunque en esta tablet funcione relativamente fluído, no quería tener.

Luego me puse a mirar el Android que rooteé, y que viene de serie (con 2 actualizaciones después de comprarlo), con lo que tenía un Android 6 superdesactualizado, del que no me parecía que tuviéramos él y yo una gran confianza. Así que hice un backup de la carpeta de firmware para utilizarla en una instalación limpia de android-x86 y conseguí tener un Android Oreo 8.1 con los últimos parches de seguridad. Pero mi decepción fue que al intentar abrir una de mis aplicaciones favoritas la aplicación dejó de funcionar, y eso me molestó mucho, porque no quería tener Android más que para usar esa app. Así que lo borré.

Mis últimos pasos fueron instalar Ubuntu y Arch. Ubuntu como me tiene acostumbrado confunde muchas cosas, y me hizo un popurrí de drivers de una tablet parecida, y de la que ni siquiera tenía el touchscreen funcional, así que duró bien poquito instalado. El segundo caso fue Arch, y con muy poco trabajo conseguí tenerla totalmente funcional, con una larga duración de batería, y como me tiene acostumbrado, a la última. Pero seguía existiendo el mismo problema. ¿Qué debía de hacer con el táctil? La respuesta, solucionarlo.

Así que volví sobre mis pasos anteriores, y no hay nada como dejar pasar el tiempo para madurar una idea, que era entender el funcionamiento y por qué no podía calibrarlo corréctamente.

Tuve que resolver dos problemas:
  1. Driver, el driver en los kernels actuales no modificaba los valores del calibrado porque ya no se estaba utilizando de la manera tradicional, sino que había que hablar con "libinput", así que tuve que modificar mi metodología para poder conseguirlo, et voil`a, modificaciones terminadas pude calibrarlo a medias (el eje Y estaba totalmente ok pero seguía teniendo el eje X que se volvía loco, así que pensé un poco más).
  2. ¿Y si el problema estaba en que el firmware que utilizaba, no era el correcto? Al ser un pedazo de software propietario no podía modificarlo ni saber nada sobre qué debía de hacer, ya que no existía ningún tipo de documentación publicada. La manera de solventarlo fue la siguiente:
    1. El driver silead puede utilizar un firmware generado, así que utilicé esta solución
    2. Necesitaba un driver funcional, tenía el de Android, pero no me fiaba, así que preferí usar el de Windows que está publicado por alguien anónimo y se puede acceder desde aquí (Es un backup del instalado en Windows).
    3. Calibrar la pantalla. Hay una matriz que se encarga de este trabajo, pero cuando hay que hacer modificaciones es donde viene el problema. Es muy fácil de entender cómo funciona esta matriz con los valores referentes por defecto (1 0 0), (0 1 0), (0 0 1) y cómo funciona a la hora de hacer que con xrand gire la pantalla, pero otro trabajo más complicado es modificar esos valores para ajustar un calibrado (ya que esos unos definen el tamaño y la resolución del driver touchscreen). En la wiki de Arch encontré información, pero me quedaban dudas, sobretodo porque mágicamente mostraba la configuración correcta de otra tablet, pero además (después lo comprendí), el firmware de AUR que proponía era incorrecto, ya que era el usado en otra tablet parecida (Teclast X5).
Para poder saber lo que se dice en el punto 3, es necesario leer esta wiki de Arch en la que se explica con lenguaje humano cómo se generan esos números, y una fórmula muy aproximada del resultado final. Era lo mejor que tenía así que me propuse utilizarlo. Seguí los pasos con precisión:

  1. xinput_calibrator -v
  2. (120, 60), (812, 60), (120, 360) y (812, 360)
  3. a=2.080924855 c=-0.005057803 e=2.25 f=0

Saqué adelante una matriz bastante buena que me permitía tener el eje X totalmente calibrado y el eje Y muy muy muy aproximado al real (me sorprendió mucho el 2.25 redondo después de tener tantos decimales, así que como se comenta en el manual, son fórmulas aproximadas y no reales, pero son bastante precisas para poder trabajar con ellas, así que tuve que ajustar poco a poco el valor del eje Y hasta que obtuve un valor correcto.

Por fin mi sueño de tener una tablet 100% linux a un coste reducido.

El firmware está subido en esta url por si algún stalker quiere utilizarlo.

Buena suerte amigos, y no perdáis la esperanza en un futuro libre de software propietario.
Bit
Hide Me!