16 septiembre 2007

Compilar rt73 en Linux

Esta miniguía pretende servir para compilar y cargar el módulo rt73 bajo Guadalinex v4 y Ubuntu Edgy o Feisty. Antes debes comprobar que la tarjeta monta ese chipset, lo cual es tan fácil como usar en un terminal el comando lsusb y comprobar los dígitos que identifican al mismo. Se trata de un número del tipo 050d:705a y que mediante una sencilla búsqueda en Internet te indicará cuál es exactamente el chipset que monta la tarjeta.

Si tu tarjeta monta el chipset rt73 de Ralink, para hacerla funcionar en Ubuntu Edgy/Feisty o Guadalinex v4 hay que salvar un problema previo. Ubuntu/Guadalinex trae precompilado el módulo rt73usb que debería hacer funcionar la tarjeta, aunque, por algún problema que desconozco, realmente no sirve para nada; es más, no solo no vale sino que además incordia. Si no, Ubuntu sería casi perfecto. Además del módulo rt73usb, también se cargan otros módulos [rt2570 y rt2x00lib], por lo que te sugiero hagas lo siguiente:

Desinstala el módulo que tiene Ubuntu/Guadalinex por defecto:

sudo rmmod rt73usb

Para que no vuelva a cargar ese módulo en el arranque, modifica el archivo /etc/modprobe.d/blacklist, lo que puedes hacer con el comando gksudo gedit /etc/modprobe.d/blacklist y añade las siguientes líneas:

blacklist rt73usb

blacklist rt2570

blacklist rt2×00lib

Antes de proceder a instalar los drivers, los usuarios de Ubuntu deben descargar e instalar las cabeceras del kernel o headers y el paquete build-essential. Yo me he basado en la receta propuesta en el blog Diario de un nómada y ahí se realiza usando el terminal desde Linux bajo una conexión a Internet mediante el comando sudo apt-get install build-essential linux-headers-`uname -r`pero si no dispones de conexión debes ingeniártelas para realizar la instalación. Afortunadamente, los usuarios de Guadalinex no tenemos este problema, ya que las cabeceras vienen instaladas de serie.

Si no estuvieran instalados estos paquetes, y en el supuesto de que no tengamos conexión a internet, lo más fácil es instalarlos desde el CD de Ubuntu/Guadalinex. Introducimos el CD y el cuando el sistema nos pregunte si deseamos abrirlo con el gestor de paquetes Synaptic, aceptamos. Otra opción pasa por abrirlo desde el propio Synaptic, desde el menú Sistema > Administración > Gestor de paquetes Synaptic y una vez abierto el programa vamos al menú Configuración > Repositorios y seleccionamos añadir CD. Confirmamos y pulsamos después el botón Recargar, con lo que aparecerán en la pantalla todos los paquetes instalados y los que podemos instalar desde el cd.

Buscamos build-essential y linux-headers y los marcamos para instalar [en el caso de las cabeceras se deben seleccionar dos paquetes, que pueden ser linux-headers-2.6.20-15-generic y linux-headers-2.6.20-15 u otras versiones posteriores]. Finalmente validamos con el botón Aplicar y aceptamos.

Ahora te bajas los drivers para Linux del sitio SerialMonkey. Los descargas en tu directorio de trabajo, supongamos que fuese /home/tu_usuario y por tanto para extraerlos abre un terminal y ejecuta el comando tar -xvzf rt73-cvs-daily.tar.gz y seguidamente observa desde el navegador de archivos (Nautilus) que se te ha creado una carpeta llamada rt73-cvs-200709****, en donde los asteriscos corresponden al día y hora de la versión, 2007 es el año y 09 el mes [como ves, dependiendo de la fecha, así será el nombre del archivo]. Bien, entra en esa carpeta desde el terminal usando el comando cd rt73-cvs-200******* [en lugar de asteriscos escribes los números que correspondan]. Es más, si escribes en terminal cd rt+tecla tabulador, se autocompleta el nombre [truquillo muy útil para el terminal]. Entra ahora en la carpeta /Module con el comando cd Module, aunque podías haberlo hecho de una sola vez con el comando cd rt73-cvs-200*******/Module/

Ahora ejecuta uno tras otro los siguientes comandos:

make

strip -S rt73.ko

sudo make install

Por último hay que cargar el nuevo modulo con el comando

sudo modprobe rt73

Para que arranque el sistema con este módulo siempre cargado debes abrir el archivo /etc/modules con el comando gksudo gedit /etc/modules y añade una línea al final del archivo que acabas de abrir, en concreto añadirás rt73 y guardas el archivo con los cambios introducidos.

Se supone que ya deberías poder configurar la conexión, para lo que tendrás que ir al menú Sistema > Administración > Red y si no fuese posible conectar, hay que hacer algunas cositas más.

Se puede saber si ha cargado el módulo con el comando lsmod y el estado de la interfaz wifi con el comando iwconfig.

Es muy importante que si algo no sale, copies los mensajes de error que te envía el sistema y los estudies detenidamente. Si has conseguido completar este proceso sin errores estás a punto de ver la luz; y si te has equivocado en algo, ya intentaremos descubrir lo que fue mal.

Si a pesar de todo no logras configurar la conexión, es posible que el nombre wlan0 [e incluso wlan1] asignado a rt73, no sea compatible con tu sistema, por lo que puedes crear un alias como te propongo a continuación, pero antes observa el comentario que encontré en el sitio de Ubuntu:

I then added in /etc/modules the line "rt73" and in /etc/modprobe.d/rt73 "alias rausb0 rt73" and removed the obsolete /etc/modprobe.conf created by make install.

Si cuando ejecutas el comando iwconfig aparece en la primera línea wlan1... [a veces puede aparecer como wlan0] Ejecuta el comando gksudo gedit /etc/modprobe.d/aliases y añade al final la siguiente línea, alias rausb0 rt73. Seguramente debas eliminar /etc/modprobe.conf como indica la nota anterior y no olvides que también podrías crear el alias como se indica ahí mismo, añadiendo en /etc/modprobe.d/rt73 una línea con el contenido alias rausb0 rt73.

Si te conectas por DHCP ejecuta en un terminal el comando sudo dhclient rausb0. Pero si te conectas con IP estática, ejecuta en un terminal el comando sudo ifconfig rausb0 aquí_tu_IP up.

Reinicia el equipo y ya está. ¿Puedes configurar ahora la conexión con tu dispositivo wifi? Así lo espero.


Enga, hasta pronto.