Please note: This project is no longer active. The website is kept online for historic purposes only.
If you´re looking for a Linux driver for your Atheros WLAN device, you should continue here .

Bienvenido al howto de MadWifi.

El objetivo de este documento es mostrar los pasos necesarios para obtener, instalar y usar la versión más reciente del driver de MadWifi. No hace falta tener conocimientos previos de redes wireless en Linux.

Este howto muestra el proceso de compilación del driver MadWifi. Sin embargo, es posible que tu distribución de Linux ya incluya los drivers pre-compilados de MadWifi. Cada distribución puede tener su propia forma de compilar los módulos del kernel para poder integrarlos con el gestor de paquetes propios de tu distribución. Echa un vistazo a UserDocs/Distro para ver si tu distribución lo contempla.

Nota: Este guía solo muestra los pasos para necesarios para la utilización en modo "managed" (también conocido como station). Para obtener información sobre otros modelos de operación consulta UserDocs.

Requisitos

Para Debian, logueado como root: # apt-get install build-essential

Por favor, comprueba que cumples los requisitos (Requirements) antes de continuar, lo que incluye tener físicamente instalada la tarjeta con chipset Atheros.

Obteniendo las fuentes de MADWiFi

Descarga MadWifi desde sourceforge.net y descomprímelo. Abre una terminal en el directorio que contiene el código fuente de MadWifi.

Eliminar módulos anteriores

Para realizar este paso debes estar logueado como root

Primero, detén todos tus dispositivos MadWifi:

ifconfig ath0 down
ifconfig wifi0 down

Repite las dos líneas anteriores para cada dispositivo MadWifi que tengas instalado.

Suponiendo que te encuentras dentro del directorio de MadWifi, ejecuta los siguientes scripts para elimar los módulos actuales de tu sistema y su memoria:

cd scripts
./madwifi-unload.bash
./find-madwifi-modules.sh $(uname -r)
cd ..

Te preguntará si estás seguro de querer eliminar los módulos anteriores.

Compilando MadWifi

Ya tienes el código fuente de MadWifi, ha llegado el momento de compilarlo y generar el driver. Fácil!

Suponiendo que cumples todos los requisitos anteriores, y que te encuentras en el directorio de MadWifi, solo tienes que teclear:

make

Lo anterior iniciará el proceso de compilación. Es posible que realice preguntas que debamos responder - cuando termine, echa un vistazo para ver si ves algún error. Si todos sale de acuerdo al plan, puedes pasar al siguiente paso. Sino cumples todos los requisitos, el proceso de compilación fallará.

Instalación de MadWifi

Este paso instalará en tu sistema el MadWifi ya compilado. Una vez más, make hará todo el trabajo sucio por nosotros.

Este paso se debe realizar estando loguado como root, sino lo estás teclea 'su' e introduce la password de root, o si lo tienes configurado (por ejemplo, con Ubuntu), antepon sudo al siguiente comando.

Para instalar el driver, teclea:

make install

De esta forma, se copiarán todos los módulos, herramientas y las páginas del man en los directorios adecuados de tu sistema. Ya has completado la instalación básica.

Carga del módulo MadWifi

En este paso, se cargará el módulo del driver de MadWifi en tu sistema. Básicamente, esto hará que el demás software conozca como hablar con tu hardware MadWifi.

Para realizar este paso es necesario ser root, si no lo estás teclea su e introduce la password de root, o si lo tienes configurado (por ejemplo, con Ubuntu), antepon sudo al siguiente comando.

Para cargar el módulo, teclea:

modprobe ath_pci

Si tienes problemas durante el proceso de compilación del driver MadWifi, por favor, lee UserDocs/BuildProblems.

Creación de una Interfaz

MADWiFi soporta puntos de acceso virtuales, lo que significa que puedes crear mas de una interfaz wireless por cada tarjeta wireless física. Por defecto, se crea en modo "sta VAP", lo que en MadWifi se conoce como 'interfaz wireless en modo managed'

