quinta-feira, 10 de fevereiro de 2011

Drivers Wireless nos notebooks Vostro da Dell

Boa tarde pessoal! Essa semana passei um arroxo com meu notebook pois não estou mais utilizando o Ubuntu como distribuição linux. Eu estou agora usando o Linux Mint Debian Edition e em vista disso, muito da facilidade de instalação de diversas coisas que eu tinha no Ubuntu se foi. Na verdade, eu não acho ruim. Pelo contrário, acho muito melhor porque volto a ter um contato com o sistema, que nem eu fazia na época que comecei a usar o Slackware. Muito do que sei sobre o kernel e as ferramentas eu aprendi nessa época que usei o Slackware.

Bom, e qual o motivo deste post? Como eu disse, o LMDE não é como um Ubuntu (leia mais sobre o Linux Mint), então algumas coisas precisam ser feitas na mão pra funcionar, e uma delas foi a instalação da placa wireless do meu notebook. Não é difícil, só um pouco traiçoeiro. Então vamos lá...



Quando eu instalei o Linux Mint Debian Edition no meu notebook, ele reconheceu todos os dispositivos, com exceção da placa de rede sem fio. Eu pensei se valeria a pena usar ndiswrapper como driver e no final das contas, preferi outra solução: o driver nativo para linux.

Antes de mais nada, você precisará verificar se sua placa é realmente uma Broadcom. Para isso, você deve usar o seguinte comando em uma janela de terminal:

$ lspci -n | grep 14e4

As placas que são suportadas por esta solução são:

PCI: 14E4:4311 Broadcom Corporation BCM4311 802.11b/g WLAN
PCI: 14E4:4312 Broadcom Corporation BCM4312 802.11a/b/g
PCI: 14E4:4313 Broadcom Corporation BCM4311 802.11a
PCI: 14E4:4315 Broadcom Corporation BCM4312 802.11b/g LP-PHY
PCI: 14E4:4328 Broadcom Corporation BCM4321 802.11a/b/g/n
PCI: 14E4:4329 Broadcom Corporation BCM4321 802.11b/g/n
PCI: 14E4:432A Broadcom Corporation BCM4321
PCI: 14E4:432B Broadcom Corporation BCM4322 802.11a/b/g/n Wireless LAN Controller
PCI: 14E4:432C Broadcom Corporation BCM4322 802.11b/g/n
PCI: 14E4:432D Broadcom Corporation BCM4322 802.11a/b/g/n
PCI: 14E4:4353 Broadcom Corporation BCM43224 802.11a/b/g/n
PCI: 14E4:4357 Broadcom Corporation BCM43225 802.11b/g/n
PCI: 14E4:4727 Broadcom Corporation BCM4313 802.11b/g LP-PHY

Estando sua placa entre as listadas, você pode continuar para o próximo passo.

Download, Compilação e Instalação do módulo

Primeiramente, você deve verificar se o repositório Non-free está habilitado.

Vá em Menu \ Administração \ Fontes de Aplicativos

Selecione a aba aplicativos de terceiros

Verifique se há uma opção com a seguinte descrição: "Aplicativos compatíveis com a DFSG mas com dependências não-livres"

Se a opção não estiver presente, use os seguintes comandos para adicionar o repositório:

$ sudo echo "deb http://ftp.us.debian.org/debian squeeze main contrib non-free #Debian Squeeze (testing)" >> /etc/apt/sources.list
$ sudo apt-get update

Instale pacotes module-assistant e wireless-tools com o seguinte comando:

$ sudo apt-get install module-assistant wireless-tools

Vamos construir e instalar os módulos da broadcom para nosso sistema, com o module-assistant:

$ sudo m-a a-i broadcom-sta

A opção a-i indica auto-instalação, ou seja, ele vai fazer automaticamente todo o trabalho de baixar o código-fonte do driver, compilar o mesmo para o kernel atual e por último instalar no seu devido lugar.

Em seguida, iremos adicionar o módulo brcm80211 na blacklist do arquivo de configuração /etc/modprobe.d/broadcom-sta-common.conf para evitar conflitos de driver nas placas BCM4313, BCM43224 and BCM43225, que são utilizadas nos notebooks Vostro:

$ sudo echo blacklist brcm80211 >> /etc/modprobe.d/broadcom-sta-common.conf

Agora, recrie o initramfs para excluir o driver que acabamos de adicionar na blacklist:

$ sudo update-initramfs -u -k $(uname -r)

Dê unload em todos os módulos que possam entrar em conflito com o nosso módulo recém criado:

$ sudo modprobe -r b44 b43 b43legacy ssb brcm80211

Carregue o módulo recém criado:

$ sudo modprobe wl

Pronto, agora sua placa de rede sem fio já deve estar aparecendo no NetworkManager. Por via das dúvidas, você pode conferir a presença da placa adicional com o seguinte comando:

$ sudo iwconfig

Caso o driver tenha carregado corretamente, deverão aparecer informações relativas à sua placa de rede sem fio.

Problemas Conhecidos

As vezes, a interface pode sumir da lista de interfaces. Isso ocorre porque o gerenciamento de energia do sistema pode estar botando a placa em modo de economia de energia. Para desabilitar o modo, você pode usar o seguinte comando:

$ sudo iwconfig eth1 power off

Onde eth1 é o alias para a sua placa de rede sem fio.

As vezes pode acontecer se você carregar o módulo wl e nada acontecer. Neste caso, está havendo conflito entre diferentes módulos que querem usar o mesmo dispositivo. Primeiramente, vamos chegar se os módulos conflitantes estão carregados:

lsmod | grep "b43\|ssb\|wl"

Se algum desses três está carregado, os remova com os comandos:

sudo rmmod b4
sudo rmmod ssb
sudo rmmod wl

Em seguida, faça backup do initramfs atual e gere um novo initramfs:

sudo cp /boot/initrd.img-$(uname -r) /boot/initram.backup
sudo update-initramfs -u

Reinicie o sistema.

Outro problema comum que também ocorre é o módulo não carregar durante o boot (aconteceu comigo). Para isso, execute o seguinte comando:

sudo echo wl >> /etc/modules

Se com esse comando o módulo wl não foi carregado, execute as seguintes linhas:

sudo touch /etc/modprobe.d/00local
sudo echo "install wl /bin/true" >> /etc/modprobe.d/00local

Agora, o driver deverá carregar durante o processo de boot.

Acho que é isso. Espero ter ajudado com este post. Vejo que muitas pessoas hoje estão comprando notebooks Dell Vostro e ocasionalmente alguém pode estar passando pelo mesmo problema. Então está aí a dica! Até a próxima!

Fontes:

http://community.linuxmint.com/tutorial/view/218