domingo, 28 de outubro de 2007

Fazendo placas Broadcom funcionarem no Linux

Depois de muito tempo quebrando a cabeca e procurando em milhares de foruns diferentes
finalmente eu consegui fazer o wireless do notebook "Acer Aspire 3000" funcionar 100%.

O problema das placas Broadcom no linux, é que o modulo que vem no kernel (o bcm43xx)
é falho; não funciona com todas as placas Broadcom (e, pelo que vi na googlando por
ai, quando funciona, funciona mais ou menos...)

A solucão: o Ndiswrapper, um modulo para suporte a placas 802.11.

Seguindo os passos a seguir, provavelmente tudo vai funcionar (provavelmente):


(Distribuicão utilizada: Fedora 7)

- Primeiro, instale o ndiswrapper (tanto faz por yum, apt-get, merge, source-code...);
- Baixe o driver da placa wireless para windows -- o ndiswrapper encapsula o driver e faz
ele funcionar no linux;
- Retire os modulos da memoria:

modprobe -r bcm43xx
modprobe -r bcm43xx-mac80211
modprobe -r ssb

Esses são os modulos que o kernel utiliza nativamente para as placas;

- Coloque esses modulos no blacklist do modprobe, para que eles não sejam carregados
nunca sejam carregados

vim /etc/modprobe.d/blacklist

#modulos wireless
blacklist bcm43xx
blacklist bcm43xx-mac80211
blacklist ssb

- utilize o ndiswrapper para encapsular o driver:
como root:
ndiswrapper -i 'arquivoinfdodriver.inf'

- verifique se o driver está ok:
ndiswrapper -l
(Ex:
bcmwl5 : driver installed
device (14E4:4318) present (alternate driver: ssb) )

- reinicie o computador para que tudo esteja ok.

--
- carregue o modulo ndiswrapper

modprobe ndiswrapper

- coloque um alias para a placa no modprobe.conf:

alias wlan0 ndiswrapper

- crie o arquivo /etc/sysconfig/networking/devices/ifcfg-wlan0 com o conteudo:

TYPE=Wireless
DEVICE=wlan0
HWADDR=(endereco da placa)
BOOTPROTO=dhcp
ONBOOT=yes
NETMASK=
DHCP_HOSTNAME=
IPADDR=
DOMAIN=
USERCTL=no
IPV6INIT=no
PEERDNS=yes
ESSID=
CHANNEL=1
MODE=Master
RATE=Auto

- finalmente, suba a placa:

ifup wlan0


E tudo deverá está ok!

Nenhum comentário: