Índice:

NLDWRTG a placa de expansão ULTIMATE WRT54G: 8 etapas (com imagens)
NLDWRTG a placa de expansão ULTIMATE WRT54G: 8 etapas (com imagens)

Vídeo: NLDWRTG a placa de expansão ULTIMATE WRT54G: 8 etapas (com imagens)

Vídeo: NLDWRTG a placa de expansão ULTIMATE WRT54G: 8 etapas (com imagens)
Vídeo: COMO CONFIGURAR QUALQUER ROTEADOR MODO REPETIDOR WI-FI 2024, Julho
Anonim
NLDWRTG a placa de expansão ULTIMATE WRT54G
NLDWRTG a placa de expansão ULTIMATE WRT54G
NLDWRTG a placa de expansão ULTIMATE WRT54G
NLDWRTG a placa de expansão ULTIMATE WRT54G

Estou modificando roteadores WRT54G desde 2006, mas nunca tive tempo de projetar uma placa dedicada para ele até o ano passado. Este hardware ainda é um dos roteadores wi-fi mais hackeaveis no momento em que este livro foi escrito e merece ser mantido ativo.

Etapa 1: breve visão geral da série Linksys WRT54G

Breve visão geral da série Linksys WRT54G
Breve visão geral da série Linksys WRT54G

en.wikipedia.org/wiki/Linksys_WRT54G_serie…

Existem muitas versões diferentes no mercado, então vamos dar uma olhada nas quais podem ser modificadas:

-WRT54G 2.0 / 2.1 / 2.2 -> Embora todos os mods sejam possíveis, a grande e velha placa-mãe ocupando todo o espaço da caixa, se você modificar esta série, terá que mover seu circuito para fora da caixa ou criar uma caixa completamente nova (Sinceramente, não vale o esforço)

-WRT54G 4.0 comutada para o novo SoC -> Esta foi a primeira placa onde a placa-mãe em forma de L foi introduzida, então esta é a primeira versão onde você pode tirar vantagem da minha blindagem e inseri-la no gabinete

-WRT54GL 1.0 / 1.1 -> Linksys lançou o WRT54GL (o roteador mais vendido de todos os tempos) em 2005 para suportar firmware de terceiros baseado em Linux, depois que a linha WRT54G original foi trocada de Linux para VxWorks, começando com a versão 5. O WRT54GL é tecnicamente uma reedição da versão 4 do WRT54G. Este modelo é o REI dos WRTGs. Existem muitos roteadores de segunda mão no mercado, então se você tiver a opção de escolher o tipo de roteador, SEMPRE compre o WRT54GL.

-WRT54G 5.0 e superior -> Usa VxWorks OS e memória Flash reduzida; não é compatível com a maioria dos firmware de terceiros, embora o utilitário "VxWorks killer" permita que alguns firmware de código aberto de terceiros sejam carregados nesta e em futuras versões. A Linksys deu errado aqui e basicamente arruinou um produto completamente bom. Embora seja possível modificá-los, o espaço no roteador é tão pequeno (2 MB) que só pode caber no micro firmware DD-WRT, que praticamente não pode fazer nada além da funcionalidade de roteamento regular (sem VPN, sem smbfs / cifs, sem NFS, sem mmc, sem ext2). Eu consegui criar kernels para esta série e espremer em 1-1 o módulo necessário sobre o custo de tirar outros. NÃO vale o seu tempo e esforço, NÃO compre esses roteadores.

Com a última série WRT, a Linksys mudou para a arquitetura ARM, por exemplo, o WRT1200 AC tem uma CPU ARM dual-core de 1,3 GHz. No entanto, tenho uma experiência ruim com esses roteadores, mesmo depois de experimentar várias versões OpenWRT (agora LEDE), os roteadores podem congelar aleatoriamente. Espero mais de 300 dias de tempo de atividade em dispositivos unix.

Etapa 2: Estendendo a Funcionalidade

Estendendo a Funcionalidade
Estendendo a Funcionalidade

Ok, então quais hacks você pode fazer com este roteador:

1, Adicionar 2x portas seriais -> que podem ser úteis se você tiver outros servidores em um local remoto e quiser se conectar a seus bios através de linha serial ou outros roteadores, swtiches que permitem isso

2, Adicionar 1 porta USB1.0 -> pode ser usado para conectar impressora, disco rígido externo, etc (eu nunca fiz este mod, então não fará parte da escrita)

3, adicionar SDcard externo para armazenamento, isso pode estender a pequena memória de armazenamento flash de 16 MB do roteador para 16/32 /… + GB. Não tive problemas em usar cartões SD desse tamanho e também em cartões CLASSE 10 novos e duráveis. Se você experimentou o que é a limitação de cartões por modelos WRTG, deixe um comentário abaixo.

4, adicione um arduino para controlar sua casa, relés, rcswitches

Adicionar um arduino essencialmente abrindo uma quantidade ilimitada de opções: controle de robô, controle de dispositivos infravermelhos à vista (TVs, videocassetes, DVDs, projetores, ar condicionado), conectar toneladas de dispositivos a switches sem fio baratos de 433 MHz, comunicar-se com outros arduinos, raspis, adicionando um Xbee etc etc.

Embora tudo isso pudesse ser feito com um Raspberry PI + Arduino e extensões, considero o roteador WRT54G mais confiável do que o raspis. Eu tenho esses roteadores em configurações semelhantes com mais de 1 ano (!) Uptime, eu não poderia dizer o mesmo sobre o raspis onde meu tempo máximo de uptime foi em torno de 240 dias em um raspi 1 então o SDcard desistiu do sistema, embora o C O código de controle do Arduino foi carregado na memória, então não tive que me apressar com a substituição, pois o nó de controle ainda estava perfeitamente funcional:))

Etapa 3: Lista de Hardware

Lista de Hardware
Lista de Hardware

Estou anexando o layout da placa nos formatos SVG e EasyEda. Se você deseja construir o projeto, você precisará dos seguintes componentes: 1x Regulador de tensão LM7805

2x tampas para vreg 1uF 10uF (capacitores eletrolíticos 10PCS 25V 35V 50V 1uF ~ 1000uF Vários valores e tensões)

1x cabo de 4 pinos do SDcar para a placa (10pcs Jumper Wire 2/3/4/5/6 / 7Pin Fêmea para Fêmea Cabo Dupont 20cm para Arduino)

2 relés de palheta DIP051A7212D

1x soquete macho RS232 (20 pcs 9 pinos D-Sub DB9 macho em ângulo reto PCB Conector WT7n)

1x MAX 233 (10Pcs Max233 Max233cpp Rs232 Rs-232 Driver / Receptores Ic Novo X)

1x cabo conector de 10 pinos (5 unidades 2mm passo 2x5 pinos 10 pinos 10 fios IDC fita plana comprimento do cabo 10cm)

1x soquete de 10 pinos (20 unidades 2,54 mm 2x5 pinos 10 pinos retos macho encoberto PCB caixa cabeçalho conector IDC)

1x Conector de cabeçalhos (10 unidades 1 * 40 pinos única linha fêmea 2,54 mm conector de cabeçalho quebrável para Arduino 2017)

1x SD Card (pode ser um grande SD antigo ou um novo microsd com conversor, com menos de 32 GB eles devem funcionar, além disso eu não testei os cartões)

1x conversor TTL 3v5v (conversor de nível lógico 5x 3,3V para 5V TTL bidirecional para Arduino Raspberry pi)

1x 4n35 optoacoplador

Leitor de soquete de slot de módulo de cartão SD 1x para Arduino ARM MCU de leitura e gravação

1x Arduino Promicro (5 unidades Leonardo Pro Micro ATmega32U4 16 MHz 5V Substituir ATmega328 Arduino Pro Mini)

1x módulos RX e TX comprá-los como um pacote de combinação (5pcs 433Mhz RF transmissor e kit receptor para controle remoto sem fio Arduino)

Etapa 4: Design de Hardware

Design de Hardware
Design de Hardware
Design de Hardware
Design de Hardware
Design de Hardware
Design de Hardware

- Parafusos de placa na parte principal da placa de fundo de plástico preto

-MAX233 foi escolhido em vez do MAX232, portanto, não serão necessárias tampas adicionais para o PC-> conversor serial WRTG -Todos os componentes estão em 1 linha, de modo que um retângulo simples pode ser cortado na frente em vez de perfurar vários orifícios, alternativamente, uma bela placa de cobertura (ou um caso WRTG totalmente novo) poderia ser projetado com o Makerbot

-O soquete micro USB arduino promicros voltado para o painel frontal para programação externa.

- Com base no Arduino Promicro (o arduino está alimentando a entrada de 12 V do roteador WRT54G (por meio de um regulador de tensão), a tensão de circuito aberto do adaptador é de cerca de 16 V!)

-O Promicro tem usb real, não compartilha lixo, então o / dev / tts / 1 do WRTG pode ser conectado ao UART de hardware do Promicro

- Comunicação serial através de / dev / tts / 0 entre PC WRTG

-RF 433Mhz receptor + transmissor (o transmissor pode levar 12 V para uma faixa superior)

- Transmissor e receptor IR podem ser adicionados ao painel frontal

- LEDs adicionais podem ser adicionados ao painel frontal (indicar Rx / Tx para RF, IR, roteador / indicador de comunicação ardu)

Eu poderia ter projetado a placa com um conversor mini Buck, mas usei a abordagem do regulador de tensão linear, já que eu tinha isso em mãos. Eu encontrei 5 V em algum ponto do circuito, mas ao tocar nele tornou o roteador inutilizável (provavelmente não poderia fornecer a quantidade de corrente que a placa Arduino precisava), portanto, optei por uma abordagem vreg adicional.

O conversor TTL 3v5v está lá para fornecer a conversão de volatilidade adequada (estou usando um modelo promicro 5V arduino, que usa 5V em sua porta UART de hardware, portanto, é necessária a conversão do nível de tensão). No entanto, eu modifiquei roteadores no passado adicionando Arduino Nanos, Micros sem o conversor e não tive um problema, já que a porta TTY do WRTG é tolerante a 5V, mas isso não significa que você deve operá-lo com esta tensão.

O 4n35 também foi introduzido para eliminar alguns ruídos provenientes do lado externo do PC, eu não usei este componente no passado, mas também pode ser porque o laptop que usei durante os testes estava com defeito.

O cabo conector de 10 pinos cuida da maioria das conexões, no entanto, você deve se certificar de instalar os soquetes corretamente.

Como é mostrado na imagem na porta serial

Pino 1: 3,3 V + Pino 2: 3,3 V <= Os 2 pinos da extrema direita (mais perto dos LEDs) são os conectores POSITIVOS do lado direito do conector na blindagem NLDWRTG (perto do regulador de tensão LM7805)

Pino 9: GND + Pino 10: GND <= Lado oposto estão os conectores NEGATIVO do lado esquerdo do conector na blindagem NLDWRTG

Para conectar os fios entre o leitor SDCARD e o WRTG siga:

www.jbprojects.net/articles/wrt54gl_mods/

Os pinos relevantes:

  • CS -> Ponto 1
  • MOSI -> Ponto 2
  • SCK -> Ponto 5
  • MISO -> Ponto 7

Etapa 5: Limitações

Limitações
Limitações

O CPU do WRT54GL não é o mais potente (Broadcom BCM5352 @ 200 MHz), pode ter um overclock de 250 MHz (não é recomendado:)) então não espere executar SETI @ HOME nele. O roteador - apenas - tem interfaces de 100mbit / s e, ao contrário do que você pode encontrar em muitos lugares, este hardware * NÃO suporta VLANs 802.1q *. É apenas uma VLAN baseada em porta simples, por favor, não coloque o WRTG em uma rede transportando VLANs, ele não pode fazer isso.

Um aplicativo particularmente útil é usar o roteador como cliente VPN para se conectar a um local central. Embora seja perfeitamente utilizável para o servidor VPN, não espere muito desempenho dele.

Aqui estão alguns dos meus resultados com um WRT54GL v1.1 usando OpenVPN como cliente.

Taxa de transferência máxima do túnel: 500 kbit / s para baixo 50 kbit / s para cima

Desempenho de roteamento máximo sem VPN da WAN -> LAN 28 mbit / s

Desempenho máximo de NAT (mascaramento) sem VPN da WAN -> LAN 27 mbit / s

Ainda existem muitos locais com largura de banda geral menor do que esses (ISDNs, Adsls, redes de cabo, satélite, etc.) que este roteador pode atender perfeitamente.

Normalmente, os problemas surgem ao colocar muitos clientes sem fio nesses roteadores. Eu vi muitas configurações ao longo dos anos em cafés, hotéis, restaurantes onde eles colocam um roteador wi-fi no balcão e encerram o dia, esperando que ele seja capaz de atender mais de 10 pessoas. Tudo o que eles conseguem é uma experiência wi-fi completamente inutilizável no final, já que a largura de banda geral teórica para este roteador 802.11G é de 51 mbit / se isso é para todos, digamos que o real é em torno de 30mbit / s. Para 10 pessoas, isso é 3mbit / s por usuário, na melhor das hipóteses, o que não é suficiente para aplicativos que exigem grande largura de banda (streaming de vídeo / áudio, páginas da web 2.0 cheias de imagens grandes, etc.).

Como afirmei anteriormente, o ponto desse hack é o controle remoto e isso não usaria mais do que alguns kbit / s de tráfego por meio de uma VPN.

Etapa 6: Software WRTG

Software WRTG
Software WRTG

