Montar un Punto de Acceso Barato Wireless 802.11g en Linux con Madwifi
La primera tarjeta que compré era de 54 Mbps, y funcionaba perfectamente en un Pentium MMX con 128 Mb con una RedHat 7.3.En el punto limpio de mi ciudad encontré varios PCs, y descubrí que alguien dejo un AMD XP 1800 y un AMD 1000, los cuales los he convertido en PCs de sobremesa. Tenía varios PCs antiguos, Pentium II y III, así que decidí convertir los Pentium II en mis routers y puntos de acceso Wifi e intentar hacer cosas más sofisticadas como utilizar OpenVPN, que demandan mas CPU. Cuando compré la tarjeta extra para el otro router para mi familia, no me di cuenta de que era realmente una tarjeta de 108 Mbps. Asumir que era una tarjeta 54 Mbps me dió algunos dolores de cabeza, pero al final conseguí hacerla funcionar.El driver como ya he comentado es madwifi (http://madwifi.org).
Seguir las instrucciones fue bastante fácil. Inicialmente en el primer router que tenía un Pentium MMX con una RedHat recompile el kernel 2.4.x y funcionó perfectamente. Pero como he migrado mis servidores a Debian, decidí utilizar las instrucciones para Debian dadas en la web de madwifi.
Para poder instalar el paquete Debian, tienes que añadir estas entradas en tu fichero sources.list (yo utilizo testing):
# 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
y ejecutar:
$ su
# apt-get update
# apt-get install madwifi-source
# apt-get install madwifi-tools
# m-a prepare
# m-a a-i madwifi
Esto instala el driver, que se puede cargar utilizando modprobe:
# modprobe ath_pci
Y se obtiene algo así:
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
y solo hay que añadirlo a la lista de modulos:
# echo ath_pci >> /etc/modules
Después de esto, comienza la peor parte, que para mi fue hacerlo funcionar cuando el sistema arranca :)
La página de madwifi recomienda el uso de los scripts pre-up y post-up
Mi intención era configurar la tarjeta en modo master y lo intenté añadiendo lo siguiente en el script interfaces de Debian:
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
pero aunque me configuraba la tarjeta en modo master, pero no era capaz de cambiar la potencia de 9 a 15 dB, tenía que hacerlo siempre una vez ejecutado el script interfaces.Por tanto opté por añadir el siguiente script bash en /etc/rc.local, que es el último servicio que se ejecuta:
con mi RedHat funcionaba el siguiente 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
con la antena original de 2 dBi funcionaba bien, pero incluso con la tarjeta de 108 Mbps, la calidad de la conexión no era muy buena (20/94) así que busque un poquito y descubrí en un foro que ejecutando esto la calidad mejoraba:
iwconfig ath0 channel 9
y repentinamente la calidad del enlace mejoró a 50/94 :) Para hacer uso de la antena de 5 dBi tuve que añadir:
iwconfig ath0 txpower 16
asi que mi script terminó siendo:
#!/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
Las lineas que he comentado las dejo como ejemplo de diferentes posibilidades para mejorar la conexion :)
Espero que esto sirva de ayuda básica a la gente, no pretende ser una guía exhaustiva sino una pequeña referencia para no tener que darle vueltas a la hora de encontrar una tarjeta barata 802.11g y que tenga el chipset Atheros soportado por el driver madwifi.Espero comentarios o
posibles mejoras.
9 comentarios:
muy majo el artículo.step by step.
ahora solo falta que la pongas a trabajar en modo adhoc con los otros nodos (tú elijes el protocolo de enrutado) y ya tienes tu propia red mesh ;-)
Conocia las MANETS pero no conocia las redes mesh. Lamentablemente donde estoy yo no hay ningun nodo wireless al que conectarme :(
Gracias por los animos :)
Bien tio, guapísimos los artículos. Y muy interesantes.
Saludos
lo mejor de todo es qu eme parece genial el reciclado qeu has hecho de lso peces, en mi ciudad tb hay puntos llimpios pero no dejan cojer nada de nada, es una lastima porqeu los veo desde mi ventaa como se mojan con la lluvia y se desperdicia,a mi un xp athlon me vendria de perlas, no entiendo como la gente puede tirar cosas asi, en fin lo del reciclado genial , ojala tomaran ejemplo muchas personas, porqeu para el uso qeu el damos al pc el 90% de la gente iria va que se mata un pc de esos, no creo que haga falta la ultima maquina del mercado, sobre el resto del articulo me parece muy interesante, aunqeu pense qu eel wifi podria llegar mas lejos que solo dos paredes
Gracias por los comentarios. No quiere decir que la wifi no pueda tener mas potencia, la potencia viene marcada por la antena, pero por 9 euros que me costó hace la función que yo quería, y es que llegará a todos los sitios de la casa. Si hubiera querido, hubiera podido comprarme una antena bidireccional. De todas maneras estoy seguro que la señal llega más lejos, pero lo importante es que atraviese 3 paredes (me he confundido en el número) y que sobre todo no pierda calidad (practicamente me da calidades de excelente).
Lo de los puntos limpios, es una posibilidad, otra son las empresas que a veces retiran equipos, amigos que tiran PCs...Para cacharrear con linux, no necesitas un gran equipo, yo esto como comento en el articulo lo he montado en un Pentium MMX, aunque como quiero probar otras cosas, lo migré todo a un Pentium II.
Otra opción es el mercado de segunda mano, ebay, etc...
Estoy buscando algo parecido para saber si se puede. Vivo al lado de mi hermano y el posee un router inalambrico, como todavia los de telefonica no me ponen un simple cable que llegue a mi casa(y eso que ya me enviaron toda la documentacion para conectarme) me compre un tarjeta pci inalambrica, sustitui la antena por otra, y recibo señal perfectamente.
Ahora me he comprado la psp que se puede conectar por wifi a internet, pero no pilla la señal.
Mi pregunta es, con mi tarjeta de red puedo crear un punto de acceso y con la psp conectarme a mi tarjeta? Es lo que has hecho tu?.
holas!! muy interesante el articulo pero yo tengo una duda... keria montar una red en mi casa con un punto de acceso en el salon como tu, y mi duda es: hace falta que el punto de acceso este unido fisicamente a un ordenador? muxas gracias!! y un saludo
Hola, muchas gracias, ta mu weno todo. También considero que la parte más difícil es hacer partir la tarjeta en el booteo. Yo le añadí al /etc/network/interfaces
auto ath0
iface ath0 inet static
pre-up wlanconfig ath0 destroy
pre-up wlanconfig ath0 create wlandev wifi0 wlanmode ap
pre-up iwconfig ath0 essid "Nodo -3" key 0994855510 channel 11
address 192.168.3.1
netmask 255.255.255.0
network 192.168.3.0
y funcionó perfectamente, sin necesidad del script.
Saludos y muchas gracias, ¡que sin tu artículo no lo hago!
Hola, un apregunta sencilla, de prinipiante: el cifrado (WPA o Wep) quien lo realiza? La tarjeta o el S.O.?
Tengo una tarjeta un tanto antigua en el portatil, y quisiera conectarme a redes wpa, pero no soy capaz. Utiliza el driver orinico_cs y la tarjeta es de lucent. probé con wpa-replicant y no lo pude echar a andar...
¿Alguna idea?
Publicar un comentario
Suscribirse a Enviar comentarios [Atom]
<< Inicio