Airport Extreme en Linux (+ WPA / WEP) HOWTO

Imagen de soulnet

Bueno, supongo que esta entrada va dedicada a RaVEN :P.

Está redactada corriendo sentado en la alfombra del salón a modo de apunte para que no se me olvide lo que he hecho :).

Tras muchos dolores de cabeza y varios meses siguiendo la lista de correo de bcm43xx , ahora mismo estoy escribiendo esto en mi iBook conectado a mi wifi (ninguna novedad hasta el momento…) ¡¡¡usando encriptación WEP!!! (ahí está la novedad :P)

Voy a esbozar un pequeño howto:

Para poder usar encriptación (WEP y/o WPA), es necesario parchear el kernel, pues la pila ieee80211 que se desarrolla en éste no tiene lo necesario para usar encriptación, así que nos bajamos ieee80211-devicescape-XXXXXX.tar.bz2

(las XXX’s son fechas)

Bajad también el ieee80211-utils….

Según el orden del archivo ‘series’, parcheamos el kernel. Yo he usado el 2.6.15-rc7. El primer parche da problemas, pero no pasa nada. Pulsad enter cuando pregunte si se quiere aplicar -R y a continuación de nuevo enter. Simplemente apuntad el nombre de los archivos que fallan y cuando termine este primer parche, borrad el archivo y creadlo de nuevo con touch (el parche se supone que deja vacío el archivo). El resto de los parches se aplican sin problemas.

Una vez que se han aplicado los parches, compilar el kernel asegurándonos que está seleccionada la opción “Networking/Generic IEEE 802.11 Networking Stack”

Cuando se compile, reiniciar con el kernel nuevo.

Una vez reiniciado, hay que compilar el driver de la Airport Extreme, pero no el “de toda la vida”, sino uno que usa la nueva pila ieee80211 que acabamos de enchufar en el kernel. Lo obtenemos del mismo sitio que el driver antiguo: bcm43xx-dscape-XXXXXXXX.tar.bz2

De nuevo, bajad la última versión del driver y bajad también el fwcutter. El driver se compila con un simple make, make install.

Para poder usar el driver, hace falta que en /lib/firmware se encuentren el firmware de la tarjeta que extraeremos usando fwcutter. En mi caso, el firmware lo extraje de

/mnt/macos/System/Library/Extensions/ \ /AppleAirPort2.kext/Contents/MacOS/AppleAirPort2

Ahora viene lo que no conseguía. Hay que parchear el wpa_supplicant para que use la pila nueva.

Bajamos la última versión del wpa_supplicant (0.4.7) de

http://hostap.epitest.fi/

y aplicamos el siguiente parche:

wpa_supplicant-0.4.7_dscape-02.patch

Hay que copiar el fichero de configuración “defconfig” a .config y comprobar que el driver para ‘dscape’ está activado. NO activar el de Broadcom, es otra cosa. Con make y make install, ya tenemos casi todo listo.

Descomprimid ieee80211-utils…. Ese archivo contiene tres directorios: scripts, utils y wpa_supplicant (éste último tiene el parche para el wpa_supplicant, el mismo que bajamos antes…)

Primero asegúrate de que cargaste el módulo de la AE. Si no es así: modprobe bcm43xx.

Entramos en utils y escribimos make. Listo. Vamos al directorio de scripts y escribimos…

./sta_up wlan0 sta0

Ya tenemos levantadas 1000 interfaces raras que desconozco lo que son :).

Ahora la parte divertida. Copiar el fichero wpa_supplicant.con en /etc y editarlo (/etc/wpa_supplicant.conf). Es util guiarse por la sección “Configuration file” de http://hostap.epitest.fi/wpa_supplicant/.

En mi caso, como la wifi que tengo en Jerez es WEP, añado lo siguiente al final de la configuración:

network={ ssid=”MI_ESSID” key_mgmt=NONE wep_key0=”LA_CLAVE_WEP” wep_tx_keyidx=0 }

Y ahora la magia: ejecutad wpa_supplicant -c /etc/wpa_suplicant.conf -i sta0 -Ddscape

Con un poco de suerte tendréis algo similar a

wpa_driver_dscape_scan entered Trying to associate with 00:60:bx:xx:xx:xx (SSID=’MI_ESSID’ freq=2427 MHz) Associated with 00:60:bx:xx:xx:xx CTRL-EVENT-CONNECTED - Connection to 00:60:bx:xx:xx:xx completed (auth)

Y nada más, un bonito dhclient sta0 y con suerte tendréis IP :D

Este tutorial está hecho rapido y con prisas, así que sugiero que se lean todos los README y HOWTO que se encuentran con los archivos que bajemos, pues dan una información más detallada. Seguramente edite el post porque se me haya olvidado algún paso :)

¡Suerte a los intrépidos que lo intenten!

P.D: Acabo de ver la fecha y quiero aclarar que NO es una inocentada :o)

Comentarios


A las muchísimas gracias, buen hombre. Lo probaré en cuanto pueda :o)

P.D.: Coque, me encanta tu nueva interfaz :)


Cómo se notan tus progresos con el japonés. Nomenterao de na O_o xD


Siguiendo la misma línea del “me gusta ser mujer”:

ME GUSTA SER WINDOWS XP.

Espera, ¿he dicho eso en voz alta?


No voy a picarme por una respuesta tan simple :)


Lo he linkado en la lista de GUM-Sevilla (citando al autor, por supuesto :oP).

Espero que no te moleste que comparta el conocimiento por ahí ;o)

P.D.: Coque, me encantan la arroba (@) del tipo de letra del correo. Te la voy a copiar un día de estos :oP.


Sin problema, encantado. Solo una pregunta. ¿Qué es GUM-Sevilla? ¿Una asociación de mascadores de chicle? :)


Algo parecido, je, je.

GUM - Sevilla

Grupo Usuarios Macintosh

Bonita y informativa Blog que hay aquí.

feliz año 2006 Salud, paz, suerte,… Thomas GUM-Sevilla (Sevilla)


Hola Thomas. ¿Tú por aquí?. Desde luego que el mundo es un pañuelo.

Fdo.: Ventura (otro del GUM-Sevilla).


Mascadores de chicle… xDDDD


He intentado seguir adelante pese al error maravilloso en drivers/net/wireless/Kconfig que obtenía al parchear. Y claro… el núcleo no llega a compilar debido a los errores. ¿A qué te refires con lo del “touch”? Probablemente sea en este punto donde meta la pata y no te pille.


No ha sido ese el problema, pues eso mismo me ocurrió cuando intenté hacerlo con versiones anteriores del kernel, que me fallaba en el Kconfig. Actualmente estoy con el 2.6.15 y no me dió problemas. Solo puedo recomendarte que pruebes con versiones del kernel >= 2.6.15-rc6.

¡Suerte!


Joer, seré muy torpe. Nunca había parcheado un kernel que me diese problemas. A ver, he descargado desde kernel.org el 2.6.15. Al aplicar el primer patch obtengo errores en ipw2200.c, ipw2200.h, ipw2100.c, ipw2100.h y en Kconfig; creándose sus correspondientes .rej por dar error (o algo así). Creo haber entendido que eliminas estos archivos y sus rej. ¿Y luego el touch a quién? ¿al patch, a los archivos que por cierto me he cargado…? Es esto lo que no entiendo. Mil gracias por todo.


El touch a ipw2200.c, ipw2200.h, ipw2100.c e ipw2100.h. El error en Kconfig no sabría como solucionarlo, pues nunca me lo ha dado. No se si te ayudará, pero siempre he aplicado el parche con el kernel pelado, sin haber hecho ningún tipo de configuración.


Así lo hice y el kernel compiló perfectamente. Pero al final me da errores al compilar bcm43xx y allí se acaba el experimento. Ahora que caigo… ¿sólo había que seleccionar esa opción del kernel? ¿módulo o integrado? ¿lo que venía siendo habitual usar, lo de softmac, no lo has usado? En fin… una pena pero igual sigo trasteando. Una vez más, gracias por todo.


Sigo opinando que “me gusta ser Windows XP”.

Pero vamos, que sin provocar. Sólo me hacen gracia los comentarios autoexplicativos de las penurias de Linux (aunque también hay grandes ventajas, no lo niego).


¿Quien habla de Linux?

Yo tengo GNU/Linux Mandriva 2006.0 y después de una instalación más sencilla aún que Windows XP, tenía todo el hardware funcionando sin tocar nada, incluyendo una tarjeta wireless Senao Atheros, a la que sin problemas le podía poner protección WEP y WPA-PSK

ME GUSTA SER LINUX ;-)


En el kernel 2.6.15 ya hay una versión de ieee80211 que soporta todo lo que dices.

Un saludo, y felicidades por el artículo!


Eso significa que no necesitamos parchear el kernel??


Sin parchear el kernel tienes soporte para WEP, creo que para WPa no. Si te basta con WEP no hay porqué parchear siempre y cuando uses el kernel 2.6.15


Es curioso como un post ultratécnico en un blog como éste, merece tanta atención.

Mi más sincera enhorabuena a Soulnet por él. ¡¡Incluso está siendo útil!!

A este paso dominaremos la blogosfera en menos que canta una golondrina africana al colgarle un par de cocos de los cojones.


Es curioso como un post ultratécnico en un blog como éste, merece tanta atención.

Eso es porque no a todo el mundo le gusta ser wind0ws xp :)

Por cierto, que pena que te vuelvas a Londres y no nos hayamos visto. ¿Cuánto es la próxima vuelta?


La próxima vuelta será en la Navidad del 2006, o sea, dentro de un año.

No tengo vacaciones, sólo nos dejan tomarnos una semana (o si tu tutor del proyecto es muy generoso dos) justo después de los exámenes y en esa semana planeo irme a China con Yuan o a Japón solo (depende de si viene ella).

Así que como no vengas a verme aquí, no nos veremos en tela de tiempo.

“Siempre nos quedará internet”.


pero que utilidad tiene usar WPA para usar como sistema de cifrado WEP? pregunto, a ver si me quitas esa duda :D


Quizá debería haber titulado el artículo como “Airport Extreme en Linux usando o bien cifrado WEP o cifrado WPA, pero no los dos a la vez”. :)


Buenas, estoy en el punto en el que hago:

./sta_up.sh wlan0 sta0

pero me da el siguiente error:

SIOCSIFFLAGS: No existe el fichero o el directorio

El tema es que si sigo haciendo el resto de pasos no me funciona, y supongo evidentemente que sera por culpa del anterior error. ¿Sabreis porque puede ser?

Un saludo.


Bueno investigando, veo que el problema es este:

bcm43xx: PHY connected bcm43xx: Error: Microcode “bcm43xx_microcode5.fw” not available or load failed.

Esto está sacado del dmesg, el tema es que como logro solucionar esto, ya que el fichero está dentro de /lib/firmware. Lo que si me di cuenta es que al extraer el firmware da un error al extraer el bcm43xx_microcode11.fw, no se si es normal o no, pero no me gusta un pelo.

¿Alguien sabria como solucionarlo?.

Un saludo.


Vuelvo a postear para decir que ya logré configurar correctamente los drivers y la red, va perfectamente.

Gracias y un saludo.


Antetodo, felicidades por tu blog, está currao!!

He seguido las instrucciones que indicas al pie de la letra. Tengo un problema al hacer el ‘modprobe bcm43xx’ después de haber compilado e instalado el driver: debian-etch-powerbook:/usr/src/bcm43xx# modprobe bcm43xx WARNING: Error inserting 80211 (/lib/modules/2.6.15-rc7/kernel/net/ieee80211/80211.ko): Unknown symbol in module, or unknown parameter (see dmesg) FATAL: Error inserting bcm43xx (/lib/modules/2.6.15-rc7/kernel/drivers/net/bcm43xx/bcm43xx.ko): Unknown symbol in module, or unknown parameter (see dmesg) debian-etch-powerbook:/usr/src/bcm43xx# <\code>

