Procedimentos para flash do DIR-300 com DD-WRT e OpenWRT - versão 2

Estudando e testando redes Mesh nos deparamos com a necessidade de trocar o firmware original dos roteadores para firmwares livres. Neste pequeno artigo demonstraremos a troca do firmware para o roteador D-Link modelo DIR-300, um equipamento barato e de fácil acesso no mercado brasileiro. Por Rodrigo Troian e Vinicius John.

[ Hits: 27.679 ]

Por: Vinicius John em 26/03/2010


Introdução



Este artigo é de co-autoria de Rodrigo Troian e Vinicius John.

Estudando e testando redes Mesh nos deparamos com a necessidade de trocar o firmware original dos roteadores para firmwares livres. Neste pequeno artigo demonstraremos a troca do firmware para o roteador D-Link modelo DIR-300, um equipamento barato e de fácil acesso no mercado brasileiro, que após a troca do sistema operacional deve agregar alguns reais a mais, pois o mesmo passa a permitir seu uso com WDS, múltiplas interfaces wifi virtuais, estatísticas, acesso ssh, QOs, rodar protocolos de rede mesh (olsr, b.a.t.m.a.n., etc.) enfim, coisas que só o GNU/Linux faz para você!

Tenha clareza de que você estará modificando o software que controla todo o hardware do seu equipamento, o sistema operacional. Qualquer problema que ocorra principalmente durante os processos críticos de gravação poderá danificar o hardware permanentemente, faça por sua conta e risco! Mas os resultados compensam, e como! :-)

A parte inicial da troca do firmware deste router é igual tanto para DD-WRT como OpenWRT. Este script foi escrito e testado usando sistema operacional GNU/Linux e OS X como estação.

Dicas: tenha paciência e vá com calma. Verificando duas vezes antes de dar os comandos. No caso de uploads de arquivo, verifique se os arquivos existem e o servidor tftp está escutando. Aguarde os comandos retornarem ao prompt, muitas vezes demoram um pouco na execução. Se houver possibilidade, conecte seu roteador e micro a nobreak.

Material necessário: microcomputador com placa de rede disponível, servidor tftp (no GNU/Linux usamos atftpd), putty no GNU/Linux e telnet no OS X, cabo de rede, roteador D-Link Dir-300 e o seguinte script para abrir o gerenciador de boot do roteador, conforme segue:
# cat scriptdd.bash

#!/bin/bash

echo ""
echo "Usando IP padrao gerenciador boot original do DIR-300: 192.168.20.81"
host="192.168.20.81"

#Para acessar o gerenciador de boot do dd-wrt comente as duas linhas acima e
#descomente as duas abaixo
#echo "Usando IP padrao do dd-wrt: 192.168.1.1"
#host="192.168.1.1"

while true
do
   if eval "ping -c 1 -s 1 $host" > /dev/null; then       
       echo "Acordou o roteador. Tentando conectar via telnet"

      #no machintoch, somente o comando telnet funcionou
      #telnet $host 9000

      #para micros com sistema gnu/linux, precisamos instalar o putty e criar um arquivo
      #ctrlc.txt com o conteudo "^C" (sem aspas) e colocar no mesmo diretorio deste script
      putty telnet://$host:9000 -m ctrlc.txt
      break
   else
      echo "Esperando pelo gerenciador de boot. Pressione CTRL + C para sair."
      sleep 1
   fi
done

Começando então:

Para saber os detalhes técnicos do seu roteador, coisa que estranhamente os fabricantes não disponibilizam, um caminho é acessar o site do DD-WRT e encontrar o seu roteador (marcar/modelo), lá estão quantidade de memória ram, memória flash e processador do equipamento.

0. Baixar os arquivos necessários:
   No site do DD-WRT baixe os arquivos ap61.ram e ap61.rom.
   No site do OpenWRT.org, encontre a versão que você quer (kamikaze/backfire - última), acesse a pasta correspondente ao sistema, no caso do DIR-300 atheros, e baixe openwrt-atheros-vmlinux.lzma e openwrt-atheros-root.squashfs. Cuidado com estes arquivos, é importante um correto download. Já copie os arquivos na raiz do servidor tftp. Nós utilizamos o OpenWRT na versão kamikaze 8.09.2.

