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-headersse corresponde con el primer y segundo número de la versión del kernel que obtuvimos con el comandouname -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
linux414se corresponde con el primer y segundo número de la versión del kernel que obtuvimos con el comandouname -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 |






vox
hola, como se hace el script??
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.