Con la pila de softmac me pasaba algo parecido. ¿Alguna idea de por qué casca el driver? El snapshot es el de hoy bcm43xx-dscape-20060114

Jesús.

P.D. El problema con el 'Kconfig' que alguno mencionaba se resuelve igual que el problema con el primer parche: se borra el Kconfig y su Kconfig.rej, touch Kconfig y chmod 666 Kconfig y listo.


Gracias, pero en el blog somos 6 escribientes. Yo solo uso mi trocito :).

Con respecto al problema con el módulo solo se me ocurre que no hayas marcado para compilar el Ieee80211…. en el kernel. De todas formas estaría bien ver la salida de dmesg o del syslog. Yo sigo usando el snapshot del día 4 o 5 de enero.

Actualizado: Aunque ahora que releo el post… No será que al vaciar el Kconfig estan dejando de construirse algunos modulos necesarios y por eso el 80211 no se inserta?


Gracias, pero en el blog somos 6 escribientes. Yo solo uso mi trocito :). <\cite>

Bueno, pues está bien igualmente, ;·)

Con respecto al problema con el módulo solo se me ocurre que no hayas marcado para compilar el Ieee80211…. en el kernel. De todas formas estaría bien ver la salida de dmesg o del syslog. Yo sigo usando el snapshot del día 4 o 5 de enero. <\cite>

El fallo del Kconfig es este: debian-etch-powerbook:/usr/src/linux-2.6.15-rc7# patch -p1 < ../bcm43xx-driver/ieee80211-devicescape-060113/correct-kconfig-and-makefile.patch patching file drivers/net/wireless/Kconfig Hunk #1 FAILED at 137. 1 out of 1 hunk FAILED -- saving rejects to file drivers/net/wireless/Kconfig.rej patching file net/ieee80211/Kconfig patching file net/ieee80211/Makefile patching file drivers/net/wireless/ipw/Kconfig patching file drivers/net/wireless/ipw/Makefile patching file drivers/net/wireless/Makefile patching file drivers/net/wireless/hostap/Kconfig debian-etch-powerbook:/usr/src/linux-2.6.15-rc7# <\code>

Supongo que se arregle, como ya comentaba, con un: debian-etch-powerbook:/usr/src/linux-2.6.15-rc7# rm -rf drivers/net/wireless/hostap/Kconfig.rej && rm -rf drivers/net/wireless/hostap/Kconfig && touch drivers/net/wireless/hostap/Kconfig && chmod 666 drivers/net/wireless/hostap/Kconfig <\code>

De todas formas en el los snapshots del "ieee80211-devicescape-XXXXXX" sólo dejan la última versión (del pasado viernes 13) y puede ser que esté rota.

Actualizado: Aunque ahora que releo el post... No será que al vaciar el Kconfig estan dejando de construirse algunos modulos necesarios y por eso el 80211 no se inserta? <\cite>

ni idea ...

De todas formas lo que me jode es que hará cosa de media semana estuve funcionando con la propia pila del kernel en un 2.6.15-rc7 compilado desde las fuentes y con WEP sin ningún problema. Entonces recompilé el kernel para aplicarle un parche para las teclas de función y al compilar el driver obteniéndolo con subversion me cascaba y me daba un fallo por el estilo.

Jesús.


hola a todos! soy el unico al que no compila fwcutter? me da un monton de errores en el codigo de fwcutter.c a que puede ser debido.? gracias


vaya! pues yo mismo me respondo…..

no tenia instaladas las librerias de desarrollo de c++


Este blog é uma representação exata de competências. Eu gosto da sua recomendação. Um grande conceito que reflete os pensamentos do escritor. Consultoria RH

Enviar un comentario nuevo

El contenido de este campo se mantiene como privado y no se muestra públicamente.