1. Configurar IP local manualmente para 192.168.20.80/24 (255.255.255.0). Se estiver usando o network-manager no GNU/Linux, faça através dele ou desative-o e faça manualmente.

2. Conectar o cabo de rede no micro e na porta WAN do roteador.

3. Desligar a energia elétrica do router e religar, já pressionando o botão reset localizado na parte de trás do router. Assim que ligar, inicie o script no micro (conforme comando abaixo) e mantenha o reset pressionado até a mensagem "Router Awake" aparecer já como saída do script.

# bash scriptdd.bash

4. Aguarde o prompt do RedBoot aparecer (gerenciador de boot padrão do DIR-300).

Usando IP padrao DIR-300: 192.168.20.81
Waiting for Redboot to boot. Press CTRL + C to quit
Router Awake
Trying 192.168.20.81...
Connected to 192.168.20.81.
Escape character is '^]'.
RedBoot>

5. Levante o tftp server (no Debian/Ubuntu atftpd), com os arquivos necessários já copiados para sua raiz (ap61.ram e ap61.rom para /tftpboot). Tenha certeza que o tftp esteja rodando ("ps aux | grep ftp" ou "netstat -anp | grep ftp"). Caso utilize firewall, desative-o ou libere a porta padrão do tftp (69).

6. Digite no prompt do RedBoot. Estaremos carregando o sistema de boot do dd-wrt para a memória ram. Se houver interrupção de energia, será necessário gravar novamente a ram.

RedBoot> load ap61.ram
Using default protocol (TFTP)
Entry point: 0x800410bc, address range: 0x80041000-0x800680d8

Caso dê timeout na saída do comando load, o router não está conseguindo conectar ao servidor tftp, reveja suas configurações. Também é útil utilizar um sniffer de pacotes para ver o que está acontecendo.

Reiniciando o router:

RedBoot> go

7. Troque o IP da placa de rede do micro para 192.168.1.2/24. O equipamento agora já irá carregar o gerenciador de boot do dd-wrt gravado na ram.

# telnet 192.168.1.1 9000
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
DD-WRT>

Observe que o prompt já é diferente. Lembre-se de reiniciar o servidor tftp depois da mudança de IP da placa de rede.

Continuando então...

Apagando a flash de inicialização, incluindo a rom de inicialização original, portanto a partir de agora, não pode haver interrupção de energia.

DD-WRT> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .
DD-WRT>

Confirmando endereço IP do micro:

DD-WRT> ip_address -h 192.168.1.2
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2

Carregando a ROM de inicialização:

DD-WRT> load -r -b %{FREEMEMLO} ap61.rom
Using default protocol (TFTP)
Raw file loaded 0x80080000-0x800a8717, assumed entry at 0x80080000

Montando a imagem da rom.

DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot
An image named 'RedBoot' exists - continue (y/n)? y
... Erase from 0xbfc00000-0xbfc30000: ...
... Program from 0x80080000-0x800a8718 at 0xbfc00000: ...
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

Reiniciando o router:

DD-WRT> reset

Conectando novamente:

# telnet 192.168.1.1 9000
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.
DD-WRT>

Confirmando mais uma vez o IP do micro:

DD-WRT> ip_address -h 192.168.1.2
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.2

Gravando a imagem da rom de boot do dd-wrt.

DD-WRT> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

Trocado o boot loader do roteador, não há problemas com interrupção de energia. Começamos os procedimentos para instalar o firmware OpenWRT do DD-WRT são diferentes e seguem separados.

telnet 192.168.1.1 9000
Trying 192.168.1.1...
Connected to 192.168.1.1.
Escape character is '^]'.

    Próxima página

Páginas do artigo
   1. Introdução
   2. Procedimentos para o OpenWRT
   3. Procedimentos para o DD-WRT
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

O Ser e o Ter no Linux

Mantendo seus dados em segurança com o EncFS

Call Center no Linux

Participe da revista Viva o Linux

Babytrans, o Babylon for Linux

  
Comentários
[1] Comentário enviado por fabio em 26/03/2010 - 11:38h

Muito bom! Eu instalei o dd-wrt no meu roteador. Existe alguma diferença considerável entre o dd-wrt e o openwrt? A afirmativa abaixo é correta?

