broadcom wlan 43xx con el wireless-stack mac80211 (kernel > 2.6.24)

Desde siempre he usado el driver del kernel bcm43xx para hacer funcionar mi tarjeta wifi broadcom 4311 en Linux (desde debian a fedora); el caso es que NUNCA he usado ndiswrapper y “JAMAS!” lo usaré.

Historia:

Broadcom siempre ha sido un dolor de cabeza para los usuarios Linux, con las pocas especificaciones técnicas liberadas y con poco soporte en el driver bcm43xx (el antiguo); eran muchos los usuarios que preferían fielmente montar ndiswrapper a usar el driver del kernel.

Como informé en un post anterior, el wireless-stack del kernel Linux fue re-escrito agregando una nueva API (conocida como mac80211) y nuevos drivers para la gran mayoría de los dispositivos; incluyendo un nuevo driver (que reemplaza el viejo bcm43xx) llamado b43 (más un driver para soportar dispositivos tipo 802.11a y b y algunos viejitos g llamado b43legacy); las tarjetas soportadas y no soportadas:

Soportadas

* bcm4303 (chips 802.11b)
* bcm4306
* bcm4311 rev 1 / bcm4312
* bcm4311 rev 2 / bcm4312 (needs patches for 2.6.24)
* bcm4318

Aun no Soportadas:

* Dispositivos 802.11a de la serie 4309 y 4312 no es soportado.
* No hay ningún soporte para 802.11n
* BCM 4328/4329

Determinando si tu tarjeta es soportada:

Si prueban con un lspci -vnn verán la info de la tarjeta:

01:00.0 Network controller [0280]: Broadcom Corporation BCM94311MCG wlan mini-PCI [14e4:4311] (rev 01)
Subsystem: Hewlett-Packard Company Unknown device [103c:1364]
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at e8000000 (32-bit, non-prefetchable) [size=16K]
Capabilities: [40] Power Management version 2
Capabilities: [58] Message Signalled Interrupts: Mask- 64bit- Queue=0/0 Enable-
Capabilities: [d0] Express Legacy Endpoint IRQ 0

En mi caso, el subsistema PCI es 0x14e4 (en negrillas) y el chipset le sigue (4311) por lo que mi dispositivo está soportado por b43

Una lista de dispositivos soportados aqui

Instalando el Firmware de la tarjeta:

Si tienen Debian (lenny, sid) solamente necesitan instalar:

aptitude install b43-fwcutter

y si tienen fedora 8 (tener repositorio livna):

yum install b43-fwcutter

o seguir instrucciones que están aqui para usar el fwcutter a mano:
http://linuxwireless.org/en/users/Drivers/b43

En mi caso compilé mi kernel 2.6.24.2 e instalé b43-fwcutter en /lib/firmware

Cosas que soporta:

Modos de infraestructura (managed, ad-hoc) y modos administrados (station, monitor y access point), modos monitor y promiscuo (podré usar aircrack en la broadcom?), posibilidad de levantar multiples interfaces en modo monitor y algunas cosas más (que por ahora, a mí solo me interesa navegar, jajaja).

Testing:

un lsmod | grep b43 muestra:

b43                               102816  0
led_class                     6020      1 b43
input_polldev             5896      1 b43

Si acaso no está montado, ejecuten un simple:

modprobe b43

como root para obtener el driver levantado.

Me ha agreado dos interfaces, una:

eth1   Link encap:UNSPEC  HWaddr 00-14-A5-E4-AA-1A-6C-6F-00-00-00-00-00-00-00-00
UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

Con el nombre de la antigua interfaz y otra:

wlan0 Link encap:Ethernet  HWaddr 00:14:A5:E4:AA:1A
inet addr:xxx.xx.xx.xx  Bcast:xx.xx.xx.255  Mask:255.255.224.0
UP BROADCAST RUNNING MULTICAST  MTU:576  Metric:1
RX packets:677 errors:0 dropped:0 overruns:0 frame:0
TX packets:699 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:260351 (254.2 KiB)  TX bytes:102029 (99.6 KiB)

Interfaz wlan0 que es la verdadera interfaz wifi.

Conectando:

Encontrandome en casa de Walter Vargas he hecho una serie de pruebas como escanear el espectro:

>iwlist scan

wlan0  Scan completed :
Cell 01 – Address: 00:00:01:02:03:04
ESSID:”pruebas”
Mode:Master
Channel:6
Frequency:2.437 GHz (Channel 6)
Quality=93/100  Signal level=-43 dBm  Noise level=-69 dBm
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 18 Mb/s
24 Mb/s; 36 Mb/s; 54 Mb/s; 6 Mb/s; 9 Mb/s
12 Mb/s; 48 Mb/s
Extra:tsf=0000001b98c029d8
Cell 02 – Address: 00:13:10:42:DA:22
ESSID:”Paramillo LAN”
Mode:Master
Channel:8
Frequency:2.447 GHz (Channel 8)
Quality=60/100  Signal level=-80 dBm  Noise level=-69 dBm
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
Extra:tsf=0000001b8c260190
Cell 03 – Address: 00:19:5B:DF:9A:A8
ESSID:”ECA”
Mode:Master
Channel:8
Frequency:2.447 GHz (Channel 8)
Quality=60/100  Signal level=-80 dBm  Noise level=-69 dBm
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Extra:tsf=0000001ab7f2916f
y configurar la conexión con la más cercana:

>iwconfig essid pruebas

wlan0  IEEE 802.11g  ESSID:”pruebas”
Mode:Managed  Frequency:2.437 GHz  Access Point:  00:00:01:02:03:04
Bit Rate=24 Mb/s   Tx-Power=27 dBm
Retry min limit:7   RTS thr:off   Fragment thr=2346 B
Encryption key:off
Link Quality=91/100  Signal level=-44 dBm  Noise level=-69 dBm
Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
Tx excessive retries:0  Invalid misc:0   Missed beacon:0

Está conectada?

Bueno, el networkManager muestra que el controlador usado para lograr la conexión es b43-pci-bridge y con route -n demostramos que está conectada a Internet (obvio; sino, no pudiera estar posteando este artículo!) y la conexión es bastante estable (mucho más que mi viejo driver bcm43xx); además no da tantos problemas de desconexión (llevo algo más de una día con la tarjeta encendida y sin ningún tipo de problemas).

Si miramos:

>dmesg

Encontraremos que el device tiene un “debug” que usa cada vez que se asocia a un AP o se activa la interfaz:

wlan0: Initial auth_alg=0
wlan0: authenticate with AP 00:00:01:02:03:04
wlan0: RX authentication from 00:00:01:02:03:04 (alg=0 transaction=2 status=0)
wlan0: authenticated
wlan0: associate with AP 00:00:01:02:03:04
wlan0: RX AssocResp from 00:00:01:02:03:04 (capab=0x401 status=0 aid=2)
wlan0: associated
Demostrando sin lugar a dudas; que el equipo se encuentra asociado al AP.

Problemas encontrados:

El problema más significativo es que la coexistencia con bluetooth no ha sido desarrollada y falla de plano y por completo con este error:

hci_usb_isoc_rx_submit: hci0 isoc rx submit failed urb f757ba14 err -28
hci_usb_isoc_rx_submit: hci0 isoc rx submit failed urb f757ba14 err -28

En mi caso que no uso tanto el bluetooth, simplemente apago la tarjeta para usar el bluetooth.

El modo ad-hoc me falla con el siguiente error:

>iwconfig wlan0 essid pruebas mode ad-hoc
Error for wireless request “Set Mode” (8B06) :
SET failed on device wlan0_rename ; Device or resource busy

Conclusiones: 

He probado el driver y funciona muy bien; espero que les sirva esta guía.

Acerca de phenobarbital

http://about.me/phenobarbital

Publicado el 11 marzo 2008 en Linux, PlanetaLinux. Añade a favoritos el enlace permanente. 5 comentarios.

  1. Saludos.
    En mi maquina esta funcionando lo mas de bien. intente ponerla en modo monitor y en ad-hoc

    # iwconfig wlan0 mode monitor
    # iwconfig wlan0 essid pruebas mode monitor

    y al principio me daba el error q dices:

    Error for wireless request “Set Mode” (8B06) :
    SET failed on device wlan0_rename ; Device or resource busy

    pero al hacer

    # ifconfig wlan0 down

    y luego intentar denuevo ponerla en los 2 modos. me funcionaba. intente con kismet y airodump y funca.
    aunque hummm deberia leer un poco mas pues nu entiendo bien los resultados y no se si lo estara haciendo bien xD, enfin.

    gracias por la info
    saludos.

  2. a mi me es imposible poner la broadcom 4311 rev1 en modo monitor me dice

    sudo iwconfig eth1 mode monitor
    Error for wireless request “Set Mode” (8B06) :
    SET failed on device eth1 ; Device or resource busy.

    ¿por que?

  3. Este post esta un poco viejo pero pondre la solucion que me servia a mi,

    Luego de saber q nuestra wlan0 anda, la tumbamos
    $ifconfig wlan0 down
    ponemos el modo que queresmos ya sea monitor o otro
    $iwconfig wlan0 mode monitor
    y la volvemos a reintegrar
    $ifconfig wlan0 up
    y listo ya podemos usar el airodump

    mi problema es q no entiendo aun el aircrack, en realidad tengo solo 2 wifi protegidas con wep pero no se como incluirmeles jeje

  1. Pingback: Phenobarbital con Soda » Blog Archive » Jugando con el kernel linux 2.6.24

  2. Pingback: Wifi amb targetes Broadcom sense Ndiswrapper! « Kernel Català

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: