gentoo linux, java, software libre y otras hierbas
dic, 03 2009 - 10:40 pm

Usando b43 para tarjetas inalámbricas BCM43xx en Linux

Hola a todos!

Otra vez Cortex, que llevaba un buen rato sin pasarse por aquí.

Para los que aún no se han enterado, el día de hoy se hizo estable la versión 2.6.32 del kernel Linux. Como siempre, incluyendo múltiples mejoras, varios añadidos y correcciones. Por mencionar algunas de las cosas nuevas, encontraremos soporte 3D para los chips gráficos Radeon más nuevos (algo que sé que muchos estaban esperando) así como soporte para KMS, Devtmpfs con lo cual se pretende tener un Linux independiente de Udev, mejoras en el sistema de archivos Btrfs, mejor manejo de memoria y mucho más.

Algo que todos los usuarios de tarjetas inalámbricas BCM43xx estabamos esperando, era el soporte de éste chipset por el driver b43. ¿Motivos? Muchos. Por ejemplo, no podíamos poner nuestra tarjeta en modo monitor y eso ya es mucho que decir.

En ésta nueva versión del kernel, ya hay soporte para éste tipo de chipsets y lo más recomendable es hacer la migración inmediata. No hay comparación alguna con el driver broadcom-sta, se nota un mejor funcionamiento, algo que los usuarios Windows podían disfrutar desde hace un buen rato ya.

Veamos como podemos disfrutar de éste driver.

Lo primero, es decir, que se necesita hacer uso de la versión 2.6.32 de Linux; ninguna versión anterior servirá. Si aún no te animas a compilar tus kernel personalizados (algo de lo que habíamos hablado I II III), la opción que te queda es esperar a que los desarrolladores de tu distribución incluyan el paquete precompilado con ésta versión. Si usas la ramas estables, probablemente pasará un buen tiempo antes de que ésto ocurra.

Éste driver sólo soporta los nuevos dispositivos BCM43xx IEEE 802.11G, pero no los viejos IEEE 802.11B. Éstos son soportados por el driver b43legacy. Para saber si tu tarjeta broadcom ya es soportada por éste driver, revisa aquí.

El proceso lo llevaré acabo desde mi Gentoo.

1. Instalamos gentoo-sources-2.6.32

emerge –sync
ACCEPT_KEYWORDS=”~arch” emerge -av gentoo-sources

2. Configuramos el kernel normalmente y agregamos el soporte

 Device Drivers -->
   Network device support -->
     Wireless LAN
       [*] Wireless LAN (IEEE 802.11)
       <*>   Broadcom 43xx wireless support (mac80211 stack)
       [ ]     Broadcom 43xx PCMCIA device support
       [*]     Broadcom 43xx debugging

3. Compilamos, copiamos kernel a /boot y modificamos GRUB

make && make modules_install
mount /boot
cp arch/x86_64/bzImage /boot/gentoo-2.6.32
vim /boot/grub/grub.conf

4. Una vez instalado el kernel, procedemos a instalar b43-fwcutter y el firmware. La versión que incluye hoy, tu distribución, no te servirá. Descarguemos la versión en desarrollo

git clone http://git.bu3sch.de/git/b43-tools.git
cd b43-tools/fwcutter
make
cd ..
Nota: En caso de que recibas un error, debido a la falta de la librería cURL, recompila dev-util/git con el USE flag curl.

5. Descarguemos e instalemos el firmware

export FIRMWARE_INSTALL_DIR=”/lib/firmware”
wget http://downloads.openwrt.org/sources/broadcom-wl-4.178.10.4.tar.bz2
tar xjf broadcom-wl-4.178.10.4.tar.bz2
cd broadcom-wl-4.178.10.4/linux
sudo ../../fwcutter/b43-fwcutter -w “$FIRMWARE_INSTALL_DIR” wl_apsta.o

6. Reiniciamos

Una vez hayamos terminado de reiniciar, como root comprobamos que la interfaz esté funcionando:

iwconfig
ifconfig wlan1 up
iwlist wlan1 scan

¡Eso es todo! ¡A disfrutar sanamente del modo monitor!

41 Comentarios | deja el tuyo

4 enlaces entrantes

37 Comentarios en “Usando b43 para tarjetas inalámbricas BCM43xx en Linux”

  1. Cristian dice:

    Brutal parcero…. justo estaba compilando esta nueva versión del kernel cuando me di cuenta que el twitterfeed había publicado esta nueva entrada…

    Muy bueno todo… gracias!

    Un abrazo!

  2. epsilon77 dice:

    RT: @casidiablo: Usando b43 para tarjetas inalámbricas BCM4312 en Linux http://bit.ly/6X46Ld

  3. Marcos dice:

    Me alegro por fin, sobre todo por poder poner la tarjeta en modo monitor….
    no ser malitos ;)
    jaja
    Saludos

  4. Bueno, yo compilé el 2.6.32 e incluí el módulo b43, pero no reconoció correctamente mi BCM4312 :(

    Esperaré un poco más a ver cómo van las cosas con este módulo, mientras me quedo en 2.6.30-5 y el módulo que provee el fabricante

  5. Cortex dice:

    ¿Qué distribución estás usando?

    Además, ¿instalaste correctamente el firmware? En el 90% ese es el motivo por el que no se levanta la interfaz.

  6. Estoy usando Debian testing. La instalación del firmware la hice con el paquete b43-fwcutter

  7. Cortex dice:

    Claro, lo que pensaba. Si lees bien el post, verás que hay una parte en la que dije:

    “4. Una vez instalado el kernel, procedemos a instalar b43-fwcutter y el firmware. La versión que incluye hoy, tu distribución, no te servirá.

    Tienes que seguir los pasos al pie de la letra (adaptando para tu distribución) si quieres instalar bien el firmware.

    Estoy casi seguro que ni siquiera en la rama inestable (SID), está esa versión de b43-fwcutter.

    Suerte con eso!

  8. Borré el firmware anterior y probé con el firmware que colocas (siguiendo tus paso al pie de la letra) y realmente no funciona. Al momento de escanear las redes con “wlist wlan0 scan” me dice:

    wlan0 Interface doesn’t support scanning: Device or resource busy

    Y en ocasiones me dice:

    wlan0 Interface doesn’t support scanning: Resource temporarily unavailable

    Incluso hay veces que que queda colgada la máquina (seguramente el driver vuelve loco al kernel)

  9. Acidrums4 dice:

    Primero que todo gracias por la existencia de este espacio! Linux no es ubuntu pero mucha gente ahora no se da cuenta de eso jejeje…

    Tengo Gentoo, he realizado los pasos de esta guía y todo salió bien; al parecer ahora mi módem bcm4311 ahora soporta el modo monitor. Gracias!

    Pero antes de poder disfrutar de las consecuencias de eso jejeje tengo un problema: al iniciar el computador, el modem no arranca (permanece con la lucecita color naranja) hasta que ejecuto ‘ifconfig wlan0 up’ y ahí si arranca. Además de esto, en Networkmanager no aparece listado ningún dispositivo wifi… No tengo idea de qué es lo que está pasando con todo esto…

  10. Cortex dice:

    Hola Acidrums4,

    Lo primero que te recomiendo es que reemplaces NetworkManager por Wicd. Éste último es mucho mejor y aparte te permite más configuraciones y para cada red en específico. En Gentoo sería lo mismo:

    emerge -C networkmanager
    emerge -av wicd
    rc-update del net.* (reemplaza el * por las interfaces que hayan)
    gpasswd -a usuario users
    rc-update add wicd

    Y queda listo. Probablemente esa sea la solución mas apropiada.

    Mira y nos cuentas.

  11. Acidrums4 dice:

    He probado instalando wicd siguiendo los pasos que has mencionado; aunque funciona perfectamente el gran inconveniente que tuve fué que no hay soporte para conexiones ppp: en mi casa dispongo de un modem usb 3G para conectarme a internet, mientras que el modem wifi lo uso para conectarme en otros sitios… Por lo que he visto, wicd no tiene soporte para las conexiones ppp.

  12. Acidrums4 dice:

    Por cierto, reinstalé networkmanager y al hacer “sudo modprobe b43″ el modem wifi ya se activó y networkmanager ya reconoció las redes inalámbricas disponibles. Al parecer tocaba recompilar por tercera vez networkmanager :D

  13. Gneo dice:

    Solo un par de cosas c0rtex, antes tambien se podia tener las broadcom en modo monitor, pero era bastante tedioso porque tocaba aparte de parchar el kernel para el uso normal de la inalambrica, parcharlo para soporte en modo monitor, ahora veo que con le kernel 2.6.32 se evita eso, lo segundo es que con iwlist scan no se comprueba que la inalambrica esta en modo monitor, hay solo sabemos que nuestra wireless funciona !! xDD, para probar el modo monitor seria inyectar paquetes o usar kismet por ejemplo para el scaneo de nodos y usuarios.. :P

  14. Cortex dice:

    Gneo, antes sí se podían poner las Broadcom en modo monitor, pero la BCM4312 NO SE PODÍA, únicamente hasta la versión 2.6.32, se vino a hacer posible ésta opción.

    En cuanto a lo de iwlist scan, en ningún momento se dijo que con ese se ponía la interfaz en modo monitor, observa que dije: “como root comprobamos que la interfaz esté funcionando;-) Para ponerla en modo monitor se podría hacer uso de la suite Aircrack-ng con el comando: airmon-ng start [interfaz] ó incluso usando el paquete estandar, wireless-tools.

    Para más información, revisa éste link: http://www.aircrack-ng.org/doku.php?id=getting_started

    Suerte!

  15. Gneo dice:

    jajaja, C0rtex tan pelión jeje, bueno yo como tengo una BCM4311 desde hace ya un tiempo la podia tener en modo monitor pero me tocaba hacer muchos parches y era tedioso cada vez que se compilaba un nuevo kernel, y lo de iwlist scan lo dije porque lo vi en uno de los comentarios….
    jajjaa c0rtex pelion… ;)

¡Déjanos tu comentario!