Wireless: Corrigindo a instabilidade do módulo rt61pci

Começarei esse artigo de maneira direta. Cheguei a conclusão que não adianta escrever toda a teoria sobre placas Wireless, as camadas do protocolo e configurações mais detalhadas do sistema. Por mais bonito que possa parecer – pelo menos para mim e meia dúzia de usuários avançados – a maioria dos visitantes querem ir direto ao ponto, algo prático e direto, assim como fiz no livro Ubuntu Guia Prático para Iniciantes. Sem o “lenga lenga” habitual de teses e pesquisas.

O artigo é uma resposta ao instável módulo (uma espécie de “driver” – para quem veio do Windows) rt61pci, que está presente e nativo na maioria das distros modernas e que suporta as placas PCI Wireless da D-Link. O objeto de teste do artigo será o modelo G510 da D-link, que, depois de alguma pesquisa, cheguei ao website http://rt2×00.serialmonkey.com/wiki/index.php/Downloads e corrigi este pequeno bug. A propósito, não se espante se ver o seu hardware ser reconhecido como RaLink RT2561/RT61 rev B.

Será que isso afeta você? Os principais sintomas são: Dificuldade de conexão com o AP/Router e quedas freqüentes da conexão.

Vamos começar a substituição do módulo? Primeiramente, abra o terminal e entre com o comando lsmod, descubra qual modulo a sua placa wireless está utilizando – se for uma D-link, possivelmente será o rt61pci. Quando identificado, especifique esse modulo na “blacklist” editando o arquivo de mesmo nome em /etc/modprobe.d/blacklist. Siga os exemplos contidos no arquivo e você se sairá bem.

O próximo passo é fazer o download do arquivo rt61-cvs-daily.tar.gz em http://rt2×00.serialmonkey.com/wiki/index.php/Downloads

Extraia seu conteúdo e compile – execute o comando #make dentro do diretório – sempre lembrando da necessidade de instalar o pacote build-essential e as fontes do seu kernel para compilar com êxito. O comando para instala-los no Ubuntu seria parecido com: #apt-get install build-essential linux-headers-`uname -r` linux-source-`uname -r . Usuário Debian? mesmo comando do Ubuntu. E se usa o RedHat Fedora, o comando seria: yum -y install kernel-devel gcc g++ make. Esses pacotes correspondem ao desenvolvimento do kernel e compiladores de linguagem.

Coplilou? Então: #su -c make install

Após a instalação, retire o módulo em uso de funcionamento com o comando modprobe -r rt61pci – usuários do Fedora usem /sbin/modprobe -r rt61pci – ou reinicie o computador.

Para ativar o módulo recém instalado, entre com o comando #modprobe rt61 - usuários do Fedora, não esqueçam do /sbin/….

Verifique com o comando lsmod se o módulo rt61 consta na lista. Caso afirmativo , está tudo certo, reconfigure sua conexão e tente novamente conectar-se.

24 Respostas

  1. Valeu cara, eu estava há um bom tempo me batendo aqui com esse problema, sempre que ligava meu micro eu tinha que dar um ‘restart’ na interface de rede para funcionar e durante o dia eram tantos restart’s que até tinha feito um script (se assim pode-se chamar) com o comanto /etc/init.d/network restart para minha conexão voltar ao normal. Após seguir suas instruções reiniciei a máquina e não fiz mais nada, on-line logo de primeira, vou aproveitar a dica e tentar habilitar o módulo no Debian etch, porque o bendito não ativou de forma nenhuma minha placa de rede… Valeu mesmo, Obrigado.

  2. Disponha.

    Também havia criado um script para reiniciar minha conexão. Cheguei até coloca-lo no cron.d para reiniciar de tempos em tempos automaticamente. Também não conseguia conectar ao computador com a placa d-link, a conexão sempre caia, seja por SSH ou VNC. Uma pena que esse modulo nativo esteja assim, suja indiretamente a imagem da distro.

  3. nem é questão de distro, acho mais provável de kernel, pois como disse antes também tive problemas no Debian, que por pior ainda era que através do netinstall eu instalava ele normalmente, ele baixava os pacotes necessários e tudo, mas ao reiniciar para usar realmente o sistema nada era detectado, por isso vou tentar essa receita de bolo com o Debian netinstall também, já que já baixei o módulo correto.

  4. Sou iniciante no mundo linux ainda então me descupe pela pergunta besta. Mas eu estava querendo começar a usar somente o Ubuntu 7.10, tirar de vez o Windows do meu PC (por vários motivos) mas uma coisa que tem me dado dor de cabeça é essa wireless. Eu estava seguindo o tutorial mas não consegui passar do comando “apt-get install build-essential linux-headers-`uname -r` linux-source-`uname -r`” Eu tenho que adicionar algum repositório para conseguir baixa-los?! Pelo comando o Ubuntu não consegue instalar. Tenho que fazer alguma coisa? Desculpe pela pergunta de iniciante. Obrigado!

  5. Rafael Diego,

    É necessário habilitar os canais de software e atualizar a lista. A maneira mais simples de fazeré em: Sistema -> Administração -> Canais de Software.

    Para atualizar a lista, entre com o sudo apt-get update na linha de comando ou use o gerenciador synaptic para isso.

    Se ficar muito complicado para você, volte ainda essa semana que escreverei um tutorial usando uma outra ferramenta, que é bem mais fácil.

    Um abraço e obrigado pela visita.

  6. This post is very hot, it is high ranked at the top posts of wp – the ranking of wp blog posts, but today we built a more professional report for English wp top blogs, and posts. You can see http://indirecting.blogspot.com/ for more information

  7. Olá Marcellino,
    Grato pela ajuda (post), sou relativamente novo no linux e estava com os problemas que vc comentou neste post. Segui sua receita, tudo legal. Porém, com a atualização não tenho mais WPA (network manager), pode dar uma ajuda?dica?

    Grato pela ajuda.

    Edson

  8. Resolvi usar o Automatix para ver se dava pra instalar, instalei tudo la, quando tento usar o apt-get de isso:
    build-essential já é a versão mais nova.
    linux-headers-2.6.22-14-generic já é a versão mais nova.

    então eles estão instalados… ne?

    e mesmo assim quando vou compilar da o erro:

    make[1]: Entrando no diretório `/usr/src/linux-headers-2.6.22-14-generic’
    make[1]: *** Sem regra para processar o alvo `de’. Pare.
    make[1]: Saindo do diretório `/usr/src/linux-headers-2.6.22-14-generic’
    rt61.ko failed to build!
    make: ** [module] Erro 1

  9. Edson,

    Para solucionar seu problema tente um desses métodos:

    1- WPA (802.11g)
    Set the authentication mode:
    # iwpriv wlan0 set AuthMode=WPAPSK
    Set the encryption key:
    # iwpriv wlan0 set WPAPSK=
    Set the encryption type:
    # iwpriv wlan0 set EncrypType=TKIP

    2- WPA2 (802.11i)
    Set the authentication mode:
    # iwpriv wlan0 set AuthMode=WPA2PSK
    Set the encryption key:
    # iwpriv wlan0 set WPAPSK=
    Set the encryption type:
    # iwpriv wlan0 set EncrypType=AES

  10. Olá pessoal,

    Também sou inciante, e não sei como compilar o programa;
    Já atualizei os canais de software, e, como segue:
    build-essential já é a versão mais nova.
    linux-headers-2.6.22-14-generic já é a versão mais nova.

    No entanto o comando make me resulta um erro, vejam:

    root@mm:/home/linux/Área de Trabalho/rt61-cvs-2008022009# make
    make: *** Nenhum alvo indicado e nenhum arquivo make encontrado. Pare.

  11. Marcellino, muito bacana seu post. Indo direto ao ponto. Mas sou iniciante no mundo linux e gostaria de uma ajudinha. No meu caso meu note (Positivo) a placa é da Realtek (rtl8187) e enfrento exatamente os mesmos problemas já relatados por você e pelos demais colegas (tem que reiniciar a placa volta e meia pois ela perde a conexão muito fácil), o que no Windows não ocorre. Como proceder? Grato. Forte abraço.

  12. Olá Marcellino, primeiro queria te parabenizar pelo seu livro, que por sinal me ajudou muito na transição Windows/ UBUNTU, como também pelo seu blog que ajuda pessoas iniciantes em dúvidas rotineiras.

    Quando instalei o UBUNTU(8.04 Gnome) no meu Laptop me deparei com o seguinte problema: a placa de Wireless ( realtec rtl8187b) não está sendo reconhecida. Como posso proceder para resolver esse problema?

    Grato desde já pela atenção.
    Um forte abraço.

  13. Tenho uma boa notícia:

    Consegui através do ndwisrapper instalar minha placa de wireless, porém ela rconhece a minha rede e qdo coloco minha chave de acesso ele não conecta.
    Como posso proceder?

    um abraço.

  14. Marcellino,
    Execente post, estava procurando isso a algum tempo, não testei ainda mas irei testa-lo daqui a pouco, depois posto o resultado.
    E parabens pelo site está muito bem extruturado e organizado e já adicionei na lista dos favoritos. Vlw….

  15. Marcellino,
    apos atualizar com o comando “yum -y install kernel-devel gcc g++ make” e colocar o drive rt61pci na blacklist executei o comando make e me retornou o seguinte erro:
    [root@localhost Module]# make
    make: *** /lib/modules/2.6.25-14.fc9.x86_64/build: Arquivo ou diretório não encontrado. Pare.
    rt61.ko failed to build!
    make: ** [module] Erro 1

    baixei o drive certo mas não sei porque está faltando o arquivo rt61.ko.
    E agora?? Me ajude pelo amor de Deus….
    Obrigado.

  16. No Fedora 8 peguei um Bug desse nível, resumidamente, o pacote Kernel e Kernel devel eram diferentes e por isso nenhum módulo compilava.

    Execute um rpm -q kernel kernel-devel e compare as versões.

    Se não baterem, atualize os dois.

  17. qual comando faço para atualizar os dois sem net? Perdi a minha conexao apos colocar o drive na blacklist. Desculpe-me, mas sou leigo em linux..
    Obrigado pela paciencia.

  18. Retire o driver da blacklist e levante-o novamente com o comando modprobe

    ex.

    # modprobe nome_do_modulo_que_estava_na_blacklist

    Sem net nao da para atualizar para a ultima versao do kernel. Quando reconectar, entre com o comando:

    yum update kernel kernel-devel

    Depois que atualizar, reinicie com a versão do novo Kernel e tente novamente o procedimento.

  19. Eh…muito obrigado mesmo por estar me ajudando, mas depois de atualizar e reiniciar retornou o seguinte erro:

    [root@localhost Module]# make
    make[1]: Entrando no diretório `/usr/src/kernels/2.6.25.14-108.fc9.x86_64′
    CC [M] /root/rt61-cvs-2008081311/Module/rtmp_main.o
    CC [M] /root/rt61-cvs-2008081311/Module/mlme.o
    CC [M] /root/rt61-cvs-2008081311/Module/connect.o
    CC [M] /root/rt61-cvs-2008081311/Module/sync.o
    CC [M] /root/rt61-cvs-2008081311/Module/assoc.o
    CC [M] /root/rt61-cvs-2008081311/Module/auth.o
    CC [M] /root/rt61-cvs-2008081311/Module/auth_rsp.o
    CC [M] /root/rt61-cvs-2008081311/Module/rtmp_data.o
    CC [M] /root/rt61-cvs-2008081311/Module/rtmp_init.o
    CC [M] /root/rt61-cvs-2008081311/Module/sanity.o
    CC [M] /root/rt61-cvs-2008081311/Module/rtmp_wep.o
    CC [M] /root/rt61-cvs-2008081311/Module/wpa.o
    CC [M] /root/rt61-cvs-2008081311/Module/md5.o
    CC [M] /root/rt61-cvs-2008081311/Module/rtmp_tkip.o
    CC [M] /root/rt61-cvs-2008081311/Module/rtmp_info.o
    /root/rt61-cvs-2008081311/Module/rtmp_info.c: In function ‘rt_ioctl_giwscan’:
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1928: warning: passing argument 1 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1928: warning: passing argument 3 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1928: warning: passing argument 4 of ‘iwe_stream_add_event’ makes pointer from integer without a cast
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1928: error: too few arguments to function ‘iwe_stream_add_event’
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1942: warning: passing argument 1 of ‘iwe_stream_add_point’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1942: warning: passing argument 3 of ‘iwe_stream_add_point’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1942: warning: passing argument 4 of ‘iwe_stream_add_point’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1942: error: too few arguments to function ‘iwe_stream_add_point’
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1963: warning: passing argument 1 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1963: warning: passing argument 3 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1963: warning: passing argument 4 of ‘iwe_stream_add_event’ makes pointer from integer without a cast
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1963: error: too few arguments to function ‘iwe_stream_add_event’
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1981: warning: passing argument 1 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1981: warning: passing argument 3 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1981: warning: passing argument 4 of ‘iwe_stream_add_event’ makes pointer from integer without a cast
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1981: error: too few arguments to function ‘iwe_stream_add_event’
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1998: warning: passing argument 1 of ‘iwe_stream_add_point’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1998: warning: passing argument 3 of ‘iwe_stream_add_point’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1998: warning: passing argument 4 of ‘iwe_stream_add_point’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:1998: error: too few arguments to function ‘iwe_stream_add_point’
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2017: warning: passing argument 1 of ‘iwe_stream_add_value’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2017: warning: passing argument 4 of ‘iwe_stream_add_value’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2017: warning: passing argument 5 of ‘iwe_stream_add_value’ makes pointer from integer without a cast
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2017: error: too few arguments to function ‘iwe_stream_add_value’
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2140: warning: passing argument 1 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2140: warning: passing argument 3 of ‘iwe_stream_add_event’ from incompatible pointer type
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2140: warning: passing argument 4 of ‘iwe_stream_add_event’ makes pointer from integer without a cast
    /root/rt61-cvs-2008081311/Module/rtmp_info.c:2140: error: too few arguments to function ‘iwe_stream_add_event’
    make[2]: ** [/root/rt61-cvs-2008081311/Module/rtmp_info.o] Erro 1
    make[1]: ** [_module_/root/rt61-cvs-2008081311/Module] Erro 2
    make[1]: Saindo do diretório `/usr/src/kernels/2.6.25.14-108.fc9.x86_64′
    rt61.ko failed to build!
    make: ** [module] Erro 1

    Desculpe-me por echer a sua pagina…

  20. Marcelino, me ajude pelo amor de Deus
    Tentei atualizar o sistema inteiro com “yum update” demoro mais de 24 horas mas mesmo assim retorno o mesmo erro acima, se vc não souber o q fazer não tem problema mas me retorna por favor,
    Obrigado pela atenção, e desculpa o transtorno pois estou na estaca zero.

  21. Achu que vou ter que comprar outra placa mesmo. Se puder me dar uma dica sobre qual placa comprar, estava pensando em uma D-link DWL G520, me falaram que ela contem os drives para o linux, e vou tentar a outras distribuiçoes que possuo,

    Obrigado.

  22. Resolvi meu problema comprei um aprouter e coloquei a net por cabo.

    Obrigado pela ajuda.

  23. Olá Marcelino,

    Gostei muito do seu post, e me identifiquei com o problema.

    Possuo um AmazonPC (AMZ-A601) e a placa wireless é uma Realtek (RTL8187) e me encontro com o problema que você descreveu no texto acima.

    Gostaria de saber como faço para sanar este problema. Aguardo respostas

Fechado para comentários.