bcm43xx y GNU/Linux

Al fin despues de tanta espera logro tener casi el 100% del fucnionamiento de este dispositivo sobre GNU/Linux.

Este driver fue hecho en base a ingenieria inversa, por lo que su desarrollo ha sido lento y se tienen pocas de las funcionalidades comparando al driver con el provisto por el fabricante
Por otro lado este es un dispositivo comun en muchas laptops y dispositivos wireless

Aca la  lista de los dispositivos que usan este Chiptset

con laptops de arquitectura i386 se pueden usar ndiswrapper para hacer funcionar el dispositivo, en mi caso con arquitectura PPC esto no es posible.

Anteriomente existia un parche

Segun la pagina del proyecto este parche seria incluido en el kernel 2.6.17.X
Mi experiencia con el parche y un kernel 2.6.12.X y un 2.6.16.X fue muy mala, ya que la maquina se colgaba cada instante. El dispositivo tambien presentaba errores constantes de Duplicidad y perdida de paquetes, por lo que hacia imposible su uso para un dia de trabajo normal.

Actualmente ya esta disponible la version 2.6.17.1 del Kernel Linux, ahora me di a la tarea de descargarla y compilarla para comprobar si el funcionamiento del dispositivo wireless era mejor que con el parche.
Resultado: Estoy totalmente sorprendido por la mejora del driver, ya que estoy en mi oficina conectado, usando WEP, DHCP y aunque aun tengo un par de errores de duplicidad de paquetes no es tan malo y puedo trabajar comodamente,algo importante es que no tengo los constantes cuelges que sufria con el parche.

Entrando en la parte importante, la configuracion del driver :
Asumo que se esta usando un PPC, aunque el modulo tendria que funcionar perfectamente en una maquina con i386

Primero:
Descargar kernel 2.6.17.1

Luego configuramos a nuestro gusto y con la parte de Devices Drivers -> Network -> Wireless
La configuracion del kernel es esta
CONFIG_BCM43XX=m
CONFIG_BCM43XX_DEBUG=y
CONFIG_BCM43XX_DMA=y
CONFIG_BCM43XX_PIO=y
CONFIG_BCM43XX_DMA_AND_PIO_MODE=y
# CONFIG_BCM43XX_DMA_MODE is not set
# CONFIG_BCM43XX_PIO_MODE is not set
CONFIG_NET_WIRELESS=y

con esto podremos ya ver en el dmesg algo asi:
[ 5020.223276] bcm43xx: Controller restarted

luego revisar los modulos:
rmayorga@foostation:~$ sudo lsmod
Module Size Used by
ieee80211_crypt_wep 5184 1
binfmt_misc 10888 1
ext2 50852 1
bcm43xx 118188 0
ieee80211softmac 26240 1 bcm43xx
ieee80211 31720 2 bcm43xx,ieee80211softmac
ieee80211_crypt 5856 2 ieee80211_crypt_wep,ieee80211
unix 25748 484

En efecto tenemos nuestro modulo cargado para el bcm43xx

es necesario tener el paquete para configurar mi tarjeta asi que sino tenemos wireless-tools lo instalamos:
sudo apt-get install wireless-tools

Luego de esto podemos verificar si tenemos nuestra tarjeta activa
rmayorga@foostation:~$ sudo iwconfig

con esto tendriamos que ver nuestra interfaz de red ya activa.
ahora solo queda un par de tips con comandos del wireless tools:

Si queremos visualizar las redes dispobibles usamos:
rmayorga@foostation:~$ sudo iwlist eth2 scan
con esto veremos la lista de las redes y las caracteristicas como Rate, Canales, AP, si usa Llave y que modalidad de sguridad se usa, tambien se puede ver la intesidad de la senal

mas info en el manual de iwconfig(man iwconfig)

Para el WEP:
sudo iwconfig eth2 key XX-XX-XX-XX-XX-XX
Con esto tenemos que escribir la llave en Hexadecimal
podemos espicificar la llave en ASCII con el paremtro s:
algo como iwconfig eth2 key s:foowebkeyonascii
Esto en mi caso no funciono, primeramente por que la llave que usamos tiene simbolos como “&”, por lo que el bash lo tomaba como un comando al background y no como parte de la clave.
Por esto estuve usando un convertidor de ASCII a Hex y escribi mi llave con Hex.

Pues eso es todo y listo, tenemos nuestra tarjeta funcionando mas o menos bien
veremos que pasa en las proximas versiones del kernel si el driver mejora.

Cualquier comentario es bievenido

Trackback

only 1 comment untill now

  1. nicolás @ 2010-01-16 22:47

    hola, queria pedirte si no es mucha molestia si podes explicar bien detallando los pasos para la instalacion de ndiswrapper para ppc. tengo un powerbook g4 y tengo instalado slackintosh. mi placa es una bcm4306
    gracias!

Add your comment now