Ativando placas wireless com o Ndiswrapper
Colaboração: Carlos E. Morimoto
Data de Publicação: 24 de Junho de 2005
O Ndiswrapper é uma espécie de Wine para drivers de placas
de rede wireless. Ele funciona como uma camada de abstração
entre driver e o sistema operacional, permitindo que placas
originalmente não suportadas no Linux funcionem usando os
drivers do Windows.
Em alguns casos o próprio driver para Windows XP que
acompanha a placa funcionará, em outros é preciso usar
alguma versão específica do driver. Você pode encontrar
várias dicas sobre placas testadas por outros usuários do
Ndiswrapper no:
http://ndiswrapper.sourceforge.net/wiki/index.php/List
Os drivers para Windows são arquivos executáveis,
que servem entre intérpretes entre a placa e o sistema
operacional. Eles contém o firmware da placa e outras
funções necessárias para fazê-la funcionar. Cada placa
é diferente, por isso os drivers de uma não funcionam
na outra mas, todos os drivers conversam com o sistema
operacional usando uma linguagem específica de comandos. Ou
seja, do ponto de vista do sistema operacional todos os
drivers são parecidos.
O Ndiswrapper consegue executar o driver e "conversar" com
ele usando esta linguagem. Ele trabalha como um intérprete,
convertendo os comandos enviados pelo Kernel do Linux em
comandos que o driver entende e vice-versa. O Kernel acha
que está conversando com uma placa suportada, o driver
acha que está rodando dentro de um sistema Windows e a
placa finalmente funciona, mesmo que o fabricante não
tenha se dignado a escrever um driver nativo.
O Ndiswrapper não funciona com todas as placas e em outras
alguns recursos como o WPA não funcionam, mas na maior
parte dos casos ele faz um bom trabalho.
A página do projeto é a:
http://ndiswrapper.sourceforge.net
Muitas distribuições já trazem o Ndiswrapper instalado por
padrão, como o Kurumin e o Mandrake 10 em diante. Nestes
casos você pode pular este tópico sobre a instalação
e ir direto para a configuração. Procure pelo pacote
"ndiswrapper" no gerenciador de pacotes.
Instalando
Na página você encontrará apenas um pacote com o código
fonte. Como o Ndiswrapper precisa de um módulo instalado
no Kernel, seria complicado para os desenvolvedores manter
versões para muitos distribuições diferentes. Assim como
no caso dos softmodems, para compilar o pacote você
precisa ter instalados os pacotes kernel-headers e/ou
kernel-source e os compiladores. A versão mais recente
pode ser baixada no:
http://sourceforge.net/projects/ndiswrapper/
Descompacte o arquivo e acesse a pasta que será
criada. Para compilar e instalar, basta rodar o comando:
# make install
(como root)
O Ndiswrapper é composto de basicamente dois
componentes. Um módulo, o ndiswrapper.ko (ou ndiswrapper.o
se você estiver usando uma distribuição com o Kernel
2.4), que vai na pasta "/lib/modules/2.x.x/misc/" e um
executável, também chamado "ndiswrapper", que é usado
para configurar o driver, apontar a localização do driver
Windows que será usado, etc.
Se por acaso você estiver usando uma distribuição que já
vem com o Ndiswrapper instalado, você deve primeiro remover
o pacote antes de instalar uma versão mais atual. Caso
a localização do módulo ou do executável no pacote da
distribuição seja diferente, pode acontecer de continuar
sendo usado o driver antigo, mesmo depois que o novo
for instalado.
Configurando
Depois de instalar o Ndiswrapper, o próximo passo é rodar
o comando "depmod -a" (como root) para que a lista de
módulos do Kernel seja atualizada e o novo módulo seja
realmente instalado. Isto deve ser feito automaticamente
pelo script de instalação, é apenas uma precaução.
Antes de ativar o Ndiswrapper você deve apontar a
localização do arquivo .inf dentro da pasta com os drivers
para Windows para a sua placa. Em geral os drivers para
Windows XP são os que funcionam melhor, seguidos pelos
drivers para Windows 2000. Você pode usar os próprios
drivers incluídos no CD de instalação da placa. Se eles
não funcionarem, experimente baixar o driver mais atual
no site do fabricante, ou pesquisar uma versão de driver
testada no ndiswapper no:
http://ndiswrapper.sourceforge.net/wiki/index.php/List
Para carregar o arquivo do driver rode o comando
"ndiswrapper -i", seguido do caminho completo para o
arquivo, como em:
# ndiswrapper -i /mnt/hda6/Driver/WinXP/GPLUS.inf
Rode agora o comando "ndiswrapper -l" para verificar se o driver foi mesmo ativado. Você verá uma lista como:
Installed ndis drivers:
gplus driver present, hardware present
Com o driver carregado, você já pode carregar o módulo
com um:
# modprobe ndiswrapper
Se tudo estiver ok, o led da placa irá acender, indicando
que ela está ativa. Agora falta apenas configurar os
parâmetros da rede Wireless que veremos adiante.
Se a placa não for ativada, você ainda pode tentar uma
versão diferente do driver. Neste você precisa primeiro
descarregar o primeiro driver. Rode o ndiswrapper -l para
ver o nome do driver e em seguida descarregue-o com o
comando "ndiswrapper -e".
No meu caso por exemplo o driver se chama "gplus" então
o comando fica:
# ndiswrapper -e gplus
Para que a configuração seja salva e o Ndiswrapper seja
carregado durante o boot, você deve rodar o comando:
# ndiswrapper -m
E em seguida adicionar a linha "ndiswrapper" no final do
arquivo "/etc/modules", para que o módulo seja carregado
no boot.
Gostou da dica? Veja a agenda de cursos presenciais com Carlos E. Morimoto em Porto Alegre e São Paulo
- Curso: Redes e Servidores Linux (com Carlos E. Morimoto)
Em Porto Alegre, início dia 04/07
- Curso: Programando em Shell Script (com Júlio Cezar Neves)
Em Porto Alegre, início dia 11/07