Ativando placas wireless com chip Broadcom no Linux

Ativando placas wireless com chip Broadcom no Linux
Hoje em dia, um número surpreendentemente grande de notebooks estão vindo equipados com placas wireless com chipset Broadcom. Praticamente todos os notebooks com chipset Intel, que não são Centrino (os Centrinos usam placas ipw2200), usam uma destas placas.
Em caso de dúvidas sobre a placa instalada no seu note, rode o comando “lspci“. Procure por uma linhas similar a:

0000:06:05.0 Network controller: Broadcom Corporation BCM4318 [AirForce One 54g] 802.11g Wireless LAN Controller (rev 02)

ou:

0000:08:00.0 Network controller: Broadcom Corporation Dell Wireless 1390 WLAN Mini-PCI Card (rev 01)

Existem duas opções para a configuração destas placas no Linux. A primeira é usar o módulo “bcm43xx“, que é o driver open-source, desenvolvido via engenharia reversa. Ele pode ser encontrado nas distribuições com Kernel 2.6.17 em diante, e também no Ubuntu 6.6, que apesar de usar um Kernel um pouco mais antigo, vem com o patch instalado.

O problema é que este driver ainda está bem incompleto, e por isso não suporta WPA e outros recursos, além de precisar que o firmware da placa (um componente do driver Windows) seja instalado manualmente. Veja mais detalhes sobre como configurar o driver bcm43xx mais adiante.

A segunda opção é usar o Ndiswrapper, para carregar o driver Windows. Até o momento ele é a melhor opção, pois permite utilizar todos os recursos da placa.

No caso do Ubuntu, é necessário abrir o arquivo “/etc/modprobe.d/blacklist” e adicionar a linha “blacklist bcm43xx” no final, para que o driver bcm43xx deixe de ser usado, dando espaço para o Ndiswrapper.

Configurar o Ndiswrapper no Kurumin é bastante simples, pois você pode utilizar o script “ndiswrapper-kurumin“, disponível através do “Conectar na Internet ou configurar a rede > Wireless > Ndiswrapper”:

index_html_19f45440

Para usar o Ndiswrapper, você precisa ter em mãos os drivers para Windows XP da placa, que pode ser obtido nos CDs de instalação, ou no site do fabricante.

Em muitos casos, o driver vem na forma de um arquivo .exe, empacotado para ser executando no Windows, como em “sp32158.exe“.

Para poder usá-los no Linux, precisaremos primeiro descompactar o arquivo usando o comando “cabextract“, como em:

$ cabextract sp32158.exe

Se o comando não estiver disponível, instale-o usando o apt-get, urpmi ou yum (no Fedora) e tente novamente.

Quando o script pedir o arquivo .inf do driver, indique o arquivo “bcmwl5.inf“, dentro da pasta onde ele foi descompactado:

index_html_592e920f

Mais adiante o script pergunta sobre o sistema de encriptação usado na rede. Veja que está disponível a opção de conectar a uma rede com encriptação WPA:

index_html_m552e9156

Depois de fornecer a configuração da rede, você tem a opção de salvar a configuração, para que ela seja restabelecida automaticamente durante o boot.

O maior problema em utilizar o ndiswrapper é que o driver trava caso a placa wireless seja colocada em modo de economia de energia, o que acontece automaticamente depois de algum tempo de inatividade. Quando isso acontece, o driver fica travado e a placa não transmite mais dados até que você reinicie o micro. Não adianta nem tentar desativar e reativar o ndiswrapper.

Apesar disso, existe uma solução muito simples para o problema: basta impedir que a placa entre em modo de economia de energia, mantendo a conexão sempre ativa. A forma mais simples de fazer isso é usar o comando “ping” para enviar pacotes para um endereço qualquer a cada 15 segundos. Abra um terminal e rode o comando:

$ ping -i 15 google.com (o google.com pode ser substituído por outro endereço qualquer)

Para que ele seja executado automaticamente durante o boot, resolvendo o problema definitivamente, use os dois comandos abaixo, que criam um script dentro da pasta /etc/rc5.d:

# echo ‘ping -i 15 google.com &’ > /etc/rc5.d/S99ping
# chmod +x /etc/rc5.d/S99ping

Mantendo o ping ativo, a conexão se torna bastante estável, mesmo ao conectar em redes com encriptação WPA. Você pode deixar o note ligado durante vários dias, mesmo sem usar a rede e a conexão se mantém aberta, pronta para usar.

O único inconveniente é que manter a placa ativa o tempo todo causa um pequeno aumento no consumo, reduzindo a autonomia das baterias em cerca de 10 minutos.

No Ubuntu, a melhor opção de interface gráfica de configuração é o “ndisgtk“, que você pode instalar via apt-get:

$ sudo apt-get install ndisgtk

Depois de instalado, será incluído o ícone “Windows Wireless Drivers” no menu “Sistema > Administração”. Ele é bem simples de usar: clique no “install new driver“, indique o driver Windows que será carregado. Clicando no “Configure Network” você abre o network-admin, onde pode configurar os parâmetros da rede:

index_html_75b131a

A maior dificuldade é que no Ubuntu não está disponível nenhum script para conectar a uma rede WPA, de forma que você precisa instalar o wpa_supplicant e fazer a configuração manualmente, como explico aqui: https://www.hardware.com.br/guias/11/index4.php

Como disse, existe também a opção de usar o módulo “bcm43xx“, que é o driver nativo, ao invés do Ndiswrapper. O procedimento de configuração ainda é bastante manual, se você é iniciante, ou não quer ter muito trabalho, recomendo que continue com o Ndiswrapper.

Para funcionar, ele precisa do firmware da placa, um componente do driver do Windows, de forma que você vai precisar copiá-lo dos CDs de instalação, ou baixar, da mesma forma que ao usar o Ndiswrapper.

O próximo passo é instalar o programa “fwcutter“, que usamos para extrair os arquivos do firmware. Ele está disponível aqui: http://bcm43xx.berlios.de/. Para instalá-lo, descompacte o arquivo e execute os comandos “make” e “make install”, como root. Você precisa ter instalado o pacote “build-essential“, que contém os compiladores necessários.

Com tudo em ordem, acesse a pasta onde foi extraído o driver Windows e execute o comando “bcm43xx-fwcutter”, indicando o arquivo “.sys”, dentro da pasta do driver, como em:

$ bcm43xx-fwcutter bcmwl5.sys

Isto vai gerar um conjunto de arquivos “.fw”. Para concluir a instalação, copie os arquivos para dentro da pasta “/lib/firmware/$versao_do_kernel“, no caso do Ubuntu (como em “cp *.fw /lib/firmware/2.6.15-23-386/”), ou simplesmente “/lib/firmware” no caso do Kurumin.

Concluindo, recarregue o módulo, usando os comandos abaixo, ou reinicie o micro:

# modprobe -r bcm43xx
# modprobe bcm43xx

Verifique se o transmissor da placa wireless está ativado e boa navegação :).

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X