Si el snapshot de svn es posterior al 23 de enero de 2.006, (r1407) podemos saltar al siguiente paso:

Si no, sigue las siguientes intrucciones para generar una interfaz estandar en modo 'station'. Teclea (como root):

wlanconfig ath0 create wlandev wifi0 wlanmode sta

Si wlanconfig no funciona, ejecuta 'wlanconfig ath0 destroy' y vuelve a intentarlo.

En este punto, si tecleas iwconfig, deberías obtener una lista como la siguiente:

eth0      no wireless extensions.

lo        no wireless extensions.

wifi0     no wireless extensions.

ath0      IEEE 802.11g  ESSID:""
          Mode:Managed  Frequency:2.457 GHz  Access Point: 00:00:00:00:00:00
          Bit Rate:0 kb/s   Tx-Power:20 dBm   Sensitivity=0/3
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=0/94  Signal level=-95 dBm  Noise level=-95 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Lo siguiente es levantar la interfaz wireless. Para ello teclea (como root):

ifconfig ath0 up

Puedes obtener más información acerca de la creación de interfaces en UserDocs.

Escanear Puntos de Acceso

Si sabes que hay algunos puntos de acceso cerca, un escaneo rápido es la forma más rápida de comprobar que todo funciona correctamente.

Lo primero es cargar el módulo que permite escanear. Teclea (como root):

modprobe wlan_scan_sta

El siguiente paso es escanear. Se puede escanear de dos formas:

La primera forma es específica de MadWifi y muestra una bonita tabla de resultados.

Para ello (como root):

wlanconfig ath0 list scan

Debería mostrar una lista parecida a esta:

SSID            BSSID              CHAN RATE  S:N   INT CAPS
eddie           00:06:25:e8:3a:05    6   54M 36:0   100 EPs

La segunda forma es la forma más común de escanear (y funciona con otras tarjetas wireless), además te da algo más de información por lo que es un poco menos fácil de leer. El comando es:

iwlist ath0 scan

Lo que genera una salida parecida a la siguiente:

ath0      Scan completed :
          Cell 01 - Address: 00:06:25:E8:3A:05
                    ESSID:"eddie"
                    Mode:Master
                    Frequency:2.437 GHz (Channel 6)
                    Quality=37/94  Signal level=-58 dBm  Noise level=-95 dBm
                    Encryption key:on
                    Bit Rate:1 Mb/s
                    Bit Rate:2 Mb/s
                    Bit Rate:5.5 Mb/s
                    Bit Rate:11 Mb/s
                    Bit Rate:18 Mb/s
                    Bit Rate:24 Mb/s
                    Bit Rate:36 Mb/s
                    Bit Rate:54 Mb/s
                    Bit Rate:6 Mb/s
                    Bit Rate:9 Mb/s
                    Bit Rate:12 Mb/s
                    Bit Rate:48 Mb/s
                    Extra:bcn_int=100

Es especialmente útil la línea "Encryption key:on", que indica que el AP emplea algún tipo de clave WEP.

Si obtienes un mensaje como el siguiente:

ath0      Failed to read scan data : Resource temporarily unavailable

en lugar del resultado del escaneo y estás en un entorno que requiere clave de encriptación compartida, intenta ejecutar:

iwconfig ath0 key <tuclave>
iwpriv ath0 authmode 2

Esto indica a la tarjeta que está operando en un entorno restringido de clave compartida y que por lo tanto debe utilizar la clave que le has proporcionado con iwconfig. Para utilizar una clave de sistema abierta (lo que normalmente se considera más seguro) utiliza 'iwpriv authmode 1':

iwconfig ath0 key <tuclave>
iwpriv ath0 authmode 1

Una vez hecho esto, vuelve a escanear. Deberías ver los resultado del escaneo.

Conectarse con un AP abierto

Si en el escaneo anterior aparece "Encryption key:off", no tienes que hacer nada más para asociarte con el AP, ya que el driver se conectará automáticamente al AP que emita la señal más fuerte. En cualquier caso, es interesante que conozcas cómo indicarle a que AP conectarse.

Teclee (como root):

iwconfig ath0 essid "eddie"

Se conectará con el AP con ESSID "eddie" (ESSID es el nombre de red).

Puedes especificar a que AP te quieres conectar indicando su dirección MAC (este campo recibe el nombre de BSSID, en la parte inferior , aparece como 'Address').

Para indicar a que AP conectar mediante su MAC/BSSID, teclee:

iwconfig ath0 ap 00:06:25:E8:3A:05

Si, por lo contrario, quieres permitir que el driver decida automáticamente a qué AP asociarse, teclea:

iwconfig ath0 ap any

O:

iwconfig ath0 ap auto

Estando solo conectado a un AP es como tener un cable de red pinchado en tu máquina - ahora estás 'en la red', pero sin una dirección IP no puedes hacer nada. Por esta razón el siguiente paso es conseguir una dirección IP. La herramientas que se utilizan para asignar una dirección IP a una interfaz wireless es la misma que la que se utiliza para una red cableada.

En primer lugar, tienes que saber si en la red a la que te estás conectando hay un servidor DHCP (servidor que te proporciona automáticamente una dirección de red, la forma de acceder a Internet y consultar al DNS).

Existen varios métodos para averiguar si la red posee DHCP:

  • Si has usado la tarjeta de wireless en Windows (conectándote a esta red), y lo configuraste como 'Obtener una dirección IP automáticamente', lo más seguro es que lo haya.
  • Si has usado la tarjeta de wireless en Windows (conectándote a esta red), y has tenido que establecer la dirección IP tu mismo, debes buscar los datos de configuración que usaste anteriormente.
  • Si te has conectado a cualquier punto de acceso/router combinado, lo más seguro es que haya DHCP.

  • Si te encuentras en un cafetería con Internet, lo más seguro es que lo haya.
  • Si hay cerca alguien que conozca la red, pregúntale si tiene DHCP.
  • Si no puedes saber si la red tiene DHCP, intenta utilizar el método que aparece a continuación, puede que funcione, y obtendrás la respuesta por ti mismo.

Conexión con DHCP

Existen varios clientes de DHCP disponibles, el cliente que tengas instalado depende en gran medida de que distribución de GNU/Linux estés usando. El más común es el dhclient, que será el que utilizaremos aquí:

Para obtener una dirección IP de una red con DHCP activado, teclea (como root):

dhclient ath0

Deberías obtener algo como:

Internet Software Consortium DHCP Client 2.0pl5
Copyright 1995, 1996, 1997, 1998, 1999 The Internet Software Consortium.
All rights reserved.

Please contribute if you find this software useful.
For info, please visit http://www.isc.org/dhcp-contrib.html

eth1: unknown hardware address type 24
eth1: unknown hardware address type 24
Listening on LPF/ath0/00:02:6f:20:14:81
Sending on   LPF/ath0/00:02:6f:20:14:81
Sending on   Socket/fallback/fallback-net
DHCPDISCOVER on ath0 to 255.255.255.255 port 67 interval 7
DHCPOFFER from 192.168.0.254
DHCPREQUEST on ath0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.254
bound to 192.168.0.152 -- renewal in 7200 seconds.

La línea inferior muestra que el servidor de DHCP nos ha asignado la dirección 192.168.0.152. Además de otra información como el servidor DNS y el gateway en el caso de que esté disponible.

Otra forma, en caso de que tengas instalado dhcpcd en lugar de dhclient:

dhcpcd ath0

Si la red a la que te has conectado tiene acceso a internet, deberías ser capaz de hacer lo siguiente:

ping bbc.co.uk

Para comprobar que todo está bien. Si lo está, deberías obtener algo como esto:

PING bbc.co.uk (212.58.224.131) 56(84) bytes of data.
64 bytes from rdirwww-vip.thdo.bbc.co.uk (212.58.224.131): icmp_seq=1 ttl=119 time=15.4 ms
64 bytes from rdirwww-vip.thdo.bbc.co.uk (212.58.224.131): icmp_seq=2 ttl=119 time=14.3 ms
64 bytes from rdirwww-vip.thdo.bbc.co.uk (212.58.224.131): icmp_seq=3 ttl=119 time=15.1 ms

Conexión sin DHCP

Conectarse a una red sin DHCP complica las cosas un poco más ya que tendrás que conocer ciertos detalles de la red, entre los que se incluyen los siguientes:

  • Una dirección IP que puedas usar. Por ejemplo, algo como 192.168.0.10, pero podría ser distinta.
  • La máscara de red. Normalmente suele ser 255.255.255.0, or 255.255.0.0, pero podría ser distinta. La máscara de red sirve para conocer el rango de direcciones de la red local.

  • La dirección del servidor local DNS (si lo hubiera). Un servidor DNS se utiliza para obtener la dirección IP de un sistema, por ejemplo, madwifi-project.org y viceversa.
  • La dirección de la puerta de enlace (si la hubiera). La puerta de enlace permite conectarte a las redes que se encuentran fuera de la red local - normalmente, a internet.
  • El nombre del dominio local de la red (opcional). Este es el nombre que se añade a todos los nombres de las máquinas de la red local. Por ejemplo: dos máquinas en una red local llamadas ns1.localnet.com y ns2.localnet.com. En este caso, el nombre del dominio local sería localnet.com.

Si cualquier información anterior no es correcta podría suponer que la conexión a la red no funcione adecuadamente, pero no provocará un daño permanente.

Para asignar una dirección IP y un máscara de red a la interfaz creada anteriormente (ath0), teclea los siguiente (como root):

ifconfig ath0 <dirección IP> netmask <máscara de red> up

Para indicar la dirección de los servidores DNS, edita el fichero /etc/resolv.conf con un editor de texto. De nuevo, tendrás que ser root:

gedit /etc/resolv.conf

Si prefieres utilizar cualquier otro editor de texto, cambia gedit por tu editor de texto favorito.

Una vez estás editando el fichero, añade un '#' a todas las líneas que comiencen con la palabra 'nameserver', y añade tus propias líneas con la siguiente nomenclatura:

nameserver <dirección IP DNS>

Si existen varios servidores de nombres, puedes añadir más líneas 'nameserver', una por cada servidor DNS. Si conoces el nombre del dominio de la red local, añade la siguiente línea:

search <nombre dominio local>

Guarda el fichero y el cierra el editor.

El último paso es indicar al sistema que use la puerta de enlace (en caso de que lo haya). Para ello, deberás utilizar el comando 'route', que sirve para indicarle al kernel como acceder a las diferentes subredes. Como root, teclea:

route add default gw <nombre puerta enlace>

O:

route add default gw <dirección IP puerta enlace>

Deberías ser capaz de ver la red y acceder a Internet. Para comprobar que todo ha ido bien teclea:

ping bbc.co.uk

Deberías obtener algo como:

PING bbc.co.uk (212.58.224.131) 56(84) bytes of data.
64 bytes from rdirwww-vip.thdo.bbc.co.uk (212.58.224.131): icmp_seq=1 ttl=119 time=15.4 ms
64 bytes from rdirwww-vip.thdo.bbc.co.uk (212.58.224.131): icmp_seq=2 ttl=119 time=14.3 ms
64 bytes from rdirwww-vip.thdo.bbc.co.uk (212.58.224.131): icmp_seq=3 ttl=119 time=15.1 ms

Conexión con un AP con encriptación WEP

Conectarse a un AP con encriptación WEP es muy parecido a conectarse a uno sin encriptación (abierto). La principal diferencia radica en que tienes que indicar la clave WEP usando iwconfig. Puede ser necesario que especifiques si la clave WEP es "abierta" o "compartida" dependiendo de la configuración de la encriptación WEP del AP.

En primer lugar, conéctate al punto de acceso usando "iwconfig" como se describió anteriormente. Cuando se utiliza WEP suele ser interesante especificar a que AP te quieres conectar en lugar de dejar que se conecte al de mayor señal al utilizar "ap auto" o "ap any". Para ello, se debe especificar la dirección MAC o el ESSID del AP y tal y como se mostró anteriormente.

En segundo lugar, puede ser necesario especificar si la clave WEP es "abierta" o "compartida". Si utilizas WEP "compartida", utiliza "iwpriv authmode 2" tecleando lo siguiente como root:

iwpriv ath0 authmode 2

Si utilizas clave WEP "abierta" (lo que normalmente se considera más seguro) utiliza "iwpriv authmode 1" introduciendo lo siguiente como root:

iwpriv ath0 authmode 1

Una vez especificado si deseas utilizar clave WEP compartida o abierta, debes introduce la clave mediante el siguiente comando como root:

iwconfig ath0 key <clave wep (en formato hexadecimal)>

O, si la clave tiene formato ASCII en lugar de hexadecimal, utiliza el siguiente comando como root:

iwconfig ath0 key <s:clave ASCII>

Esto debería establecer una conexión entre tu tarjeta wireless y tu AP. el siguiente paso es configurar to conexión a Internet mediante DHCP o especificando los detalles de tu conexión a Internet como se explicó anteriormente.

Conexión a un AP con WPA

WPA ofrece el mejor esquema de seguridad disponible actualmente. Esta seguridad extra lleva un poco más de tiempo y esfuerzo para configurar, pero merece la pena. Los siguientes links muestran el soporte que ofrece MadWifi a WPA, y como aprovecharlo:

* UserDocs/802.11i

* UserDocs/WPA_PSK_on_Both_Ends

Desinstalación MadWifi

Desinstalar MadWifi es fácil, el único requisito es que lo haga root. En primer lugar, cambiate al directorio que contiene el código fuente (o, si no tienes el código fuente, descárgatelo nuevamente). Escribe:

make uninstall

Lo anterior ejecutará los scripts que buscan y eliminan los módulos y utilidades que hayan sido instalados.

Resolución de Problemas

Si hago va mal, lo primero que deberías hacer es comprobar lo que has hecho anteriormente, y asegurarte de que lo hiciste bien. Parece fácil, pero cuando no estás familiarizado con algo, es fácil cometer pequeños errores.

Después de lo anterior, si algo sigue sin funcionar, deberías echar un vistazo a UserDocs/Trobleshooting?, la página de preguntas frecuentes (FAQ) sobre los problemas del driver MadWifi. Puedes encontrar mucha documentación en el wiki de MadWifi, un vistazo al wiki puede ayudarte mucho. Si nada de lo que encuentres allí encaja con los problemas que estás experimentando, echa un vistazo en Soporte. Esta página explica como buscar y encontrar ayuda en MadWifi. En la mayoría de casos, la solución a tu problema se encontrará en el archivo de la lista de correo, o preguntando en la lista de correo o a través de IRC. Los detalles para poder acceder a ambos están accesibles en la página de Soporte.

Más Documentación

Si quieres examinar la documentación que viene con MADWiFi, puedes encrontrala en el directorio docs. Una vez que te encuentres en el directorio correcto, puedes compilar el archivo users-guide.tex para generar un fichero PDF tecleando:

make

Necesitarás tener instalada una distribución de latex para generar la documentación.

También puedes compila guía de usuario como HTML instalando latex2html y ejecutando el comando:

latex2html users-guide.tex

De está forma se creará el directorio users-guide con la salida en su interior.