Configurando redes wireless no Linux, parte 2

Configurando redes wireless no Linux, parte 2

Toda a configuração de rede que vimos na primeira parte do tutorial presume que a placa de rede tenha sido corretamente detectada pelo sistema, o que você pode confirmar usando o comando “cat /proc/net/wireless”. Se a placa não foi detectada, então o problema é mais embaixo, ou seja, não é com a configuração, mas sim com a falta do driver para ela.

Em muitos casos existem drivers disponíveis, mas eles não são instalados por padrão na distribuição escolhida por serem considerados “drivers restritos”, ou seja, drivers que não possuem o código fonte completamente aberto, ou que precisam de um firmware proprietário para funcionar.

Este é o caso por exemplo dos drivers madwifi, para placas com chipset Atheros (que utilizam um wrapper HAL proprietário) e dos drivers bcm4xx, para placas com chipset Broadcom, que precisam de um firmware proprietário, que faz parte do driver Windows. Em ambos os casos, os drivers podem ser distribuídos e usados sem limitações, mas o status “não livre” faz com que muitas distribuições optem por não incluí-los, deixando o trabalho a cargo do usuário. Nesses casos é preciso instalar o driver manualmente, baixando o código fonte e compilando os módulos necessários.

Existe também a possibilidade de configurar a placa usando o Ndiswrapper (como veremos a seguir), que permite utilizar o driver do Windows. A combinação das duas coisas faz com que o número de placas wireless que realmente não funcionam no Linux seja pequeno. Em alguns casos pode ser complicado, mas quase sempre existe uma forma de ativá-la.

A instalação de drivers a partir do código fonte é quase sempre bastante simples: consiste em descompactar o arquivo e rodar os comandos “./configure”, “make” e “make install”. O grande problema em fazer a instalação a partir do código fonte é que é necessário ter instalados os compiladores básicos e os headers do Kernel. A dificuldade reside justamente em instalar estes componentes para então poder fazer a instalação propriamente dita.

No caso do Debian Etch, Debian Sid ou do Ubuntu, use o comando “uname -a” para descobrir qual versão do Kernel está instalada, como em:

# uname -a

Linux m5 2.6.22-14-generic #1 SMP Sun Oct 14 23:05:12 GMT 2007 i686 GNU/Linux

Em seguida, instale a versão correspondente dos headers do Kernel, usando o apt-get, como em:

# apt-get install linux-headers-2.6.22-14

Você pode instalar os compiladores básicos através do pacote “build-essential”, também via apt-get:

# apt-get install build-essential

No caso do Ubuntu, você pode precisar criar manualmente o link “/usr/src/linux”, apontando para a pasta referente à versão instalada. Para isso, acesse a pasta “/usr/src” e rode o comando “sudo ln -sf linux-headers-2.6.*-* linux” (note que a pasta corresponde à versão do Kernel que está instalada na sua máquina), como em:

# sudo ln -sf linux-headers-2.6.22-14-generic linux

Antes de mais nada, você pode verificar o chipset utilizado na sua placa usando o comando “lspci” (em algumas distribuições ele está disponível apenas para o root). Os fabricantes muitas vezes utilizam chipsets diferentes em variações do mesmo modelo, por isso é sempre mais seguro se orientar pela saída do comando lspci do que pelo modelo da placa.

O lspci lista todos os periféricos plug-and-play instalados no micro. Entre eles, você verá uma linha sobre a placa wireless, como em:

08:04.0 Ethernet controller: Atheros Communications, Inc. AR5005G 802.11abg NIC (rev 01)

… que indica a presença de uma placa Atheros AR5005G, ou:

Network controller: Intel Corporation PRO/Wireless 2200BG Network Connection (rev 05)

… que indica que a placa é uma Intel IPW2200.

Vamos então a um resumo dos drivers Linux, que você pode usar como ponto de partida na hora de resolver problemas de detecção da placa wireless.

Placas com chipset Atheros

As placas com chipset Atheros são suportadas no Linux pelo driver madwifi, disponível no http://madwifi.org.

O driver permite inclusive o uso do Kismet e outros programas de diagnóstico e oferece uma boa estabilidade. O único problema é que ele inclui um componente proprietário (embora de livre distribuição), o que faz com que ele não seja incluído por padrão em algumas distribuições, embora isso venha lentamente mudando.

No Ubuntu por exemplo, o driver é incluído no pacote “linux-restricted-modules”, que inclui outros drivers em situação similar. Um wizard incluído no sistema detecta a presença da placa e se oferece para instalar o pacote automaticamente.

De qualquer forma, ainda existem muitos casos em que você precisará instalar o driver manualmente. Para isso, baixe o arquivo “madwifi-0.9.3.2.tar.gz” (ou a versão mais recente) no:
http://sourceforge.net/project/showfiles.php?group_id=82936

Para instalar, descompacte o arquivo, acesse a pasta que será criada e rode os comandos “make” e “make install” (esse último como root), como em:

# tar -zxvf madwifi-0.9.3.2.tar.gz
# cd madwifi-0.9.3.2/
# make
# make install

Se houver alguma versão antiga instalada, o instalador avisa que encontrou módulos de uma instalação anterior e pergunta o que fazer com eles. Responda “r” (remove) para que eles sejam substituídos pela nova versão.

Depois de reiniciar o micro, a placa deve ser ativada automaticamente. Caso não seja, carregue os módulos “ath_hal” e “ath_pci” e tente novamente:

# modprobe ath_hal
# modprobe ath_pci

A partir daí a placa pode ser configurada por vias normais. Ela é vista pelo sistema como “ath0“.

Placas com chipset Intel

As placas Intel, com chipset IPW2100 ou IPW2200, usadas nos notebooks Intel Centrino, possuem um driver nativo bastante estável, desenvolvido pela própria Intel. O driver já vem pré-instalado em praticamente todas as distribuições atuais, mas muitas não incluem o firmware, que é proprietário.

Para baixá-lo manualmente, acesse o http://ipw2200.sourceforge.net/firmware.php ou o http://ipw2100.sourceforge.net/firmware.php (de acordo com o chipset usado na placa) e baixe o arquivo compactado na seção “firmware”. Copie o arquivo para a pasta “/lib/firmware” e descompacte-o, como em:

# cp -a ipw2200-fw-2.4.tgz /lib/firmware/
# cd /lib/firmware/
# tar -zxvf ipw2200-fw-2.4.tgz

Uma pegadinha é que existem várias versões do firmware disponíveis no http://ipw2200.sourceforge.net/firmware.php, acompanhando as diferentes versões do driver. A versão 2.4 funciona em conjunto com o driver de versão 1.07 até 1.10, enquanto o firmware versão 3.0 funciona em conjunto com o driver versão 1.11 em diante. Ao instalar uma nova versão do driver, lembre-se também de checar e, se necessário, atualizar também o firmware. Você pode checar qual é a versão instalada usando o comando:

# modinfo ipw2200



(ou modinfo ipw2100)

Com os arquivos do firmware no local correto, o driver passa a funcionar corretamente. Você pode verificar as mensagens de inicialização usando o comando “dmesg | grep ipw“, como em:

# dmesg | grep ipw

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8
ipw2200: Copyright(c) 2003-2005 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection

Se, por outro lado, o comando exibir algo como:

ipw2200: Intel(R) PRO/Wireless 2200/2915 Network Driver, 1.0.8
ipw2200: Copyright(c) 2003-2005 Intel Corporation
ipw2200: Detected Intel PRO/Wireless 2200BG Network Connection
ipw2200: Unable to load ucode: -62
ipw2200: Unable to load firmware: -62
ipw2200: failed to register network device

… rode os comandos abaixo para recarregar o driver:

# echo 100 > /sys/class/firmware/timeout
# modprobe -r ipw2200
# modprobe ipw2200

A partir daí a placa passará a funcionar normalmente. Você pode incluir os comandos no final do arquivo “/etc/rc.local” (se você usa uma distribuição derivada do Debian) ou “/etc/rc.d/rc.local” (se você usa o Fedora ou outra distribuição derivada do Red Hat), para que eles sejam executados automaticamente durante o boot.

O primeiro comando aumenta o tempo de espera do Kernel na hora de carregar o firmware. O default são 10 milisegundos, o que não é suficiente em algumas versões do driver. Aumentando o tempo de espera, o driver passa a carregar corretamente.

As placas Intel baseadas no chipset IPW3945 possuem um novo driver, completamente open-source, o que elimina os problemas relacionados à falta do firmware. Por ser um driver novo, ele é encontrado apenas nas versões recentes das distribuições. Caso precise instalá-lo manualmente em uma distribuição antiga, pode baixar os arquivos no: http://intellinuxwireless.org/?p=iwlwifi.

Placas com chipset Broadcom

As placas com chipset Broadcom possuem um driver nativo, o módulo bcm43xx, que vem incluído nas versões recentes do Kernel. Ele ainda está em desenvolvimento, por isso ainda existem arestas a aparar, o que faz com que muitos prefiram configurar as placas Broadcom utilizando o Ndiswrapper (como veremos a seguir).

A versão incluída no Kernel 2.6.18, por exemplo, já funciona corretamente, incluindo o suporte a WPA, mas o driver faz com que o transmissor opere com uma potência muito abaixo da normal, fazendo com que a rede só funcione estavelmente a distâncias curtas, de 10 a 15 metros.

Outro problema é que o módulo precisa que o firmware da placa seja carregado manualmente. O firmware é um componente do driver para Windows, de forma que você vai precisar copiá-lo a partir dos CDs com os drivers da placa, ou baixar o driver a partir da página do fabricante, da mesma forma que ao usar o Ndiswrapper.

O próximo passo é instalar o programa “fwcutter“, que usamos para extrair os arquivos do firmware. No Debian, Ubuntu e derivados, ele está disponível via apt-get, basta instalar o pacote “bcm43xx-fwcutter“. Em distribuições onde ele não esteja disponível através do gerenciador de pacotes, você pode baixar o pacote com o código fonte no: 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”.

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

# modprobe -r bcm43xx
# modprobe bcm43xx

Outras placas

Placas antigas, baseadas nos chipsets ACX100 e ACX110 podem ser ativadas usando o driver disponível no http://rhlx01.fht-esslingen.de/~andi/acx100/.

Para instalar, você deve usar o procedimento padrão para arquivos .tar.gz com código fonte, ou seja, baixar o arquivo, descompactá-lo e executar (dentro da pasta criada) os comandos “make” e “make install”, este último como root.

Este é um dos drivers que precisam do firmware da placa para funcionar. Depois de instalar o driver propriamente dito, execute o arquivo “scripts/fetch_firmware”(ainda dentro da pasta onde o arquivo foi descompactado) e use a opção “C” da interface para baixar os firmwares para os dois chipsets de uma vez.

Ele baixa os arquivos necessários e os salva na pasta “firmware/” (dentro do diretório onde o comando é executado). Para instalar, acesse a pasta e copie todo o conteúdo do diretório para a pasta “/usr/share/acx/”(crie a pasta manualmente, caso necessário). A partir daí, a placa passa a ser detectada durante o boot.

Para as placas ADMteck com chipset ADM8122, use o driver disponível no: http://aluminum.sourmilk.net/adm8211/.

Existe também um driver nativo para as placas baseadas no chipset Realtek rtl8180 e rtl8185 que pode ser baixado no: http://rtl8180-sa2400.sourceforge.net/. Ele também é open-source e incluído por padrão nas distribuições atuais. Estas placas podem ser ativadas também usando o Ndiswrapper.

Mais dicas

Em muitos notebooks da Acer existem problemas diversos de compatibilidade com o Linux introduzidos por bugs no BIOS utilizado. Se você encontrar problemas estranhos, como o notebook travando esporadicamente durante o boot, ou a placa wireless e a placa de som sendo reconhecidas às vezes sim e às vezes não, experimente usar este conjunto de opções de boot:

irqpoll noapic pci=biosirq

Ao dar boot através do CD ou DVD, procure pela opção para inserir opções para o Kernel na tela de boot. Em muitas distribuições você só precisa digitar as opções diretamente, mas em outras você precisa pressionar uma tecla de atalho, como no caso do Ubuntu, onde você precisa pressionar a tecla F6. Adicione as opções no final da linha, sem alterar as demais opções:

index_html_2f5aa5c7

Fazendo isso, as opções continuarão sendo usadas após a instalação do sistema. Você pode também adicionar as opções com o sistema já instalado editando como root o arquivo “/boot/grub/menu.lst”, que contém as opções relacionadas ao gerenciador de boot. Nesse caso, adicione os parâmetros no final da linha com as opções relacionadas ao Kernel (reinicie para que entrem em vigor), como em:

kernel /boot/vmlinuz-2.6.20-15-generic ro irqpool noapic pci=biosirq

Outro problema relacionado aos notebooks Acer é a ativação do transmissor da placa wireless. Ele é ativado através do botão na parte frontal, que funciona via software. Mesmo no Windows você precisa manter o “Launch Manager” ativo para que o botão funcione.

index_html_m47f644d
O famigerado botão controlado via software dos notebooks da Acer

No Linux você resolve o problema usando os dois comandos abaixo. Note que o módulo “acer_acpi” só está disponível nas distribuições recentes, com o Kernel 2.6.17 em diante.

# modprobe acer_acpi
# echo “enabled : 1” > /proc/acpi/acer/wireless

Em outros modelos, a ativação é feita usando o comando “acerhk“, que deve ser executado como root:

# acerhk

Os comandos para ativar o transmissor devem ser executados depois de carregar os módulos que ativam a placa de rede, mas antes de tentar ativar a conexão com o ponto de acesso, já que ela só pode ser feita depois que o transmissor já está ativo.

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X