Instalando Drivers WiFi no Linux ou BSD

Método com ndis utiliza os drivers nativos de qualquer versão do Windows para rodar as placas Wifi no Linux e/ou no BSD!


| Se você apoia nosso site, desative o AdBlock quando visitá-lo, inclusive em Mobile!
Os anúncios são poucos e não invasivos. Se quiser contribuir com nosso trabalho, clique em qualquer banner de sua preferência, exceto dos Parceiros. 
Mais detalhes clicando aqui.


1. Introdução

Instalar drivers Wifi no Linux ou no BSD nem sempre é uma tarefa simples.
Fóruns afora remontam o sofrimento de muitos usuários para com módulos de suas placas Wifi desconhecidos ou problemáticos. E hoje trago uma maneira interessante de instalar drivers de placas Wifi, até então nativas do Windows, diretamente em seu sistema Linux ou BSD.

O Ndis (BSD) ou Ndiswrapper (Linux) é um programa que faz a leitura dos arquivos .inf e do .sys dos drivers de placas Wifi originalmente desenvolvidos para Windows e, a partir daí, compila e gera um módulo em formato .ko que o kernel BSD ou kernel Linux reconheçam, permitindo que placas originalmente não suportadas funcionem como se fossem nativas.

Em alguns casos pegar a versão do driver para Windows XP bastará; em outros é preciso usar alguma versão específica. A lista dos drivers de placas oficialmente suportadas pelo ndis se encontra neste site.

2. Como o ndis faz esse milagre?

Os drivers de hardware para Windows são arquivos binários com algumas instruções em arquivos paralelos, que servem entre intérpretes entre a placa e o sistema operacional, contendo 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 coincidentemente um padrão dos sistemas NT.

O programa pega os arquivos .inf e .sys originais do driver para Windows e recompila boa parte deles para algo que os sistemas baseados em UNIX entendam. O resultado é o driver em formato .sys/.inf entrando de um lado e o driver em formato .ko saindo do outro, algo que o kernel BSD/Linux consegue compreender e executar.

O Ndis não funciona com todas as placas e, em outras, alguns recursos como suporte a WPA não funcionam adequadamente, mas na maior parte dos casos ele faz um bom trabalho.

3. Instalação: Linux

Pra facilitar pra galera que prefere uma interface de usuário, o comando que instala o ndis com interface GTK é:

Debian, Ubuntu e derivados:

$ sudo apt install ndisgtk

Fedora, CentOS e RedHat:

$ sudo dnf install ndisgtk

OpenSUSE:

$ sudo zypper install ndisgtk

De maneira intuitiva o programa permite adicionar e converter os drivers em formato .inf e .sys do Windows para Linux de forma simples.

Já pra galera das demais distros, caso não exista em seu repositório, o ndiswrapper pode ser compilado da source do site oficial neste link.

Quem quiser o programa com interface em linha de comandos, troque o “ndisgtk” dos comandos acima por “ndiswrapper”.

3.1 Configuração por Terminal

A parte a seguir são as instruções de uso para quem optar pela versão do terminal.

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 assim como ocorre no BSD. Em geral os drivers para Windows XP são os que funcionam melhor, seguidos pelos drivers para Windows 2000 e por fim do Windows 7. 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

Para carregar o arquivo do driver rode o comando “ndiswrapper -i”, seguido do caminho completo para o arquivo, por exemplo:

# 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

$ sudo modprobe ndiswrapper

Se tudo estiver ok, o led da placa irá acender, indicando que ela está ativa.
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 do kernel.
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 do sistema.

4. Instalação: BSD

Já no sistema FreeBSD, o Ndis está disponivel nativamente no sistema podendo ser invocado pelo comando:

% ndis

Por ser uma implementação originalmente do BSD, o ndis nesse sistema funciona de forma mais simples que no Linux em sua versão terminal:

Uma vez que você executa o comando e inicia o ndis, você verá uma pequena tela que lembra uma interface gráfica de usuário diretamente no terminal.

Algumas opções surgirão para você:

  • Digitando 1, voce verá a documentação.
  • Digitando 2, você será convidado a instalar o driver propriamente dito.
  • A opção 3 e 4 são irrelevantes no momento.

Logo que você escolher a opção 2, você insere o caminho completo do arquivo .inf.
Ao teclar Enter, é a vez do caminho do arquivo .sys e por fim os arquivos adicionais do módulo. O kernel BSD compilará o módulo novo e este será adicionado ao sistema. De maneira simples e direta, é apenas isso.

No caso, a implementação do ndis do BSD funciona de forma semelhante ao ndiswrapper do linux, convertendo o arquivo .sys e o .inf do Windows e criando um módulo kernel .ko compativel baseado nele.

5. Links úteis

Site do projeto NdisWrapper para Linux.

Site da documentação do Ndis para BSD.

#UrbanCompassPony

Fontes:
Tutorial adaptado de Dicas-L
Cunho próprio por experimentação e constatação.

Deixe um comentário