Placa wireless Ralink rt73 USB no Linux

Placa wireless Ralink rt73 USB no Linux

O rt73 é um chipset de baixo custo, fabricando pela Ralink, que está sendo utilizado em um número cada vez maior de adaptadores wireless USB, de diversos fabricantes.

As placas wireless USB estão se tornando cada vez mais populares, substituindo principalmente as placas PCMCIA destinadas a notebooks. O principal motivo é que elas são baratas e fáceis de instalar, já que basta plugar na porta USB e você pode utilizar a mesma placa wireless tanto no desktop quanto no notebook.

index_html_6a8ae713

Existem tanto placas com antena interna, como este modelo da D-Link, quanto com antenas externas destacáveis, como no modelo abaixo:

index_html_1bf2546a

As placas com antena interna geralmente sofrem com uma recepção ruim, pois as antenas são, na verdade, simples trilhas na placa de circuito, que oferecem pouco ganho:

index_html_2e32b437

As com antena externa são melhores, já que antena oferece um maior ganho e você pode alterar a posição da antena para obter a melhor recepção, mas é preciso tomar cuidado ou comprar, pois existem muitos casos de placas com antenas falsas, onde a antena externa é apenas um enfeite de plástico, que não é sequer conectado à placa. É o mesmo que acontece com muitos adaptadores Bluetooth.

As placas USB com chipset Ralink são perfeitamente suportadas no Linux, mas a maioria das distribuições ainda não inclui o driver atualizado e por isso a placa não é detectada automaticamente ou seja ativada utilizando o driver antigo, o que faz com que você não consiga se conectar à rede, com o sistema exibindo um erro diverso, como neste screenshot do Ubuntu:

index_html_3bd27b14

Vamos lá então 🙂

A primeira peculiaridade, é que placas USB não aparecem no comando “lspci“, que comumente usamos para verificar os periféricos instalados. O motivo é muito simples: o comando lspci mostra os periféricos conectados ao barramento PCI, AGP e PCI Express. Placas USB não entram na lista.

Você pode ver se a placa está instalada e foi vista pelo sistema usando o comando “lsusb”, como em:

# lsusb

Bus 002 Device 001: ID 0000:0000
Bus 005 Device 001: ID 0000:0000
Bus 004 Device 001: ID 0000:0000
Bus 003 Device 001: ID 0000:0000
Bus 001 Device 003: ID 08ec:1000 M-Systems Flash Disk Pioneers
Bus 001 Device 002: ID 148f:2573 Ralink Technology, Corp.
Bus 001 Device 001: ID 0000:0000

Se quiser mais detalhes, você pode usar o comando “lsusb -v“, que vai mostrar um volume absurdo de detalhes, incluindo algo como:

Bus 001 Device 002: ID 148f:2573 Ralink Technology, Corp.
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x148f Ralink Technology, Corp.
idProduct 0x2573
bcdDevice 0.01
iManufacturer 1 Ralink
iProduct 2 802.11 bg WLAN
iSerial 0
bNumConfigurations 1

Vamos então ao que interessa. O primeiro passo é baixar o driver “rt73”, disponível no:
http://rt2x00.serialmonkey.com/

O link direto para baixar a versão mais recente do driver é:
http://rt2x00.serialmonkey.com/rt73-cvs-daily.tar.gz

O pacote contém o código fonte do driver e por isso você precisa ter instalados os headers do Kernel e os compiladores básicos. No Ubuntu/Kubuntu, por exemplo, você precisa instalar o pacote “build-essential” e o pacote “linux-headers” referente à versão do Kernel instalada, como em:

# apt-get install build-essential
# apt-get install linux-headers-`uname -r`

Para instalar, descompacte o driver, acesse a pasta “Module” dentro da plasta que será criada e rode os comandos “make” e “make install” (nesse driver você não precisa do “./configure”), como em:

# tar -zxvf rt73-cvs-daily.tar.gz
# cd rt73-cvs-2007101015/Module/
# make
# make install

Antes de carregar o novo módulo, vamos fazer uma checagem geral, descarregando outros módulos que podem causar conflitos com ele. Estes são na verdade drivers antigos, incompatíveis com o rt73, que são carregados incorretamente no lugar dele em muitas distribuições:

# modprobe -r rt73usb
# modprobe -r rt2570
# modprobe -r rt2500usb

