Wifi Alternativo en Asus Transformer T200TA, rtl8192cu en Debian

Hoy vamos a tratar con un problema derivado del poco caso que a veces las compañías de hardware le hacen al software libre. Resulta que el adaptador wifi que lleva mi maravilloso Asus Transformer T200TA no aparece por ningún sitio en mi Debian. Probamos cambiando el tipo de USB del portátil de EHCI a XHCI, desde la BIOS, pero parece que éste no era el problema.

Simplemente el adaptador no existe, igual es un problema tonto, pero de momento he pillado un adaptador wifi nano, para ser exactos un Asus USB-N10 Nano. Apenas 10€ y casi no se nota, perdemos un puerto usb pero de momento nos sirve, hasta que el desarrollo del kernel avance y se soporte completamente el hardware de mi portátil.

Todo parece muy bonito aunque la configuración ha sido un poco complicada. En las propias páginas de soporte de debian encontramos mucha información. Aunque no obtuvimos la solución definitiva. De aquí sacamos en claro que necesitábamos el firmware y nos confundimos un poco con el chipset que teníamos entre manos.

Lo primero que vamos a hacer es actualizar nuestra base de datos de IDs de dispositivos USB. Antes de la actualización podemos ver, mediante el comando lsusb, los ids de los dispositivos conectados:

# lsusb 
Bus 002 Device 003: ID 0b05:1800 ASUSTek Computer, Inc. 
Bus 002 Device 002: ID 0b05:1801 ASUSTek Computer, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 0b05:17ba ASUSTek Computer, Inc.
Bus 001 Device 005: ID 0bda:8152 Realtek Semiconductor Corp. 
Bus 001 Device 003: ID 0b05:1802 ASUSTek Computer, Inc. 
Bus 001 Device 002: ID 0b05:17e0 ASUSTek Computer, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Por eliminación, llegamos a la conclusión de que nuestro dispositivo era el 0b05:17ba. Ahora corroboraremos nuestras sospechas:

# update-usbids
--2015-01-06 13:27:52--  http://www.linux-usb.org/usb.ids
Resolving www.linux-usb.org (www.linux-usb.org)... 216.34.181.97
Connecting to www.linux-usb.org (www.linux-usb.org)|216.34.181.97|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 536447 (524K) [text/plain]
Saving to: ‘/var/lib/usbutils/usb.ids.new’

/var/lib/usbutils/usb.ids.new     100%[==============================================================>] 523.87K   470KB/s   in 1.1s   

2015-01-06 13:27:54 (470 KB/s) - ‘/var/lib/usbutils/usb.ids.new’ saved [536447/536447]

Done.
# lsusb 
Bus 002 Device 003: ID 0b05:1800 ASUSTek Computer, Inc. 
Bus 002 Device 002: ID 0b05:1801 ASUSTek Computer, Inc. 
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 006: ID 0b05:17ba ASUSTek Computer, Inc. N10 Nano 802.11n Network Adapter [Realtek RTL8192CU]
Bus 001 Device 005: ID 0bda:8152 Realtek Semiconductor Corp. 
Bus 001 Device 003: ID 0b05:1802 ASUSTek Computer, Inc. 
Bus 001 Device 002: ID 0b05:17e0 ASUSTek Computer, Inc. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Una vez identificado correctamente el dispositivo ya deberíamos poder levantar la interfaz, no? Pues no, resulta que el driver principal del kernel tiene un bug que todavía no está arreglado. Gracias a Linux Hardware Guide hemos encontrado una solución. De la página anterior hemos elegido la segunda forma de solucionarlo.

Primero debemos asegurarnos que tenemos instalados los headers de nuestro kernel, entre otras cosas:

# apt-get install --reinstall linux-headers-$(uname -r) build-essential dkms git

Con estos paquetes ya podemos pasar a descargar el driver corregido y compilar el módulo:

$ git clone https://github.com/pvaret/rtl8192cu-fixes.git
# dkms add ./rtl8192cu-fixes
# dkms install 8192cu/1.9

Tened en cuenta que los dos últimos comandos debemos ejecutarlos como root.

Además esta solución será temporal hasta que las siguientes versiones de kernel y/o módulos de adaptadores wifi lleven incluido este arreglo. Si al actualizar el kernel perdéis este driver recordad que debéis ejecutar de nuevo estos pasos con el nuevo kernel.

Para los salvajes como yo, que quieren tener el último kernel instalado, añadiendo las sources para la distribución experimental de debian, debési recordar que cada vez que actualicéis, si el nuevo kernel no detecta bien el dispositivo, hay que asegurarse que el paquete linux-kbuild existe en los repositorios para el nuevo kernel, si no, no podréis compilar el fix.

Para la música de hoy os tengo reservado un clásico moderno, la banda sonora de una de las mejores series que ha producido la HBO, The Sopranos, a cargo de Alabama 3, el tema se llama Woke Up This Morning y está contenido en el primer disco recopilatorio de música aparecida en la serie, un must, tanto las seis temporadas como los recopilatorios de su música.

Suerte.