El chip descontrolado

Cuando adquirí mi portátil HP 11-D015ns no me detuve a pensar si su hardware estaría bien soportado en GNU/Linux. La urgencia por hacerme con un nuevo ordenador no me permitió realizar una reposada búsqueda previa para informarme sobre sus componentes internos y su compatibilidad con el sistema Linux Mint que pensaba instalarle. Por tal motivo, no fui consciente de que iba a tener problemas con la NIC inalámbrica rtl8723be, de Realtek, que trae instalado ese modelo de HP; y no tardé en darme cuenta de ello cuando comprobé que la conexión a Internet por WiFi no era todo lo buena que me hubiese gustado.

El primer problema lo tuve con el controlador incluido en el núcleo 1 Linux (de la rama 3.13) que viene con la versión 17.1 de Mint. Tras unos minutos de conexión no demasiado estable en cualquier red WiFi, el tráfico de datos cesaba de repente y la conexión se quedaba inactiva, haciéndose necesario reiniciar el sistema para poder conectarme otro ratito. Tras haberme documentado, descubrí que la solución a ese fallo consistía en compilar e instalar el controlador alternativo rtlwifi_new de lwfinger, que no se encuentra disponible en los repositorios oficiales de Mint ni de Ubuntu 2. En este hilo del foro de Mint expliqué cómo lo hice. A partir de entonces ya pude permanecer conectado durante largos periodos de tiempo, de forma más o menos estable y más bien que mal. Pero …
chip inalámbrico Realtek
Al dar el paso a la versión 18 de Mint, y tras actualizar el núcleo Linux a la versión más reciente de la rama estable recomendada, descubrí que no era necesario buscar sustitutivos del controlador nativo porque, supuestamente, éste ya era funcional con mi chipset de red. Y, efectivamente, lo era, pero el rendimiento también era manifiestamente mejorable, pues las conexiones con el enrutador 3 eran, por lo general, inestables y accidentadas: velocidad muy variable (más bien baja), retrasos (lags), desconexiones repentinas, intentos fallidos de conectar y otras incidencias. Decidí entonces instalar otro controlador alternativo, desarrollado por hanipouspilot 4, probándolo con diversos parámetros del módulo asociado, pero no se apreciaba mejora alguna en la calidad de la conexión con respecto al rendimiento del controlador nativo del núcleo.

El caso es que hace no mucho tiempo, leyendo un mensaje en un foro de Archlinux, descubrí la causa del problema y una solución que –creo– resuelve definitivamente la cuestión. Sin entrar en muchos detalles, parece ser que el desarrollador del repositorio lwfinger se puso en contacto con el fabricante Realtek para poder modificar el código de su controlador con la intención de implementar la auto-detección de la antena conectada al chipset RTL en aquellos equipos que no poseen dos antenas, ya que ciertos ensambladores de portátiles (¡como HP! 😠) tratan de abaratar costes construyendo sus portátiles con una única antena. Como resultado de estas modificaciones se codificó un nuevo controlador, que fue liberado bajo una rama denominada rock.new_btcoex, el cual -ahora sí- mejora notablemente la calidad de la conexión, haciéndola bastante más estable y veloz.

Voy a explicar los pasos a seguir para compilar el paquete que contendrá dicho controlador, pero antes debo aclarar que, aunque este controlador ofrece soporte para varios modelos de chipset Realtek (rtl8192ce, rtl8192se, rtl8192de, rtl8188ee, rtl8192ee, rtl8723ae, rtl8723be y rtl8821ae), solo he podido verificar su funcionamiento con el modelo rtl8723be, que es el que posee mi portátil. Así que vamos allá:

  • Descargar desde el repositorio de Lwfinger el archivo que contiene la rama rock.new-btcoex del controlador rtlwifi_new
  • Instalar los siguientes paquetes:
    $ sudo aptitude install liberror-perl checkinstall
    
  • Descomprimir el archivo descargado, acceder al subdirectorio creado y compilar:
    $ unzip rtlwifi_new-rock.new_btcoex.zip
    $ cd rtlwifi_new-rock.new_btcoex
    $ make
    
  • Crear el paquete DEB con la utilidad checkinstall
    $ sudo checkinstall -D --install=no
    
  • Instalar el paquete creado, añadiendo la opción de forzar la sobrescritura de los ficheros del módulo del núcleo:
    $ sudo dpkg -i --force-overwrite rtlwifi-new_1.0-1-4.4.0-63-1_amd64.deb
    
  • Configurar el módulo del controlador con el siguiente parámetro:
    $ echo "options rtl8723be ant_sel=1" | sudo tee /etc/modprobe.d/rtl8723be.conf
    
  • Actualizar el initramfs:
    $ sudo update-initramfs -ut
    
  • Reiniciar el sistema

Evidentemente, si el modelo de chipset que se quiere controlar es distinto al que se indica en este artículo, debe especificarse otro fichero al configurar el módulo, sustituyendo rtl8723be por el nombre correspondiente al modelo que tenga, … siempre y cuando esté soportado por este controlador: rtl8723ae, rtl8188ee, rtl8821ae o el que sea.

Si el resultado no fuese satisfactorio, se puede probar a configurar de nuevo el módulo modificando el valor del parámetro ant_sel y luego reiniciando el sistema:

$ echo "options rtl8723be ant_sel=2" | sudo tee /etc/modprobe.d/rtl8723be.conf

Y si, aún así, el resultado sigue sin ser satisfactorio, puede desinstalar el controlador con solo eliminar del sistema el paquete anteriormente instalado:

$ sudo dpkg -P rtlwifi-new.deb

En cuyo caso conviene reinstalar los paquetes linux-firmware y linux-image-extra-V.X.Y-ZZ-generic, los cuales deberían haber sido descargados antes de comenzar todo el proceso. La versión del paquete linux-image-extra debe ser la misma que la del núcleo que estemos usando, lo cual puede averiguarse mediante el comando uname. En mi caso este sería el resultado:

$ uname -r
4.4.0-64-generic

Una vez sabido qué paquete linux-image-extra se encuentra activo, debemos descargar ambos paquetes antes de comenzar a instalar el controlador alternativo, conservándolos hasta el final del proceso:

$ aptitude download linux-firmware linux-image-extra-4.4.0-64-generic

Y si fuese necesario, lo reinstalaremos así:

$ sudo dpkg -i linux-firmware_1.157.8_all.deb  linux-image-extra-4.4.0-64-generic_4.4.0-64.85_amd64.deb

Una vez que se verifique el correcto funcionamiento de la NIC, conviene conservar el fichero con las fuentes del controlador, que nos hemos descargado desde el repositorio de lwfinger, y también el fichero del paquete DEB que habremos compilado; por si fuese necesario volver a instalarlo, o bien, volver a compilarlo a partir de las fuentes (y luego instalarlo).

❗ Hay que advertir que, para que el controlador alternativo siga funcionando correctamente, cada vez que se actualice el paquete linux-firmware habrá que reinstalar el paquete rtlwifi-new que hayamos creado. Y cuando se actualice el núcleo del sistema, entonces habrá que repetir el proceso completo de compilación e instalación de dicho paquete.


  1. también llamado kernel 
  2. Linux Mint está construido sobre Ubuntu 
  3. también conocido como router 
  4. una bifurcación del controlador rtlwifi_new del repositorio de lwfinger, que también posee un repositorio de paquetes DEB para sistemas Ubuntu/Mint 

Un comentario en “El chip descontrolado

  1. Pingback: El manipulador de paquetes | #LINux #SOftwareLIbre #TIC

Deja un comentario

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.