RTL8821AE 802.11ac funcionando en Ubuntu 14.04

wifi-ubuntu¡Bienvenidos al maravilloso mundo del hardware medianamente soportado en Linux!

Resulta que hace poco me hice con un Asus VC60, muy chulo y pequeñito él, y tras el formateo de rigor para eliminar Windows8 y reemplazarlo por Ubuntu me encontré con todo funcionando perfectamente sin tener que tocar nada… excepto el wifi.

No ha sido mucho problema porque de todas formas tenía intención de conectarlo al router por cable, pero oye ya que trae wifi debería funcionar, no? Pues al lío.

Antes de nada avisar de que el soporte para esta tarjeta wifi (Realtek RTL8821AE 802.11ac) vendrá incluido en el kernel 3.14, que se encuentra ahora mismo en fase de Release Candidate (creo que RC2 o RC3). Si no te encuentras con ganas de trastear también puedes simplemente esperar a que se actualice el kernel automáticamente en tu sistema.

Ya está disponible la versión final del kernel 3.14, he actualizado el enlace de abajo. No es necesario realizar el paso posterior de instalar manualmente el driver.

Bien, dicho esto, teniendo en cuenta que el driver para mi tarjeta wifi viene como decía antes incluido en la nueva versión del kernel, mi primera tentativa fue instalar la versión RC del mismo. Se puede descargar desde el mainline kernel ppa:

http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.14-rc2-trusty/

[Actualizado] http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.14-trusty/

En este momento ya existe en esa web la versión 3.14-rc3, pero sólo para i386, y yo necesito la amd64 (tal vez en este rc3 ya no haga falta seguir todo este manual).

Descargaremos tres archivos:

  • Linux headers generic
  • Linux headers generic amd64
  • Linux image amd64

Vamos a donde los hayamos guardado y los instalamos:

sudo dpkg -i linux-headers*
sudo dpkg -i linux-image*

Reiniciamos y ya estaremos con nuestro nuevo kernel… y oh sorpresa! Resulta que en este rc2 precisamente el driver rtl8821ae no viene incluido!!

Un ratillo de consultar Google y encuentro que se eliminó el driver por problemas al hacer el build, y que posteriormente se aplicaron parches… vamos, que me he ido a instalar la versión mala.

En fin, como soy cabezón, ya que tengo el kernel instalado paso de instalarme otro distinto y voy directamente a por el driver en cuestión (cosa que podría haber hecho sin necesidad de instalar la rc2, pero quién iba a adivinar).

Y además de cabezón soy algo vago: el driver está en GitHub y lo más apropiado sería utilizar el cliente de git para coger el código que me interesa, pero no, me voy a la raíz del kernel y me descargo todo completo en zip fácilmente con el botón de (adivina) Download Zip.

https://github.com/torvalds/linux

Extraigo el zip y me voy a la carpeta drivers/staging/rtl8821ae. Ahí hay un archivito llamado Makefile, el cual abro con gedit y le pego al final las siguientes líneas:

KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
	$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) CONFIG_R8821AE=m modules

Guardo el archivo y en ese mismo directorio con una consola ejecuto un make. Un ratillo compilando y nos aparecerá en ese directorio un nuevo archivo llamado rtl8821ae.ko.

Ole, ya tenemos driver!

Falta poco: copiamos el driver a la carpeta correspondiente dentro del árbol de módulos del kernel. En mi caso para el kernel que tengo instalado:

sudo mkdir /lib/modules/3.14.0-031400rc2-generic/kernel/drivers/staging/rtl8821ae
sudo cp rtl8821ae.ko /lib/modules/3.14.0-031400rc2-generic/kernel/drivers/staging/rtl8821ae

Cargamos el driver:

sudo depmod -a
sudo modprobe rtl8821ae

Y listo!!

Resumen de toda la operación: si no te corre excesiva prisa hacer funcionar esto, espera a que salga la versión final del kernel 3.14.