03 diciembre 2007

Tarjeta USB de Imagenio

¡¡¡ COMPROBADO - FUNCIONA !!!

[Receta aplicada sobre un sistema limpio y recién instalado]

Se trata de dar cobertura al dispositivo wifi que proporciona Imagenio y que responde por las siguientes características: adaptador USB inalambrico Amper Arcadyan Technology Corporation WN4501H. El chipset es exactamente el zd1211b, como se puede ver en el sitio oficial y queda identificado por el código 083a:e501 del fabricante Accton Technology Corp.

Antes de nada debemos asegurarnos de que no se cargue ningún otro módulo 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 la siguiente línea, blacklist zd1211rw 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. Ahora hay que reiniciar y comprobar con el comando lsmod que ninguno de los dos módulos, zd1211rw y ndiswrapper, aparecen cargados en el kernel de nuestro sistema.

Un par de comentarios previos. Es posible que no se necesite bajar las fuentes del kernel y que sea suficiente con las cabeceras, asíq ue este primer intento se llevará a cabo solamente con lo que tenemos en el sistema "tal cual". El módulo a compilar es el zd1211b [esto lo comento porque hay pequeñas modificaciones en el proceso si el módulo fuese el zd1211].

Comprobado: Es necesario instalar las fuentes del kernel (linux-source). No ha colado lo de la compilación con las headers. Para ello se pueden descargar 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. Si no se dispone de conexión bajo Guadalinex se pueden descargar desde otro equipo o sistema operativo, aunque lo mejor es ir al repositorio oficial. Una vez descargadas se copian al escritorio de Guadalinex desde donde se pueden instalar fácilmente con un doble clic sobre dicho archivo o desde un terminal con el comando:

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.

Preparado ya el sistema para compilar, el paso siguiente es bajar los drivers del sitio oficial y las instrucciones sobre cómo instalarlos. Ahora conviene hacer una lectura pausada del documento para detenernos en sus apartados 2 y 3. Reproduzco seguidamente el texto del mismo:

2. Building the device driver

In this section, we will describe how to build our ZD1211 Linux driver under the Linux operating system.

2.1 Package Extraction

The first thing one should do is to uncompress this package by tar. After untaring this package, you can see the source files. One should change directory into this directory for proceeding the next step.

El paquete descargado 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/ZD1211LnxDrv_2_21_0_0.tar.gz

Ahora desde el terminal nos movemos 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/ZD1211LnxDrv_2_21_0_0 [está claro que ruta_archivo se refiere a la ruta donde se encuentra el directorio creado al descomprimir el archivo de los drivers].

Hecho ésto hay que realizar antes un pequeño ajuste, como se describe a continuación:

2.2 Build and install the driver

The package contains drivers for ZD1211 and ZD1211B. If you doesn’t have specified request, both of them will be installed.

Under the extracted directory, there is a Makefile in it. Because our driver can support for kernel 2.4 and kernel 2.6, there are two sets of rule in the Makefile. One has to modify the Makefile according to the path of “kernel source tree” and the version of the kernel in your system. In the Makefile, you may see the following statements,

# if the kernel is 2.6.x, turn on this

#KERN_26=y

#KERNEL_SOURCE=/usr/src/linux-2.6.7

# if the kernel is 2.4.x, turn on this

KERN_24=y

KERNEL_SOURCE=/usr/src/linux-2.4.20-8

If you want to build the kernel under the kernel of 2.4.x, one has to set the variable KERN_24=y and comment the KERN_26=y like that as the example above and modify the variable KERNEL_SOURCE to the path which you install the kernel source. After doing these things, one just need to type the make, and the driver module will be generated and installed.

Se trata de editar con Gedit o cualquier otro editor de texto [bastará con hacer doble clic con el puntero del ratón sobre el archivo Makefile] el archivo Makefile y proceder a realizar ciertas cambios en él. En el texto en inglés se describen varias situaciones, pero puede ser suficiente modificar sólo la línea 20 del archivo Makefile que tenemos en la carpeta donde se ha descomprimido el driver dejándola así:

KERNEL_SOURCE=/usr/src/linux

Ahora se guardan los cambios y seguimos con las instrucciones descargadas:

2.3 Install individual driver

If you only need driver of ZD1211 or ZD1211B, you can issue :

make clean

make ZD1211REV_B=0 (0 for ZD1211, 1 for ZD1211B)

make ZD1211REV_B=0 install (0 for ZD1211, 1 for ZD1211B)

to install the driver.

Así pues llegado a este punto hay que ejecutar los siguientes comandos:

make clean

make ZD1211REV_B=1

sudo make ZD1211REV_B=1 install

3. Getting Start

3.1 Load the driver

Generally, the driver is automatically loaded when the zd1211 dongle inserts. If not, one can use the modprobe –v zd1211(or zd1211b) to load our driver. In order to check whether our driver is loaded successfully, one can use the “lsmod” for this check. If our driver is loaded successfully, the following messages should be seen

...

zd1211 183576 0 (unused)

...

Please note that the 183576 may not be the same as that in your system.

Aquí se informa de que el driver debe estar ya cargado, pero si no fuera así, se procede ejecutando el siguiente comando:

modprobe –v zd1211b

Se puede comprobar si está cargado mediante el comando lsmod que debe mostrarnos una lista de los módulos cargados en el kernel en la que debe aparecer el nuestro, zd1211b. Este es un buen momento para comprobar que no hay ni rastro del módulo zd1211rw, instalado de serie en el sistema, ya que de lo contrario habría que bloquearlo añadiéndolo a blacklist como se indica en el principio.

He supuesto que no ha habido ningún inconveniente en la compilación. Si no ocurriese ésto, hay que informar de los mensajes de error advertidos. Si todo fue bien, hay que proceder a la configuración de la red inalámbrica desde el menú Sistema > Administración > Red donde debes proporcionar todos los datos de conexión de una forma sencilla mediante una interfaz gráfica bastante intuitiva. La otra opción consiste en usar desde un terminal las opciones que maneja el comando iwconfig.

CONFIGURAR LA CONEXIÓN POR LÍNEA DE COMANDOS

Si decides configurar la conexión manualmente, abre un terminal y teclea el comando iwconfig. De esta forma reconocerás la interfaz de la tarjeta wireless con un nombre específico, en nuestro caso como eth1. Ahora tratamos de identificar las redes disponibles que tenemos a nuestro alcance con el comando sudo iwlist eth1 scan, entre las que debe estar la nuestra. Conviene apuntar la ESSID de nuestra conexión si es que no la sabemos, ya que luego nos hará falta. Si no admite el escaneo, consulta con tu proveedor de acceso a Internet para informarte de cuáles son los datos de la Essid y la clave, si es que no los conoces. En Imagenio y en Orange se puede consultar en la base del router.

Con la ESSID y la contraseña de acceso inalámbrica proporcionada por Telefónica [o el proveedor que corresponda] hay que ejecutar en un terminal los siguientes comandos, uno tras otro:

sudo ifconfig eth1 up
sudo iwconfig eth1 essid nombre_de_tu_red_wifi
sudo iwconfig eth1 key s:tu_contraseña
sudo dhclient eth1


Si conectas con IP estática en lugar de modo dhcp, la secuencia de comandos ejecutados en terminal quedaría de este modo:

sudo ifconfig eth1 up
sudo iwconfig eth1 essid nombre_de_tu_red_wifi
sudo iwconfig eth1 key s:tu_contraseña

sudo
ifconfig 192.168.1.X netmask 255.255.255.0 broadcast 192.168.1.255
sudo route add default gw 192.168.1.1

[192.168.1.X es el número IP asociado a tu máquina por lo que si no fuese ese debes usar el que corresponda en tu caso]. Finalmente, si la contraseña wep no está en modo ascii, sino hexadecimal, la línea donde aparece tu contraseña debe quedar así:
sudo iwconfig eth1 key tu_contraseña. Hasta aquí todo bien. Reinicia el equipo y ya deberías tener conexión.

SI A PESAR DE TODO NO LOGRAS CONECTAR


Con lo hecho hasta ahora debería ser suficiente para conectar, pero por razones poco claras, esta información que debe quedar almacenada en el archivo
/etc/network/interfaces desaparece en cada reinicio, con lo que se requiere cargarla cada vez que arrancamos el equipo. Para automatizar el proceso vamos a crear un script, mediante un archivo de texto, por lo que vas a abrir el editor de texto favorito [Gedit es el habitual] y vas a copiar el siguiente contenido:

#!/bin/bash

sudo ifconfig eth1 up
sudo iwconfig eth1 essid nombre_de_tu_red_wifi
sudo iwconfig eth1 key s:tu_contraseña
sudo dhclient eth1


Si conectas con IP estática en lugar de modo DHCP, el texto quedará de esta otra forma:

#!/bin/bash

sudo ifconfig eth1 up
sudo iwconfig eth1 essid nombre_de_tu_red_wifi
sudo iwconfig eth1 key s:tu_contraseña
sudo
ifconfig 192.168.1.X netmask 255.255.255.0 broadcast 192.168.1.255
sudo route add default gw 192.168.1.1

[192.168.1.X es el número IP asociado a tu máquina por lo que si no fuese ese debes usar el que corresponda en tu caso]. Finalmente, si la contraseña wep no está en modo ascii, sino hexadecimal, la línea donde aparece tu contraseña debe quedar así: sudo iwconfig eth1 key tu_contraseña.

Ahora lo guardas en tu escritorio con el nombre conecta.sh y a continuación lo copias o, directamente lo mueves, como root con el comando sudo mv /home/tu_usuario/Desktop/conecta.sh /etc/init.d y, finalmente, moviéndote al directorio donde ha sido copiado [recuerda que debes usar el comando cd /etc/init.d/ para cambiar al directorio elegido] le otorgas permiso de ejecución con el comando sudo chmod 0755 /etc/init.d/conecta.sh

Para finalizar, tecleas en el terminal sudo update-rc.d conecta.sh defaults, con lo que añades un enlace a ese archivo desde el sistema de inicio.

Por último, reinicias para aplicar cambios y ya tienes configurada tu conexión wifi en tu Ubuntu/Guadalinex. Si quieres desconectar la conexión, ejecuta el comando sudo ifdown eth1.

Un consejo, no hagas demasiado caso del asistente para redes Network Manager, ya que no gestiona demasiado bien el uso del módulo zd1211b.

Que nadie se asuste por la extensión de esta guía, ya que en realidad es bastante más corta de lo que parece.

Suerte y hasta pronto :-)