Em seguida, abra o arquivo “/etc/modprobe.d/blacklist” e adicione as linhas abaixo para garantir que eles não voltarão a ser carregados depois de reiniciar o micro:

blacklist rt73usb
blacklist rt2570
blacklist rt2500usb

Agora sim, você pode carregar o novo módulo sem medo 🙂

# modprobe rt73

Se quiser confirmar se a placa foi mesmo ativada, você pode usar o comando “cat /proc/net/dev”, que mostra as interfaces de rede disponíveis no sistema. Ele deve mostrar uma linha referente à interface “wlan0”

index_html_m65fe3fc9

Aproveite e adicione a linha “rt73” no final do arquivo “/etc/modules” para garantir que o módulo passe a ser carregado automaticamente durante o boot:

# echo rt73 >> /etc/modules

Falta agora configurar a placa wireless. Os drivers para placas Ralink não são compatíveis com o wpa_supplicant (usado para conectar a redes com encriptação via WPA), por isso muitos das ferramentas de configuração de rede não são compatíveis com eles. Vamos então aos comandos que você pode usar para configurar a placa manualmente, caso necessário:

iwconfig wlan0 mode managed
ifconfig wlan0 up
iwconfig wlan0 ap REDE
iwpriv wlan0 set AuthMode=WPAPSK
iwpriv wlan0 set WPAPSK=SENHA
iwpriv wlan0 set EncrypType=TKIP
iwconfig wlan0

O “REDE” é o ESSID da rede, enquanto o “SENHA” é a passphrase. Em versões antigas do drivers, a placa era detectada pelo sistema como “rausb0”, mas nas versões atuais ela é vista como “wlan0”, assim como as placas configuradas através do ndiswrapper.

Depois de rodar os comandos, você pode verificar se a placa se conectou ao ponto de acesso usando o comando “iwconfig“.

Depois disso, falta só configurar os endereços da rede da forma normal. Se quiser terminar o trbalho via terminal, os comandos são:

ifconfig wlan0 192.168.1.21 netmask 255.255.255.0 up
route del default
route add default gw 192.168.1.1 dev wlan0
echo ‘nameserver 208.67.222.222’ >> /etc/resolv.conf

Como de praxe, lebre-se de substituir os endereços pelos usados na sua rede 🙂

A principal vantagem de conhecer os comandos manuais para configurar a rede é que você pode transformá-los em um script, de forma que a rede seja configurada automaticamente durante o boot, ou quando rodar o script manualmente.

Aqui vai um script de conexão que você pode adaptar às suas necessidades. Para usá-lo, você precisa apenas especificar a configuração da rede nas variáveis iniciais.

#!/bin/sh

rede=”REDE”
passphrase=”PASSPHRASE”
ip=”192.168.1.21″
gateway=”192.168.1.1″
dns=”208.67.222.222″

iwconfig wlan0 mode managed

ifconfig wlan0 up
iwconfig wlan0 ap $rede
iwpriv wlan0 set AuthMode=WPAPSK
iwpriv wlan0 set WPAPSK=$passphrase
iwpriv wlan0 set EncrypType=TKIP
iwconfig wlan0

ifconfig wlan0 $ip netmask 255.255.255.0 up
route del default
route add default gw $gateway dev wlan0
echo “nameserver $dns” > /etc/resolv.conf

Um problema que encontrei ao testar o driver é que a associação com o ponto de acesso falha em boa parte das tentativas, de forma que acaba sendo necessário repetir os comandos de associação duas ou até mesmo três vezes. Se você encontrar o mesmo problema, pode adicionar essa função que escrevi ao script. Ele testa a conexão e executa os comandos até que a placa consiga se associar ao AP:

ping -c 1 -w 2 google.com 2>/tmp/check
check=`cat /tmp/check`
while [ “$check” = “ping: unknown host google.com” ]; do
iwconfig wlan0 mode managed
ifconfig wlan0 up
iwconfig wlan0 ap $rede
iwpriv wlan0 set AuthMode=WPAPSK
iwpriv wlan0 set WPAPSK=$passphrase
iwpriv wlan0 set EncrypType=TKIP
iwconfig wlan0
sleep 3
ping -c 1 -w 2 google.com 2>/tmp/check
check=`cat /tmp/check`
done

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X