28 febrero 2008

Compilar rt73 en Ubuntu

Esta es la segunda receta que cuelgo en este blog para compilar el módulo rt73 bajo Linux y aun no tengo la certeza de que pueda funcionar. Ha sido pensada para Guadalinex v4 [basada en Ubuntu Edgy], aunque puede ser válida, salvando alguna pequeña diferencia, para la mayoría de distribuciones Linux y en particular para aquellas basadas en Ubuntu. La otra receta que edité hace algunos meses es más simple [clic aquí] pero me consta que en algún caso no llegó a funcionar.

Antes de nada debemos asegurarnos de que no se cargue el módulo rt73usb que ya sabrás no es válido para gestionar la tarjeta, por lo que se debe editar el archivo blacklist con el comando sudo gedit /etc/modprobe.d/blacklist y una vez que se ha editado el archivo blacklist, se debe añadir al final del mismo las siguientes líneas,

blacklist
rt73usb

blacklist rt2570

blacklist rt2×00lib

con lo que se evitará la carga de ese módulo. Si anteriormente hubiésemos intentado la conexión con Ndiswrapper, se añadirá una nueva línea blacklist ndiswrapper, con lo que evitaremos que ese módulo se cargue igualmente en nuestro sistema. Guarda los cambios en el archivo. Ahora hay que reiniciar y comprobar con el comando lsmod que ninguno de los dos módulos, rt73usb y ndiswrapper, aparecen cargados en el kernel de nuestro sistema.

Es necesario instalar las fuentes del kernel (linux-source), aunque verás recetas que no requieren esa operación como la comentada anteriormente. Comienza por descargarlas de los repositorios de Guadalinex [o de Ubuntu si fuera el caso]; simplemente hay que buscarlas con Synaptic o bien desde terminal con apt-get e instalarlas. El caso es que he mirado en el repositorio oficial de Guadalinex y las fuentes que encuentro para la v4 son las que corresponden al kernel 2.6.17, de ahí que el ejemplo que propongo sea para esa versión. Desde la aplicación Synaptic es posible comprobar si es ésta la versión más reciente. En última instancia, te sugiero que pruebes a llevar a cabo esta tarea sobre una v4 pura sin actualizar, compila el driver y por último actualiza tu sistema.

Si no se dispone de conexión bajo Guadalinex se pueden descargar desde otro equipo o sistema operativo. El método más sencillo consiste en bajarse el paquete deb desde el repositorio oficial. Una vez descargado se copia al escritorio de tu equipo desde donde se pueden instalar fácilmente con un doble clic sobre dicho archivo o desde un terminal con el comando [si usas otra versión de las fuentes, el comando indicado sería el que corresponda a las fuentes descargadas]:

sudo dpkg -i /home/tu_usuario/Desktop/linux-source-2.6.17_2.6.17-10.33_all.deb


Si el nombre de las fuentes o la versión de las mismas fuese otro, hay que usar el que corresponda en ese caso.

Lo más probable es que te cree un archivo comprimido en el directorio /usr/src, por lo que debes entrar en ese directorio con el comando cd /usr/src y descomprimir con el comando

sudo tar xvfj linux-source-2.6.17-bla-bla-bla.tar.bz2

pero si el archivo fuese del tipo linux-source-2.6.17-bla-bla-bla.tar.gz debes ejecutar el comando

sudo tar zxvf linux-source-2.6.17-bla-bla-bla.tar.gz

Una vez instaladas las fuentes se requieres también instalar las cabeceras [linux-headers], pero teniendo en cuenta que Guadalinex incorpora además las cabeceras del kernel instaladas de serie [al menos en la versión v4, no sé sin la v4.1 estarán ya disponibles], nos aseguramos que hay creado un enlace simbólico desde el archivo /lib/modules/2.6.17-10-generic/build hacia /usr/src/linux-headers-2.6.17-generic y otro desde/usr/src/linux hacia /usr/src/linux-2.6.17. Si no fuera así hay que crearlos con los dos comandos siguientes:

sudo ln -s linux-source-2.6.17-bla-bla-bla linux

sudo ln -s /usr/src/linux-headers-2.6.17-bla-bla-bla /lib/modules/2.6.17-bla-bla-bla/build

La existencia o no de esos enlaces, que no archivos, se puede comprobar con el explorador de archivos, Nautilus, y el botón derecho del ratón sobre el mencionado archivo para ver sus propiedades. Está claro que bla-bla-bla es una cadena de caracteres que desconozco pero puede ser “generic” o algo parecido.

Ahora te bajas los drivers del sito de Ralink, en concreto los que corresponden a rt25001usb y además el paquete del firmware. El paquete del driver descargado [el del firmware creo que no hay que instalarlo ya que viene de serie, pero por si acaso lo descargas] se puede extraer directamente situando el puntero del ratón sobre él y clicar con el botón derecho del ratón para elegir "Extraer aquí", o bien desde un terminal ejecutando el siguiente comando

tar zxvf /ruta_archivo/2008_0117_RT73_Linux_STA_Drv1.1.0.0.tar.gz


Ahora entras en la carpeta Module y ahí tienes todo el conjunto de archivos del driver listo para compilar. Lee el archivo Readme donde se te dan las instrucciones para compilar el módulo rt73, tanto para kernels 2.4 como 2.6 series.

Abre el terminal y muévete hasta el directorio creado al descomprimir el archivo, mediante el uso del comando cd por lo que se puede ejecutar el comando

cd /ruta_archivo/2008_0117_RT73_Linux_STA_Drv1.1.0.0/Module

[está claro que ruta_archivo se refiere a la ruta donde se encuentra el directorio creado al descomprimir el archivo de los drivers]. Si fuese tu escritorio, la ruta sería algo así como


/home/tu_usuario/Desktop/rt73/2008_0117_RT73_Linux_STA_Drv1.1.0.0

Seguidamente ejecuta el comando sudo cp Makefile.6 Makefile con lo que creas el archivo Makefile necesario para las reglas de compilación a partir de Makefile.6 para tu kernel 2.6. [observa que hay otro archivo, Makefile.4 que es el que corresponde al kernel de las series 2.4 y que deberías usar para compilar con esa serie del kernel].

Continúa con la receta de los foros Ubuntu y ejecuta la siguiente secuencia de comandos:

sudo make

A veces, se crea una cantidad de código inservible sobre el módulo rt73 y hay que "desnudarlo" con el comando strip -S rt73.ko para continuar con la secuencia de comandos habitual.

sudo cp rt73.ko /lib/modules/2.6.X/kernel/drivers/net/wireless/

sudo insmod /lib/modules/2.6.X/kernel/drivers/net/wireless/rt73.ko

sudo depmod -a

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], puede ser conveniente crear un alias, para lo que vas a ejecutar 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 tu_número_IP up .

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

Comenta todas las incidencias ocurridas durante el proceso con todo lujo de detalles. Así sabremos cómo ayudarte y de paso ayudamos a los nuevos usuarios que pretendan seguir tus pasos.

Un último detalle. Hay dos guías más en los foros para compilar el driver rt73. La primera requiere conexión a Internet y la recomiendo vivamente; fue elaborada por anariv siguiendo fielmente las recomendaciones del fabricante del chipset, aunque debe manejarse con criterio ya que fue redactada en su día para un kernel determinado y en unas condiciones muy particulares [para verla pincha aquí]. Hay otra receta para usar sin conexión y aparentemente más sencilla; ha sido probada con éxito aunque algunos usuarios no pudieron ponerla en práctica [clic aquí].

Enga, hasta pronto y mucha suerte.