O firmware é construído com a melhor versão: DD-WRT v24-sp2 (12/08/10) std-nokaid (revisão SVN 14929) Existem outras imagens como a VPN que sacrifica o módulo ext2 para economizar espaço, mantendo o mmc kernelmodul (LoL). Optware 2 é um pacote de utilitários descontinuado, mas ainda útil, que estende a funcionalidade básica DD-WRT:

-Faz uma distro linux básica a partir da instalação deficiente do Busybox.

-Fornece bash e outras conchas.

-Fornece muitos goddies como: htop, netcat, tcpdump, ngrep, mc

-Fornece serviços de servidor como: samba, asterisk, vsftpd, servidor jabber

No entanto, os pacotes de software são antigos, cheios de bugs e vulnerabilidades. Publicar uma imagem aqui seria o mesmo que fornecer uma instalação do Windows $ 98, portanto, não publicarei nada ainda, mas anotarei passo a passo como configurar seu OptWare 2 SDCard.

No futuro, estou planejando fazer uma nova distro Linux (SnowGlobe Linux) com novos pacotes para este dispositivo e publicá-la.

1, JFFS2 deve estar habilitado, não importa que não tenha espaço livre nele:

/ dev / mtdblock / 4 128K 128K 0 100% / jffs

2, particionamento SDCARD. Aqui está um truque inteligente:

14 GB ou o que quisermos para a primeira partição de dados para a segunda partição ddwrt 100-500 MB (EXT2) para recuperação

Por exemplo:

Disco / dev / sde: 14,5 GiB, 15523119104 bytes, 30318592 setores

Unidades: setores de 1 * 512 = 512 bytes Tamanho do setor (lógico / físico): 512 bytes / 512 bytes Tamanho de E / S (mínimo / ideal): 512 bytes / 512 bytes Tipo de Disklabel: dos Identificador de disco: 0x6ad48986 Inicialização do dispositivo Início Fim Setores Tamanho Tipo de ID / dev / sde1 2048 29362175 29360128 14G 83 Linux / dev / sde2 29362176 30318591 956416 467M 83 Linux

Crie sistemas de arquivos:

mkfs.ext2 -L SnowGlobe-data / dev / sde1

mkfs.ext2 -L SnowGlobe-recovery / dev / sde2

Ajustar sistemas de arquivos:

tune2fs -c0 -i0 -m0 / dev / sde1

tune2fs -c0 -i0 -m0 / dev / sde2

Apenas a primeira partição será montada automaticamente pelo sistema no início! A ideia por trás da partição de recuperação é que o WRT54G não tem espaço para armazenar um fdisk em nenhum outro lugar. Portanto, se houver um desligamento incorreto e inconsistências no sistema de arquivos, a única maneira de reparar é ter uma cópia do fdisk (e libs necessárias para iniciar) em uma segunda partição que será montada apenas ocasionalmente como leitura apenas para executar fsck se precisava. Caso contrário, o cartão teria que ser retirado e colocado em um pc para conserto …

3, Montagem

Se você colocar um cartão formatado e particionado e inicializar corretamente, é mais provável que a primeira partição seja montada automaticamente:

/ dev / mmc / disc0 / part1 13,8G 59,6M 13,7G 0% / mmc

Opt deve ser montado em bind agora:

montagem -o bind / mmc / / opt /

4, script de instalação OWRT2

Antes de começar, verifique se defgw, dns tudo certo.

wget https://www.3iii.dk/linux/optware/optware-install-… -O - | tr -d '\ r'> /tmp/optware-install.sh

sh /tmp/optware-install.sh

Se ele não puder obter o script, é porque o wget do busybox falhou. Funcionará com o wget do owrt, mas ei, você deseja instalar o owrt …

A saída deve ser semelhante a:

Verificando a configuração do sistema …

Usando 192.168.1.1 como gateway padrão. Usando o (s) seguinte (s) servidor (es) de nomes: servidor de nomes 192.168.1.30 Aviso: o servidor de nomes local é diferente de gateway! Verifique a configuração ou digite: sed -i s / 192.168. * / 192.168.1.1/ /tmp/resolv.conf para corrigir isso. Instalando o pacote uclibc-opt_0.9.28-13_mipsel.ipk… Conectando-se a ipkg.nslu2-linux.org [140.211.166.82]: 80 uclibc-opt_0.9.28-12 100% | ************ ************************************ | 832 KB 00:00:00 ETA Atualizando /opt/etc/ld.so.cache / opt / sbin / ldconfig: não é possível criar /opt/etc/ld.so.cache~ (Não existe esse arquivo ou diretório) Instalando o pacote ipkg-opt_0.99.163-9_mipsel.ipk… Conectando-se a ipkg.nslu2-linux.org [140.211.166.82]: 80 ipkg-opt_0.99.163-9_ 100% | ************** ********************************* | 75896 00:00:00 ETA Downloading https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Inflating https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Atualizado lista de pacotes disponíveis em / opt / lib / ipkg / lists / optware Terminado com sucesso. Instalando uclibc-opt (0.9.28-12) em / opt /… Baixando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… pacote uclibc-opt sugere a instalação de ipkg-opt Configurando uclibc-opt Atualizando /opt/etc/ld.so.cache Terminado com sucesso. Instalando ipkg-opt (0.99.163-9) em / opt /… Baixando https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Configuring ipkg-opt encerrado com sucesso.

5, Bug de caminho:

Você DEVE exportar o caminho com:

export PATH = "/ opt / bin: / opt / sbin: / opt / usr / bin: / opt / usr / sbin: / bin: / usr / bin: / sbin: / usr / sbin: / jffs / sbin: / jffs / bin: / jffs / usr / sbin: / jffs / usr / bin: / mmc / sbin: / mmc / bin: / mmc / usr / sbin: / mmc / usr / bin"

caso contrário, o ipkg não fará nada!

6, verifique o ipkg:

atualização ipkg

Deve produzir:

Baixando

Inflar https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Lista atualizada de pacotes disponíveis em / opt / lib / ipkg / lists / optware Terminado com sucesso.

7, Instale os pacotes:

ipkg install bash htop mc openvpn tcpdump vim bzip2 bc e2fsprogs findutils gawk grep gzip menos make ntfs-3g openssl perl php psmisc psutils

samba36 sed tar unrar descompactar vnstat vsftpd wget whois zip ncftp

8, Listar pacotes instalados:

ipkg-opt list_installed

Não é recomendável criar pacotes no roteador devido à falta de recursos. Configure um ambiente de crosscompiling mips separado em Vmware / Vbox / KVM para este propósito.

Coisas necessárias:

- SO host Debian 7 wheezy de 64 bits

-OpenWrt-SDK-Linux-x86_64-1.tar.bz2 ->

openwrt.org/docs/guide-developer/obtain.fi…

Não perca tempo tentando compilar o SDK por conta própria, o SDK binário fornecido é bom o suficiente.

Crie um aplicativo helloworld simples

#include int main (void) {printf ("Inferno! O 'mundo, por que meu código não compila? / n / n"); return 0; }

./staging_dir_mipsel/mipsel-linux-uclibc/bin/gcc -lpthread hello.c -o hello

Se tudo der certo, você deve ter um executável mips agora:

olá: ELF executável LSB de 32 bits, MIPS, MIPS32 versão 1 (SYSV), vinculado dinamicamente (usa bibliotecas compartilhadas), não eliminado

Etapa 7: Software Arduino

Você pode baixar o código-fonte completo abaixo. É bastante simples, ele pode controlar os 2 relés e alguns plugues RC através de um rádio de 433Mhz. Você pode estendê-lo facilmente, por exemplo: adicionar mais interruptores rc.

Etapa 8: Encerramento e lista de tarefas

Encerramento e lista de tarefas
Encerramento e lista de tarefas

O WRT54G é um excelente hardware então todo o trabalho investido neste projeto valeu a pena, além do escudo NLD Wrtg poder ser usado com futuras versões de hardware.

Como o consumo de energia de um WRTG é menor do que o Raspberry PIs, alimentar o roteador com energia solar também pode ser uma boa atualização e com o Arduino podemos monitorar todos os detalhes do processo de carregamento solar (tensão da bateria, tensão do painel, consumo). Vou continuar a série WRTG com hacks solares mais tarde.

Seria ótimo encontrar uma maneira de programar o Arduino diretamente do WRTG (isso exigiria um método para reinicializar o Arduino).

Pessoas com 3D, habilidades Makerbot são mais que bem-vindas para projetar uma placa de cobertura personalizada (com os conectores da minha placa) para a frente ou redesenhar a parte frontal de plástico completa do roteador.

ATUALIZAÇÃO: para comemorar a transformação da arquitetura MIPS em código aberto, atualizei o tutorial sobre como criar cruzamentos de programas C simples com o WRTG.

Viva o MIPS!:)

tipo de sistema: Broadcom BCM5352 chip rev 0processor: 0 cpu model: BCM3302 V0.8 BogoMIPS: 199.47 instrução de espera: sem temporizadores de microssegundos: sim tlb_entries: 32 vetor de interrupção extra: sem watchpoint de hardware: sem exceções VCED: não disponíveis Exceções VCEI: não disponíveis

Recomendado: