viernes, octubre 06, 2006

Deploying a cheap Wireless Access Point 802.11g in Linux with Madwifi

One of my main goals in the infraestructure that I am trying to setup at my home network is to deploy a cheap Access Point to be able to connect to the Internet just sitting in my living room :) (I know, I am too lazy). I am editing the post that I made because I forgot to mention two main advantages of this wireless card. One, of couse as mentioned in the subject, is very cheap, but the other two are, it is a cheap 802.11g wireless card, the most of the documentation that I found was only about Access Points of 802.11b, and the most interesting feature of madwifi, is the use of VAPs or Virtual Access Points. The advantage of this, it is that you could setup several virtual interfaces, in different modes, so you could have a virtual interface to provide connection without any password, another encrypted using WEP or WPA2, or establish managed mode and bridge your Access Point with another one (which is very good for Wireless communities).


Although the wireless interface of the Dell 600 Latitude that I have, has an Intel 2100 wifi interface (therefore b and not g), I wanted to deploy a g (and as any g AP, backwards compatible with b). For that I searched a little bit in Google and I discovered madwifi and the Atheros support. Another requirement was that the card should be PCI, for cutting the cost of having a PCMCIA card and then a PCI adapter for PCMCIA). After a few weeks researching I found the SMCWPCI card which has an Atheros chipset and only for about 20 euros. I bought first the 54 Mbps card (the one in the image above) , and like everything went right I bought an extra card and an antenna with a better gain (5 dBi)like the one below. The antenna provided with the card has only 2 dBi. The difference was, that the signal could go through two walls and reach my living room :)

The first PCI card was 54 Mbps, and worked fine in a Pentium MMX with 128 Mb running RedHat 7.3.

In the recycling center of my town I discovered some trashed PCs, and discovered someone left a AMD XP 1800 and AMD 1000, which I turned in two desktop PCs which respectively became my desktop computer and an extra desktop PC for my family. I several old PCs, Pentium II and III and I decided to turn the Pentium IIs into my routers/wifi APs to try to do better things like OpenVPN or things like that.

When I bought the extra SMC card for my family AP, I did not realize that It was actually a 108 Mbps card. Assuming that It was a 54 Mbps gave some headaches, but finally I managed also to make it to work.

The driver for using this card is madwifi (http://madwifi.org). Following the instructions was pretty easy, I went for the hardest way and try to compile a kernel with the madwifi driver patched in it, as I did with my RedHat (I compile a kernel 2.4.x), but as I was using Debian, in the end I decided to try to compile the driver following the instructions from madwifi for Debian.

I added the following entries in my sources.list :

# Testing
deb http://ftp.au.debian.org/debian testing main contrib non-free
deb-src http://ftp.au.debian.org/debian testing main contrib non-free

and then issue:

$ su
# apt-get update
# apt-get install madwifi-source
# apt-get install madwifi-tools
# m-a prepare
# m-a a-i madwifi

This left the madwifi driver installed, then you could load the driver using modprobe:

#modprobe ath_pci

And you will get something like:

ath_hal: 0.9.16.16 (AR5210, AR5211, AR5212, RF5111, RF5112, RF2413, RF5413)
wlan: 0.8.4.2 (svn 1451)
ath_rate_sample: 1.2 (svn 1451)
ath_pci: 0.9.4.5 (svn 1451)
ACPI: PCI Interrupt 0000:02:02.0[A] -> Link [LNKC] -> GSI 10 (level, low) -> IRQ 10
wifi0: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi0: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi0: H/W encryption support: WEP AES AES_CCM TKIP
wifi0: mac 5.6 phy 4.1 radio 1.7
wifi0: Use hw queue 1 for WME_AC_BE traffic
wifi0: Use hw queue 0 for WME_AC_BK traffic
wifi0: Use hw queue 2 for WME_AC_VI traffic
wifi0: Use hw queue 3 for WME_AC_VO traffic
wifi0: Use hw queue 8 for CAB traffic
wifi0: Use hw queue 9 for beacons
wifi0: Atheros 5212: mem=0xd0000000, irq=10
ACPI: PCI Interrupt 0000:03:00.0[A] -> Link [LNKC] -> GSI 10 (level, low) -> IRQ 10
wifi1: 11b rates: 1Mbps 2Mbps 5.5Mbps 11Mbps
wifi1: 11g rates: 1Mbps 2Mbps 5.5Mbps 11Mbps 6Mbps 9Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi1: turboG rates: 6Mbps 12Mbps 18Mbps 24Mbps 36Mbps 48Mbps 54Mbps
wifi1: H/W encryption support: WEP AES AES_CCM TKIP
wifi1: mac 7.9 phy 4.5 radio 5.6
wifi1: Use hw queue 1 for WME_AC_BE traffic
wifi1: Use hw queue 0 for WME_AC_BK traffic
wifi1: Use hw queue 2 for WME_AC_VI traffic
wifi1: Use hw queue 3 for WME_AC_VO traffic
wifi1: Use hw queue 8 for CAB traffic
wifi1: Use hw queue 9 for beacons
wifi1: Atheros 5212: mem=0xd2000000, irq=10

and then you just have to add it to the modules:

# echo ath_pci >> /etc/modules

After this, starts the worst part, to make it to work when the system boots :)

The madwifi website recommends the use of pre-up and post-up scripts, as mentioned in this web page

My intention was to setup the card in master mode and tried it to add it in the interfaces script:

iface ath0 inet static
pre-up wlanconfig ath0 destroy
pre-up wlanconfig ath0 create wlandev wifi0 wlanmode ap
pre-up iwconfig ath0 essid breinestorm rate auto
address 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0

but didn´t work properly, then I add a bash script to the /etc/rc.local script, which is the last service to run:

Then in my RedHat worked this script:

#!/bin/bash
echo "Arrancando Access Point"
wlanconfig ath0 destroy
ifdown ath0
wlanconfig ath0 create wlandev wifi0 wlanmode ap
ifup ath0
iwconfig ath0 essid breinestorm rate auto

with the original 2 dBi antenna was fine, but also with the 108 Mbps card, the link quality was not very good (20/94) but then I tried searching a little bit with:

iwconfig ath0 channel 9

and suddenly the link quality changed to 50/94 :)
to make use of the 5 dBi antenna I also had to add:

iwconfig ath0 txpower 16

so the script ended up like this:

#!/bin/bash
echo "Arrancando Access Point"
wlanconfig ath0 destroy
ifdown ath0
wlanconfig ath0 create wlandev wifi0 wlanmode ap
#iwpriv ath0 bgscan removed
ifup ath0
iwconfig ath0 essid breinestorm rate auto
#athctrl ath0 -d 20
sleep 10
iwconfig ath0 txpower 16
iwconfig ath0 channel 9

The commented out items could be tried to tune the performance even more in some cases :)

Hope this helps to the people who had the same problems like me with this card.

Comments are more than welcome, I am eager to know who is reading my blog :)

14 comentarios:

Anonymous Anónimo ha dicho...

Hola. Solo 2 cosas, que espero no te importe que te las diga en castellano:

1º- Agradecerte y felicitarte por el articulo.

2º- ¿Que se supone que es "recycling center"? Y agradeceria una respuesta mas elaborada que "centro de reciclaje". Veras, aqui estan los denominados puntos limpios, lugares en donde se pueden depositar "deshechos" que no tienen cabida en los contenedores habituales, ya se sea por su volumen, toxicidad, etc. Y mucho material electronico va a parar a esos puntos limpios para su reciclaje. Mi pregunta va por ese camino, ¿Es tu "recycling center" un punto limpio o estas hablando de alguna otra cosa?
Y, en caso de que efectivamente sea un punto limpio, ¿como conseguiste entrar y ver que habia aprovechable? Desconozco si la entrada es libre. Suena un poco chatarrero, pero tal vez los restos de unos sean bienes aprovechables para otros (y no, no tengo sindrome de diogenes, pero un AMD 1800XP es bastante apetecible, como tu mismo has comprobado)

Un saludo y gracias.

2:06 a. m.  
Blogger tyler durden ha dicho...

Hola:

Te contesto en castellano. Tambien es mi lengua :)

1º Agradecerte a ti por leer el articulo y "perder" el tiempo en escribir en mi blog.

2º Cuando hablo de centro de reciclaje, efectivamente hablo de puntos limpios, pero para un anglosajon, es dificil hacer la distinción. En algunos la entrada no es libre, y en muchos no te dejan llevar nada, pero he dado con uno que si, supongo que es cuestión de suerte. También te diré que no es la norma el que la gente tire los PCs de los que hablo tan potentes, sino la excepción, tuve esa suerte (y el ojo de encontrarlos entre tanta torre). Lo normal que he encontrado son Pentium MMX y con mucha suerte Pentium II. De todas maneras hasta el día de hoy me he abastecido en eBay, y tampoco son precios exagerados, puedes conseguir un Pentium III por menos de 100 euros.

2:33 a. m.  
Anonymous Anónimo ha dicho...

Buenas! Me ha gustado tu artículo, ¿tienes algún problema en que lo traduzca al castellano y lo publique? Por supuesto citando la fuente origianl...

7:08 a. m.  
Anonymous Anónimo ha dicho...

Muy bueno el artículo. He estado buscando la tarjeta pero la que encuentro su precio se aproxima a 40 euros. ¿Podrías dar información sobre donde compraste esa tarjeta?

Un saludo y gracias

1:20 p. m.  
Blogger tyler durden ha dicho...

Hola:

Me alegro mucho de la cantidad de lectores que han leido mi post, veo que si que es verdad el efecto barrapunto.

En cuanto a donde compré la tarjeta, no me gusta hacer publicidad pero lo hice en pcbox. Si no la encuentras dimelo y te indico enlaces en un mensaje privado.

En cuanto a la persona que me ofrece traducirlo al castellano, no hay ningún problema con que apuntes y cites la fuente. Yo incluiría un enlace al artículo traducido. Lo iba a traducir, pero siempre me parece mejor colaborar :)

4:46 p. m.  
Anonymous Anónimo ha dicho...

¿Alguien sería tan amable de traducirlo al español? el sajón no es mi fuerte :S (y veo que no soy el único, todos los comentarios están en castellano).

7:02 p. m.  
Blogger tyler durden ha dicho...

Hola:

Paciencia :) Siento haber molestado a quien tiene dificultades con el ingles, pero tambien comprended que siempre se llega a mas gente y eso tambien es importante. Intentaré cuando tenga un rato en traducirlo y lo colgaré, perdonad todos

8:13 p. m.  
Anonymous Anónimo ha dicho...

Macho lo siento pq seguro que has dedicado tiempo al articulo pero es bastante malo. Primero lo mal redactado que esta, se nota que tienes ingles vallekano (como yo eh pero a mucha honra) y despues que las instrucciones que das son vastante vagas. Y lo de que no te funciona en el /etc/network/intefaces... o no has indagado mucho o no has comprendido bien los articulos que has leido en ingles.
No se, que quieres que te diga, es que esta misma entrada, si no la hubieses publicitado en barrapunto, pues vale, seria una entrada cualquiera que si navegando la encuentras y te vale de algo pues todos contentos, pero anunciar esto a bombo y platino... En fin no sé, tampoco te quiero hundir, por otra parte tambien te dire que a mi me ha servido para ponerme en el camino correcto asi que algo es algo. ¡Seguro que para el proximo articulo mejoras!

11:50 p. m.  
Blogger tyler durden ha dicho...

Pues honestamente, te voy a reprobar tu comentario, porque es de todo menos constructivo:

1.- Haces un comentario evidente, mi lengua materna no es el inglés y por tanto nunca será perfecto, pero honestamente el comentario de que es un inglés de "vallecas", es primero hacer un comentario sobre una parte de la ciudad de Madrid que no tiene ninguna culpa y segundo si quieres decir que no se redactar en inglés, pues me parece muy bien, no lo leas, tampoco pretendía escribir nada literario, más bien al estilo más informal, pero bueno.

2.- Comentas que no me funciona lo de /etc/network/interfaces. Bueno, yo simplemente comento que lo he probado y que no todos los parametros que le indico funcionan y que he optado para poder hacer funcionar el Punto de Acceso con todos los parametros que le indico con un script. P.ej. a mi no me cambiaba la potencia de la tarjeta de 9 a 16 dB. Una aportación más positiva a mi artículo podría haber sido comentar en que puede estar fallando lo que yo digo. En otros foros como Bulma, los articulos se completan también con lo que dicen y aportan los demás, es la esencia del Código Libre :)

3.- Y por último, comentar lo que dices de a "bombo y platillo" (que no platino). Lo que comento sobre todo es que la tarjeta de red que indico se puede poner en modo master para montar un Punto de Acceso G. Como comento en el articulo, yo cuando busque en Internet, me costó bastante encontrar algún sitio donde me aseguraran que un modelo concreto funcionaba bien y que no me obligaría a gastarme mucho dinero en ella. Esta es barata (unos 20-25 euros) y funciona perfectamente. Todo lo que comento en el post (que no artículo). no pretende ser más que algo que acompaña con más información que simplemente decir, comprate esta tarjeta e instalate el driver de madwifi, intento simplemente como digo en mi primer post en inglés de hace unos meses, exponer mis experiencias y que la gente pueda sacarle algún provecho. Como tu bien indicas, a ti te ha llevado en el buen camino (supongo que el uso de esa tarjeta y del driver madwifi). Al fin al cabo se trata de hacer pública cierta información que para el usuario medio que quiere adentrarse en linux, a veces tiene dificil de encontrar.

Aun asi gracias por leer el post y comentar

Sin acritud

12:16 a. m.  
Blogger tyler durden ha dicho...

ya lo teneis en castellano

Gracias a todos por vuestros comentarios.

2:59 a. m.  
Anonymous fabitoski ha dicho...

Hola Si todos hablamos castellano no es mejor traducirlo al español?

agradezco el articulo

7:23 a. m.  
Blogger IGLESIA CIBER ALELUYA ha dicho...

muy bueno tu aporte se que me va a servir ya que tengo casi todo lo necesario
la pc una PIV de 2.1 mHz disco de 40 gigas ram de 1 giga antena omnidireccional tarjeta de red inalambricxa y 5 acces point para rceptores no se si podrias enviarme a mi correo algun dato adicional ya que deseo hacer realidad toso esto porque para mi es como un hobby y ademas quisiera compartir con 5 pèrsonas mi linea de internet ya que a ellas no les llega cble de red y estan como a un kilometro de distancia
tengo dos antenas una omnidireccional de 15 db y una de rejilla de 20 dbi cuañl de estas me recomioendas para usarla poor favor si puedes me envias un diagrama
mi correo es walterjgonzales arroba hotmail.com

12:27 a. m.  
Blogger IGLESIA CIBER ALELUYA ha dicho...

walterjgonzales@hotmail.com

12:29 a. m.  
Blogger IGLESIA CIBER ALELUYA ha dicho...

me olvidaba perdon por no haberlo dicho pero te felicitop por tu aporte lo traduje usando el traductor

12:31 a. m.  

Publicar un comentario

Suscribirse a Enviar comentarios [Atom]

<< Inicio