Logo Manjaro Linux

Solucionar problema de señal débil y desconexiones del wifi Realtek RTL8723BE en Manjaro

 
 

En primer lugar, muchas gracias a lwfinger por su trabajo. Sin él no habría podido escribir este artículo.

Tras instalar Manjaro Linux en mi portátil, ocurre que mi tarjeta WiFi Realtek RTL8723BE tiene señal débil cerca del router o se desconecta cuando me alejo unos metros. Tras comprobar que no es de la tarjeta, ya que con Windows y sus drivers correspondientes, funciona perfectamente, busqué una solución para Manjaro Linux. Buscando por la red, encontré lo siguiente y me funciona a la perfección.

Solo hay que tener en cuenta que, cada vez que actualizamos el kernel, tenemos que volver a recompilar los drivers de la tarjeta WiFi, instalarlos y configurarlos. Pero con un simple script lo haremos en un momento.

A continuación os indico los pasos que seguí para solucionar el problema:

Hemos de tener instaladas las herramientas necesarias para la compilación del driver y la descarga del código fuente. Si aún no las tenemos instaladas, ejecutaremos los siguientes comandos:

Primero averiguaremos el número de la versión del kernel que tenemos instalado:

$ uname -r
4.14.30-1-MANJARO

A continuación, instalamos los paquetes necesarios y el código fuente de nuestro kernel:

$ sudo pacman -S base-devel git linux414-headers iw rfkill

Nota: Obsérvese que el número del paquete linux414-headers se corresponde con el primer y segundo número de la versión del kernel que obtuvimos con el comando uname -r.

Continuamos descargando el código fuente para la tarjeta WiFi Realtek RTL8723BE. Podréis comprobar que el driver descargado vale para múltiples dispositivos Realtek. . Pincha aquí si quieres ver el listado de dispositivos soportados.

Insisto!!!, muchas gracias a lwfinger por su trabajo. Gracias a él, tenemos la solución a este gran problema.

Para descargarlo, ejecutaremos el siguiente comando:

$ git clone https://github.com/lwfinger/rtl8723be
Cloning into 'rtlwifi_new'...
remote: Counting objects: 5770, done.
remote: Total 5770 (delta 0), reused 0 (delta 0), pack-reused 5770
Receiving objects: 100% (5770/5770), 9.54 MiB | 190.00 KiB/s, done.
Resolving deltas: 100% (4765/4765), done.

Una vez descargado el código fuente, nos posicionamos en la carpeta del mismo.

$ cd rtlwifi_new

Comenzamos la compilación con el siguiente comando:

$ make

Instalamos los paquetes compilados con el siguiente comando, eso sí, como root:

$ sudo make install

Si la compilación es exitosa, actualizamos el initramfs.

$ sudo mkinitcpio -p linux414

Nota: Obsérvese que el número de linux414 se corresponde con el primer y segundo número de la versión del kernel que obtuvimos con el comando uname -r.

Terminada la instalación quitamos el módulo antiguo del kernel:

$ sudo rmmod rtl8723be

Inyectamos los módulos compilados en el kernel:

$ sudo modprobe rtl8723be ant_sel=2

En mi caso no tuve que reiniciar el equipo, tras ejecutar la última orden, mi tarjeta WiFi comenzó a buscar redes WiFi disponibles. Si no es tu caso, reinicia el equipo.

Hay que tener en cuenta que el parámetro ant_sel aceptará varios valores, que cambiaremos hasta optimizarlo para nuestro sistema:

$ sudo modprobe rtl8723be ant_sel=0
$ sudo modprobe rtl8723be ant_sel=1

Para hacer permanentes los cambios y no se pierdan en el apagado o reinicio, usaremos el siguiente comando:

$ echo "options rtl8723be fwlps=N ips=N swlps=N swenc=Y disable_watchdog=1 ant_sel=2" | sudo tee /etc/modprobe.d/rtl8723be.conf

Nota: Comprobar antes de hacer permanentes los cambios que existe el directorio /etc/modprobe.d. Si no existe habrá que crearlo con el siguiente comando:

$ sudo mkdir /etc/modprobe.d

Recordad que cada vez que instalemos un nuevo kernel, habrá que recompilar de nuevo el driver. Pero esto se hace en un momento con el siguiente script. Partimos de que no hemos borrado el código fuente del driver.

#!/bin/bash
# Script para compilar y cargar driver tarjeta
# WiFi rtl8723be en Manjaro linux414
 
#Directorio del código fuente
SOURCE="/home/usuario/rtlwifi_new"
 
# Nos posicionamos en el directorio del código fuente
cd $SOURCE
 
# Limpiamos compilaciones anteriores
make clean
 
# Actualizamos el repositorio git
git pull
 
# Compilamos
make
 
# Instalamos
sudo make install
 
# Actualizar el initramfs
sudo mkinitcpio -p linux414
 
# Quitamos el módulo antiguo del kernel
#sudo modprobe -rv rtl8723be
# o también:
sudo rmmod rtl8723be
 
# Cargamos el módulo en el kernel y seleccionamos el puerto de la antena (valores 0, 1 y 2)
sudo modprobe -v rtl8723be ant_sel=2
 
## Hacemos permanentes los cambios guardando la configuración en
## archivo /etc/modprobe.d/rtl8723be
# Si no existe el directorio /etc/modprobe.d lo creamos
if [ ! -d /etc/modprobe.d ]; then
    sudo mkdir /etc/modprobe.d
fi
echo "options rtl8723be fwlps=N ips=N swlps=N swenc=Y disable_watchdog=1 ant_sel=2" | sudo tee /etc/modprobe.d/rtl8723be.conf
 
## Reiniciamos el sistema
echo ""
echo "¿Reiniciamos el sistema (S/N)?"
read varsino
if [ $varsino == "s" ] || [ $varsino == "S" ]; then
    sudo systemctl reboot
else
    echo ""
    echo "El sistema no se reiniciará"
fi
Espero que este artículo os haya sido de utilidad. Si pensáis que podéis colaborar para mejorar este artículo, que hay algo erróneo en él o simplemente deseáis comentarlo, por favor, dejad vuestra opinión más abajo.
 
Seguir J. Carlos:

Técnico Informático - Desarrollo Web - Administración de Redes

Técnico Informático. Desarrollo Web. Administración de redes.

2 comentarios

    • J. Carlos

      Hola vox,

      1. Utiliza cualquier editor de texto plano como pueden ser nano, gedit, kate, etc. Tu eliges.
      2. copia el script que viene en el artículo. Ten en cuenta la variable SOURCE apuntará al directorio dónde hayas descargado el código fuente.
      3. Recuerda que cada vez que actualices el kernel, tendrás que recompilar el driver de la tarjeta.
      4. Dale permisos de ejecución al script
      $ chmod +x nombreScript.sh

      Un Saludo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

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