"DD-WRT is slick and fancy, but does not allow for much hacking, while OpenWRT is a very hacker-friendly system"

[]'s

[2] Comentário enviado por vjohn em 26/03/2010 - 12:56h

Acho que sim! O DD-WRT tem uma administração web mais amigável e estável. Você faz praticamente tudo através dela, porém é um projeto que possui versão paga também e não disponibiliza o código fonte. Enquanto que o OpenWRT é totalmente livre, com código fonte, sistema de pacotes, etc. A administração web padrão é a Luci, feita em Lua, e está muito boa, mas ainda não 100% traduzida para o português, o que estamos querendo ajudar também. Há possibilidade de usar outra administração web, o xwrt que não chegamos a testar...

[3] Comentário enviado por valtinho em 26/03/2010 - 15:18h

Cara, estava precisando de um artigo assim... mas estou com um problema. Onde eu encontro os arquivos ap61.ram e ap61.rom?

[4] Comentário enviado por Lisandro em 26/03/2010 - 15:39h

Muito interessante.

[5] Comentário enviado por rtroian em 27/03/2010 - 12:30h

Opa Valtinho, tanto o ap61.rom como o ap61.ram são encontrados no site do dd-wrt, e os arquivos para o OpenWRT se encontram no próprio site deles na pasta para o processador Atheros, que é o do DIR 300.

[6] Comentário enviado por valtinho em 29/03/2010 - 11:23h

Valeu rtroian. Segui os passos para o dd-wrt e deu tudo certo. Ja esta funcionando 100%. Muito intuitivo a interface dele. Obrigado pelo artigo.

[7] Comentário enviado por fmpfmp em 29/03/2010 - 15:34h

Eu fiz no meu logo quando comprei. Mas é um procedimento arriscado, a primeira vez não deu certo e fui obrigado a trocar o equipamento. Só que na segunda foi. A vantagem do DD-WRT é que ele te dá muito mais opções e relatórios que o firmware original, te dá um terminal baseado em Linux pra gerenciamento e aumenta o desempenho do seu equipamento.

[8] Comentário enviado por dolivervl em 31/03/2010 - 18:16h

Caso dê algum problema, tem como voltar ao firmware original ??

[9] Comentário enviado por vjohn em 31/03/2010 - 23:52h

Olá dolivervl e fmpfmp!

Como comentamos no artigo: se houver falta de luz ou interrupção de energia durante o processo de instalação do gerenciador de boot, quando ele for ligado novamente não iniciará sistema algum, ficando "morto". Existem processos para reescrever a flash, mas é necessário abrir o equipamento...

Mas depois que o novo gerenciador de boot estiver funcionando (no caso do dd-wrt), pode até haver problemas durante a instalação do OpenWrt ou do DD-wrt que você conseguirá acessar novamente o gerenciador de boot e recomeçar a instalação/configuração do sistema operacional em si! Casos extraordinários de a instalação do sistema interferir no gerenciador de boot gravado já na flash... Por isto é importante ter atenção durante todo o processo!

Até
Vinicius

[10] Comentário enviado por vjohn em 31/03/2010 - 23:53h

ps: está para sair uma versão 2 deste artigo! Deve ser publicada aqui em breve! Em todo caso, podem acessar direto o pdf:

http://softwarelivre.org/rede-mesh/032010-procedimentos-para-flash-do-dir-300-com-dd-wrt-e-openwrt-0...

Até
Vinicius

[11] Comentário enviado por vjohn em 04/04/2010 - 00:00h

ps2: é possível restaurar o firmware original sim, basta dar uma pesquisada que você acha artigos e fóruns sobre, como este: http://under-linux.org/f105/openwrt-78546/

[12] Comentário enviado por revsouza em 13/08/2011 - 19:45h

Olá amigo, eu fiz o processo do Open-Wwrt, deu tudo certo. Porem meu Router inicia e nao acende o led de wirelles, acende o led de pronto e aparece varias redes do wi-fi chamadas, mesh, open-mesh e my open-mesh. Precisa de ser feito algo a mais, poderia ajudar-me.

Valeuuu tudo excelente.

abracosss


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts