Arreglando el jack de audio de la tableta HP Stream 8 en el kernel de Linux – Mi primera contribución al Kernel de Linux

Arreglando el jack de audio de la tableta HP Stream 8 en el kernel de Linux – Mi primera contribución al Kernel de Linux

Hola a todos,

Por los pasados años, he tenido las tabletas HP Stream 7 HP Stream 8. Estas tabletas son de muy bajo perfil que venían con Windows 8. Su CPU era un Intel Atom Z3735G y sólo tenían 1GB de memorya RAM. Estas tabletas también estaban limitadas a correr la versión 32bit de Windows no solo por su poca memoria, sino también debido a que el BIOS sólo puede ejecutar archivos EFI de 32-bit.

Esta tableta se podía actualizar a la versión de 32-bit de Windows 10, pero buena suerte tratando de correr algun programa. Su limitación más grande es la pequeña capacidad de memoria RAM y constantemente escribe al archivo swapfile de Windows. Esto degrada rápidamente la memoria eMMC de 32GB.

Luego de investigar un poco, existe una imagen especializada para instalar Ubuntu en estas tabletas. El «bootloader» sigue siendo de 32-bit, pero el sistema operativo se ejecuta en 64-bit. Decidí instalar esta versión y ver que tal corren.

La realidad es que esta imagen ha dado nueva vida a estas tablets, en especial después de usar la imagen de Lubuntu (La imagen regular de Ubuntu se quedó atascada tratando de arrancar. Creo que el entorno por defecto de Ubuntu consume bastantes recursos para estas tabletas). Hice las actualizaciones correspondientes y subí la versión de Ubuntu a la 23.04. Luego, instalé el paquete ubuntucinnamon-desktop. Esto funcionó muy bien hasta que decidí conectar mis audífonos a la tableta HP Stream 8.

¡Sorpresa! Al insertar un audífono en esta tableta, en realidad desactivaba la salida. Me pregunté por qué sucedía esto, ya que en la tableta HP Stream 7, esto no pasaba.

Entonces me puse a investigar y resulta que el código fuente responsable de configurar los parámetros de audio no incluía una configuración para la tableta HP Stream 8 pero se incluía para la HP Stream 7:

Entonces, me puse a modificar este archivo para añadir los parametros necesarios para la HP Stream 8. Esencialmente, el hardware es casi lo mismo entre las tabletas HP Stream 7 y HP Stream 8. La diferencia entre estas 2 son las siguientes:

  • La HP Stream 8 es obviamente de 8 pulgadas mientras que la HP Stream 7 es de 7 pulgadas.
  • La HP Stream 8 tiene una batería de más capacidad.
  • La HP Stream 8 tiene un modo HSDPA que en estos tiempos es casi obsoleto, pues las redes móviles han sido actualizadas a LTE y 5G.
  • La HP Stream 8 tiene bocinas estereo mientras que la HP Stream 7 es solo mono.

Hago énfasis en ese último punto puesto que el único parámetro que tuve que removes fue BYT_RT5640_MONO_SPEAKER. El resto se quedó igual.

Luego de compilar manualmente el kernel y probarlo, funcionó como esperaba. Entonces decidí someter este parche al equipo del Kernel de Linux. Tomó algunos días para ser aplicado en el código maestro respectivo luego de intercambiar mensajes entre los desarrolladores y mantenedores del código fuente. Luego, el parche fue unido al código maestro principal «mainline» de Linux. El mismo se encuentra disponible de forma oficial a partir de la versión del kernel 6.1-rc1:

El archivo que modifiqué fue sound/soc/intel/boards/bytcr_rt5640.c, y ahora se ve así:

Ahora, puedes «disfrutar» de la salida de audio de 3.5mm en tu HP Stream 8. Digo «disfrutar» porque en realidad la salida de audio de las tabletas HP Stream 7 y 8 tienen mucho ruido. También dejan de funcionar después de un tiempo, aunque esto parece ser un problema que no tiene que ver con mi código. La mejor manera de disfrutar del audio en estas tabletas es usando un adaptador o audífono Bluetooth.

Si deseas usar la salida de audio de 3.5mm, ya tienes el soporte adecuado en la tableta HP Stream 8:

HP Stream 7 and 8 tablets running Ubuntu with Cinnamon Desktop Environment - Audio Settings

Esta, a su vez, ha sido mi primera contribución al Kernel de Linux.