Fix: RTL8723BU no funciona en Ubuntu 18.04LTS

Hay muchas placas de red de la marca Realtek que no funcionan en Ubuntu por un tema de drivers. Para arreglar el modelo RTL8723BU se pueden realizar los siguientes pasos, aunque para otras placas el procedimiento es similar.

Instalamos los siguientes paquetes:

(Se puede demorar)

$ sudo apt install build-essential dkms git libelf-dev

Clonamos el repo:

$ git clone "https://github.com/lwfinger/rtl8723bu.git"

Ponemos en la blacklist el módulo del kernel original de la placa de red(es el que no funciona):

$ echo blacklist rtl8xxxu >> /etc/modprobe.d/blacklist.conf

cd rtl8723bu
nano Makefile

Comentamos la siguiente línea:

#EXTRA_CFLAGS += -DCONFIG_CONCURRENT_MODE

$ source dkms.conf
$ sudo mkdir /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION
$ sudo cp -r core hal include os_dep platform dkms.conf Makefile rtl8723b_fw.bin /usr/src/$PACKAGE_NAME-$PACKAGE_VERSION
$ sudo dkms add $PACKAGE_NAME/$PACKAGE_VERSION
$ sudo dkms autoinstall $PACKAGE_NAME/$PACKAGE_VERSION
$ sudo make
$ sudo make install

Reiniciamos la computadora y ya debería funcionar. En algunos casos la señal es baja, para esto tenemos que jugar con la configuración de la antena cambiando el número. Es a prueba y error hasta dar con la que funciona:

$ sudo modprobe rtl8723bu ant_sel=1

El siguiente problema que surge es que al suspender la notebook o pc vuelve a fallar y no funciona. Para esto mi solución fue crear un pequeño script para recargar el módulo manualmente cada vez que lo necesitemos.

$nano fix_rtl
#!/bin/bash

rmmod 8723bu
modprobe -r rtl8723bu
modprobe rtl8723bu ant_sel=1
systemctl restart NetworkManager.service

Para ejecutarlo simplemente hacemos:

sudo ./fix_rtl

Bueno pero esto es demasiado engorroso para hacer cada vez que suspendemos, así que, una mejor solución es que se ejecute automáticamente al levantarse de cada suspensión. Para esto debemos editar el siguiente archivo:

$ sudo nano /lib/systemd/system-sleep/hdparm

Y las agregamos de manera que quede así:

#!/bin/sh

case $1 in
  post)
    /usr/lib/pm-utils/power.d/95hdparm-apm resume
    rmmod 8723bu
    modprobe -r rtl8723bu
    modprobe rtl8723bu ant_sel=1
    systemctl restart NetworkManager.service
    ;;
esac

Y listo tenemos la red funcionando cada vez que volvemos de una suspensión de la computadora.

Martín Pestoni

Martín Pestoni

Ingeniero en informática, técnico electrónico e intento de guitarrista.
Buenos Aires - Argentina