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 0×14e4 (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 ![]()
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 ![]()
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=0×401 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.

March 11th, 2008 at 5:54 am
[...] indicaba en anterior post; estuve instalando el kernel 2.6.24.2 en mi actual equipo (con Debian Lenny); el kernel como [...]
April 18th, 2008 at 8:11 pm
[...] Blog 1 [...]
September 3rd, 2008 at 1:35 am
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.
October 2nd, 2008 at 9:28 am
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?