Mostrando entradas con la etiqueta driver. Mostrar todas las entradas
Mostrando entradas con la etiqueta driver. Mostrar todas las entradas

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.

02 junio 2004

Mi primer envío

Después de más de dos años durmiendo en el disco duro de un servidor olvidado [concretamente desde que lo creé el miércoles 2 de junio de 2004], por fin me decido a abrir públicamente este blog [quizás sea más adecuado llamarle bitácora, término acuñado por numerosos usuarios de este servicio dentro del mundo hispano]. Y antes de entrar en faena, una pequeña aclaración sobre el porqué del nombre: una sencilla ecuación que puede resumirse en la siguiente expresión, ambiente + linux = ambientix

Este primer artículo quiero iniciarlo con una receta [la primera que elaboré al poco de llegar al mundo de Linux en la primavera de 2004].

Acababa de instalar Guadalinex en un ordenador portátil Airis Gea 620 pero no lograba hacer funcionar el módem interno, lo que me produjo serios dolores de cabeza, pero al final me reportó la satisfacción de conectar a Internet desde Linux, algo que para un recién llegado como yo supuso una inmensa alegría. Ya no era un usuario cualquiera: podía conectar con la red y descargar paquetes de los repositorios con un simple clic. Esta que sigue es, a grandes rasgos, la receta elaborada por aquellas fechas.

Mi portátil tiene un chip que emula al módem Smartlink 56K y me he propuesto instalarlo bajo Guadalinex en su versión 1.0 conocida como "Ciudadano" y estoy muy cerca de conseguirlo. Si tu equipo monta un módem interno, habitualmente conocido como "winmodem" y quieres instalarlo bajo Linux, te recomiendo sigas los siguientes pasos:

1) Entra en la web http://linmodems.org y
bájate la herramienta scanModem, la instalas en tu equipo bajo Linux y con ella podrás generar un informe con las características de tu módem y de los dispositivos compatibles con el mismo.

2) Bájate los drivers adecuados de las direcciones que te indica scanModem o en su defecto haz un búsqueda en Internet, descomprímelos y lee las instrucciones de instalación. También puedes descargarlos del sitio de Linmodems, donde encontrarás además de los Smartlink comentados, los de otros fabricantes como Intel, Pctel, Motorola y alguno más que no viene al caso. No los instales aun.

3) Bájate las cabeceras (headers) del repositorio de Guadalinex. Una aclaración sobre los comandos aplicados a continuación: El símbolo # se asocia al uso de los mismos como superusuario root, en cambio el símbolo $ se refiere a comandos usados por cualquier usuario sin privilegios. Quede claro que en ningún caso

4) Instala las cabeceras en tu sistema como root mediante el comando

# dpkg -i kernel-headers-2.4.23-ck1_1.0_i386.deb

5) Crea un enlace simbólico para poder compilar los drivers (en mi caso es como sigue) con el comando

# ln -s /usr/src/kernel-headers-2.4.23-ck1 /lib/modules/2.4.23-ck1/build

Posiblemente, tu sistema te indique que el fichero "/lib/modules/2.4.23-ck1/build" ya existe; y es cierto, pero apuntando a otro sitio y no hacia el directorio correcto "/usr/src/kernel-headers-2.4.23-ck1". ¿Posibles soluciones? Como soy novato en esto, lo que yo hice fue borrar como root el enlace mediante el comando rm, lo que no es aconsejable porque puedes borrar los archivos a los que apunta el enlace, por lo que es preferible usar el comando unlink. Si este es tu caso, usa los siguientes comandos:

# unlink /lib/modules/2.4.23-ck1/build
# ln -s /usr/src/kernel-headers-2.4.23-ck1 /lib/modules/2.4.23-ck1/build

6) Ahora instala los driver que descomprimiste en el paso 2, de acuerdo con las instrucciones que se acompañan. En mi caso lo hice mediante los siguientes comandos:

$ make
# make install

Si hay suerte podrás pasar al siguiente paso ... yo estoy aquí atascado y si avanzo ya lo comunicaré en el foro. Si alguien puede echar una mano se agradece.

7) Configura la conexión y crea una cuenta de acceso.

Hasta aquí, todo debería ir sin problemas. Pero llegado este punto anduve bastante atascado...

Después de compilar e instalar slmodem-2.9.6, se debe crear una instalación del dispositivo en dev/ttySL0 (lo habitual es que lo haga en dev/ttys?, donde ? puede ser 0, 1 ó 2), enlazado con dev/modem, pero lo cierto es que dicho archivo no existe ... por lo que no puedo configurar la conexión, así que habrá que seguir investigando... :-?

Y esto escribí con posterioridad...

Por fin he logrado instalar el módem Smartlink 56k en un portátil Airis 620 :-D

Sobre chip Intel AC'97 82801DB ICH4 bajo controlador 8086:24c6 y subsistema 1584:4007, he seguido todos los pasos descritos anteriormente (ver también el archivo Readme generado al descomprimir el paquete slmodem-2.9.6.tar.gz), aunque antes de continuar son necesarias unas aclaraciones muy importantes:

1) Algunos paquetes Debian que conseguí para hacer funcionar el módem no los he necesitado para instalar los drivers, me bastó con el paquete slmodem-2.9.6.tar.gz.

2) Una vez que se termina el proceso de instalación, justo después de ejecutar como root # make install, se procede a la carga del driver y la creación del puerto mediante el comando

# slmodemd --country=SPAIN
(si no te sale el mensaje del recuadro de más abajo deberás ejecutarlo como sigue)
# /usr/sbin/slmodemd --country=SPAIN

llegado este punto aparece en el terminal el siguiente mensaje:

SmartLink Soft Modem: version 2.9.6 Apr 4 2004 02:59:34
modem `slamr0' created. TTY is `/dev/pts/2'
symbolic link `/dev/ttySL0' -> `/dev/pts/2' created.
Use `/dev/ttySL0' as modem device, Ctrl+C for termination.

Como queda claro, se liquida el proceso de carga mediante la combinación de teclas Ctrl+C o cerrando el terminal. Por tanto, no hagas ninguna de las dos cosas.

3) Abrimos otra consola como root (mientras tanto la anterior sigue activa) y ejecutamos:

# pppconfig para crear la/s cuenta/s de conexión que queda/n almacenada/s en nuestro equipo. Muy importante es que indiques como puerto de comunicaciones /dev/ttySL0

4) Desde esta segunda consola se ejecuta la siguiente línea de comando:

# pon nombre_de_tu_cuenta

y para finalizar la conexión se usa ésta otra:

# poff nombre_de_tu_cuenta

También se puede matar el proceso cerrando las consolas. Otra cosa, puedes usar la aplicación Gkdial, pero a mí me ha dado cuelgues y problemas, por lo que aviso antes.

Finalmente, estoy probando scripts que automaticen el proceso de carga del módem desde el inicio y evitar la tediosa tarea de ejecutarlo cada vez que nos conectamos; además hay que tener abiertas dos consolas y si se puede, mejor evitarlo. Por ahora no he encontrado la forma de arreglarlo, así que por favor, si encuentras una solución que esté funcionando en Guadalinex, ponla aquí en el foro.

-----------------------------

Esta que sigue es la solución que proponía bitsdisasters (usuario de los foros de Guadalinex) para este problema:

(una vez instalados los paquetes, siempre como root)... cargamos los drivers con modprobe slamr lo que creará el dispositivo /dev/slamr0. Luego ejecutas slmodemd --country=SPAIN /dev/slamr0 y matas el programa con Ctrl +C. Entonces haciendo simplemente slmodemd & lo puedes ejecutar en segundo plano y configurar con pppconfig indicando que el puerto de comunicaciones es el /dev/ttySL0. Si usas kppp o gppp tendrás que crear un enlace simbólico hacia /dev/modem para que puedan hacer uso del módem.

=====================================

Finalmente conseguí instalar el winmodem de mi equipo, no sin pelearme una y otra vez con el módem, el software y el sistema. :-((

Con objeto de cargar el módem al inicio y mejorar la seguridad del equipo, ya que el terminal de root debe permanecer abierto mientras la conexión esté activa, he realizado los siguientes cambios:

1) He creado como root el fichero de texto /etc/init.d/slmodemd con el contenido siguiente:

/usr/sbin/slmodemd --country=SPAIN &

2) He otorgado
permisos de lectura y ejecución mediante el uso del siguiente comando:

sudo chmod 755 /etc/init.d/slmodemd

3) He ejecutado el comando runlevel para saber el nivel de ejecución de mi sistema [aparece un número del 2 al 5 que se corresponde con la X que he asignado al hipotético directorio
/etc/rcX.d]. En mi caso era el 2 y por tanto debía crearlo en /etc/rc2.d como indico a continuación.

4) Me he situado en el directorio
/etc/rc2.d y he creado el enlace simbólico respectivo con el comando:

# ln -s ../init.d/slmodemd S95slmodemd

... y problema resuelto. Ya tienes tu sistema listo para conectar con la cuenta previamente configurada.

Ufff, me pareció auténticamente un milagro haberlo conseguido.

Hasta pronto