Sommario:

NLDWRTG la scheda di espansione ULTIMATE WRT54G: 8 passaggi (con immagini)
NLDWRTG la scheda di espansione ULTIMATE WRT54G: 8 passaggi (con immagini)

Video: NLDWRTG la scheda di espansione ULTIMATE WRT54G: 8 passaggi (con immagini)

Video: NLDWRTG la scheda di espansione ULTIMATE WRT54G: 8 passaggi (con immagini)
Video: [FULL ALBUM] - Run The Jewels - RTJ4 2024, Dicembre
Anonim
NLDWRTG l'ULTIMA scheda di espansione WRT54G
NLDWRTG l'ULTIMA scheda di espansione WRT54G
NLDWRTG l'ULTIMA scheda di espansione WRT54G
NLDWRTG l'ULTIMA scheda di espansione WRT54G

Sto modificando i router WRT54G dal 2006, ma non ho mai avuto il tempo di progettare una scheda dedicata fino all'anno scorso. Questo hardware è ancora uno dei router wifi più hackerabili al momento in cui scrivo e merita di essere mantenuto in vita.

Passaggio 1: breve panoramica della serie Linksys WRT54G

Breve panoramica della serie Linksys WRT54G
Breve panoramica della serie Linksys WRT54G

en.wikipedia.org/wiki/Linksys_WRT54G_serie…

Ci sono molte versioni diverse sul mercato, quindi diamo un'occhiata che può essere modificata:

-WRT54G 2.0/2.1/2.2 -> Sebbene tutte le modifiche siano possibili, la vecchia grande scheda madre occupa tutto lo spazio nel case, se modifichi questa serie devi spostare il circuito fuori dalla scatola o creare un involucro completamente nuovo (srsly non ne vale la pena)

-WRT54G 4.0 Passato al nuovo SoC -> Questa è stata la prima scheda in cui è stata introdotta la scheda madre a forma di L quindi questa è la prima versione in cui puoi sfruttare il mio shield e inserirlo nel case

-WRT54GL 1.0/1.1 -> Linksys ha rilasciato il WRT54GL (il router più venduto di tutti i tempi) nel 2005 per supportare firmware di terze parti basato su Linux, dopo che la linea originale WRT54G è stata modificata da Linux a VxWorks, a partire dalla versione 5. Il WRT54GL è tecnicamente una riedizione della versione 4 WRT54G. Questo modello è il RE dei WRTG. Ci sono molti router di seconda mano sul mercato, quindi se puoi scegliere quale tipo acquistare, acquista SEMPRE il WRT54GL.

-WRT54G 5.0 e versioni successive -> Utilizza il sistema operativo VxWorks e memoria Flash ridotta; non compatibile con la maggior parte dei firmware di terze parti, sebbene l'utility "VxWorks killer" consenta il caricamento di alcuni firmware open source di terze parti su questa e versioni future. Linksys ha fatto una brutta svolta qui e sostanzialmente ha rovinato un prodotto completamente buono. Sebbene sia possibile modificarli, lo spazio sul router è così piccolo (2 MB) che può contenere solo il micro firmware DD-WRT che praticamente non può fare nulla oltre la normale funzionalità di routing (nessuna VPN, nessun smbfs/cifs, nessun NFS, no mmc, no ext2). Sono riuscito a creare kernel per questa serie e a spremere 1-1 modulo richiesto sul costo di eliminarne altri. NON vale il tuo tempo e impegno, NON acquistare questi router.

Con la serie WRT successiva, Linksys è passato all'architettura ARM, ad esempio il WRT1200 AC ha una CPU ARM dual-core da 1,3 GHz. Tuttavia, ho una brutta esperienza con questi router anche dopo aver provato più versioni di OpenWRT (ora LEDE), i router possono bloccarsi in modo casuale. Mi aspetto un tempo di attività di oltre 300 giorni dai dispositivi unix.

Passaggio 2: estensione della funzionalità

Estensione della funzionalità
Estensione della funzionalità

Ok, quindi cosa puoi fare con questo router:

1, aggiungi 2x porte seriali -> che può tornare utile se hai altri server in una posizione remota e vuoi connetterti al loro bios tramite linea seriale o altri router, interruttori che lo consentono

2, aggiungi 1 porta USB1.0 -> potrebbe essere utilizzata per collegare stampante, disco rigido esterno ecc. (Non ho mai fatto questa mod, quindi non farà parte della scrittura)

3, aggiungi una scheda SD esterna per l'archiviazione, questo può estendere la piccola memoria di archiviazione flash da 16 MB del router a 16/32/…+ GB. Non ho avuto problemi con l'utilizzo di queste dimensioni di schede SD e anche con l'utilizzo di schede CLASS 10 durevoli nuove di zecca. Se hai sperimentato qual è la limitazione delle carte per i modelli WRTG, lascia un commento in basso.

4, aggiungi un arduino per controllare la tua casa, relè, interruttori rc

L'aggiunta di un arduino essenzialmente apre una quantità illimitata di opzioni: controllo del robot, controllo di dispositivi a infrarossi in vista (TV, videoregistratori, DVD, proiettori, aria condizionata), collegamento di tonnellate di dispositivi a switch wireless a 433 Mhz economici, comunicazione con altri arduino, raspis, aggiungendo un Xbee ecc.

Sebbene tutto questo possa essere fatto con un Raspberry PI + Arduino ed estensioni, considero il router WRT54G più affidabile del raspis. Ho questi router in configurazioni simili con oltre 1 anno (!) di uptime, non potrei dire lo stesso del raspis dove il mio uptime più alto è stato di circa 240 giorni su un raspi 1, quindi la SDcard rinuncia al sistema, sebbene il C Il codice di controllo di Arduino è stato caricato in memoria quindi non ho dovuto affrettarmi con la sostituzione poiché il nodo di controllo era ancora perfettamente funzionante:))

Passaggio 3: elenco hardware

Elenco hardware
Elenco hardware

Allego il layout della scheda sia in formato SVG che EasyEda. Se vuoi realizzare il progetto avrai bisogno dei seguenti componenti: 1x LM7805 Regolatore di tensione

2x cappucci per vreg 1uF 10uF (10PCS Condensatori elettrolitici 25V 35V 50V 1uF~1000uF Vari valori e tensioni)

1x cavo a 4 pin dalla SDcar alla scheda (10 pezzi Jumper Wire 2/3/4/5/6/7 pin femmina a femmina cavo Dupont 20 cm per Arduino)

2x DIP051A7212D Relè Reed

1x presa maschio RS232 (20 pezzi 9 pin D-Sub DB9 Connettore PCB maschio ad angolo retto WT7n)

1x MAX 233 (10 pezzi Max233 Max233cpp Rs232 Rs-232 Driver/ricevitori Ic New X)

1x cavo connettore a 10 pin (5 pezzi 2 mm passo 2x5 pin 10 pin 10 fili IDC piatto cavo a nastro lunghezza 10 cm)

1x presa a 10 pin (20 pezzi 2,54 mm 2x5 pin 10 pin maschio dritto rivestito PCB connettore IDC intestazione)

1x intestazioni connettore (10pc 1 * 40 pin singola riga femmina 2,54 mm connettore frangibile da Arduino 2017)

1x scheda SD (può essere una vecchia grande SD o una nuova microsd con convertitore, con una dimensione inferiore a 32 GB dovrebbero funzionare, oltre a ciò non ho testato le schede)

1x convertitore TTL 3v5v (convertitore di livello logico 5x da 3,3 V a 5 V TTL bidirezionale per Arduino Raspberry pi)

1x fotoaccoppiatore 4n35

1x lettore di prese per slot per modulo scheda SD per lettura e scrittura MCU ARM Arduino

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

1x moduli RX e TX acquistali come confezione combinata (5 pezzi kit trasmettitore e ricevitore RF 433 Mhz per telecomando wireless Arduino)

Passaggio 4: progettazione dell'hardware

Progettazione hardware
Progettazione hardware
Progettazione hardware
Progettazione hardware
Progettazione hardware
Progettazione hardware

-Viti della scheda nella parte inferiore principale in plastica nera

-MAX233 è stato scelto rispetto al MAX232 quindi non saranno necessari cappucci aggiuntivi per il convertitore seriale PC->WRTG -Tutti i componenti sono in 1 riga, quindi è possibile tagliare un semplice rettangolo nella parte anteriore invece di praticare fori multipli, in alternativa una bella piastra di copertura (o un case WRTG completamente nuovo) potrebbe essere progettato con makerbot

-La presa micro USB arduino promicros rivolta verso il pannello frontale per la programmazione esterna.

-Basato su Arduino Promicro (arduino si alimenta dall'ingresso 12V del router WRT54G (attraverso un regolatore di tensione), la tensione a circuito aperto dell'adattatore è di circa 16V!)

-Il Promicro ha una vera usb, non spazzatura condivisa, quindi il /dev/tts/1 del WRTG può essere cablato all'UART hardware del Promicro

-Comunicazione seriale tramite /dev/tts/0 tra PC WRTG

-Ricevitore + trasmettitore RF 433Mhz (il trasmettitore potrebbe prendere 12V per una gamma più alta)

-Il trasmettitore e il ricevitore IR possono essere aggiunti al pannello frontale

-Altri LED possono essere aggiunti al pannello frontale (indicano Rx/Tx per RF, IR, indicatore di comunicazione router/ardu)

Avrei potuto progettare la scheda con un convertitore mini buck, ma ho adottato l'approccio del regolatore di tensione lineare poiché lo avevo in mano. Ho trovato 5V in qualche punto del circuito ma quando lo toccavo ha reso il router inutilizzabile (probabilmente non poteva fornire la quantità di corrente necessaria alla scheda arduino), quindi sono andato con un approccio vreg aggiuntivo.

Il convertitore TTL 3v5v è lì per fornire la corretta conversione della tensione (sto usando un modello arduino promicro 5V, che utilizza 5V sulla sua porta UART hardware, quindi è necessaria la conversione del livello di tensione). Tuttavia, in passato ho modificato i router aggiungendo Arduino Nanos, Micros senza il convertitore e non ho avuto problemi poiché la porta TTY del WRTG è tollerante a 5 V, ma ciò non significa che dovresti utilizzarlo da questa tensione.

Il 4n35 è stato introdotto anche per eliminare un po' di rumore proveniente dal lato PC esterno, non ho usato questo componente in passato ma può essere anche perché il portatile che ho usato durante i test era difettoso.

Il cavo del connettore a 10 pin si occupa della maggior parte delle connessioni, tuttavia devi assicurarti di installare correttamente le prese.

Come mostrato nell'immagine alla porta seriale

Pin 1: 3.3V + Pin 2: 3.3V <= I 2 pin all'estrema destra (più vicini ai LED) sono i POSITIVI collegati al lato destro del connettore sullo schermo NLDWRTG (vicino al regolatore di tensione LM7805)

Pin 9: GND + Pin 10: GND <= Lato opposto sono i collegamenti NEGATIVI al lato sinistro del connettore sulla schermatura NLDWRTG

Per il collegamento dei fili tra il lettore SDCARD e il WRTG seguire:

www.jbprojects.net/articles/wrt54gl_mods/

I relativi pin:

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

Passaggio 5: limitazioni

Limitazioni
Limitazioni

La CPU del WRT54GL non è la più potente (Broadcom BCM5352 @ 200 MHz), può essere overcloccata a 250 Mhz (non è raccomandato:)) quindi non aspettarti di eseguire SETI@HOME su di esso. Il router -solo- ha interfacce a 100mbit/s e, a differenza di quello che puoi trovare in molti posti, questo hardware *NON supporta le VLAN 802.1q*. È solo una semplice VLAN basata su porta, per favore non inserire il WRTG in una rete che trasporta VLAN, non può farlo.

Un'applicazione particolarmente utile è l'utilizzo del router come client VPN per connettersi a una posizione centrale. Sebbene sia perfettamente utilizzabile anche per il server VPN, non aspettarti molte prestazioni da esso.

Ecco alcuni dei miei risultati con un WRT54GL v1.1 utilizzando OpenVPN come client.

Throughput massimo del tunnel: 500 kbit/s verso il basso 50 kbit/s verso l'alto

Massime prestazioni di routing senza VPN da WAN -> LAN 28 mbit/s

Massime prestazioni NAT (Masquerade) senza VPN da WAN -> LAN 27 mbit/s

Ci sono ancora molte località con una larghezza di banda complessiva inferiore a queste (ISDN, Adsls, reti via cavo, satellite ecc.) Ciò che questo router può soddisfare perfettamente.

Di solito i problemi derivano dal mettere troppi client wireless su questi router. Ho visto molte configurazioni nel corso degli anni in caffè, hotel, ristoranti in cui lanciano un router wifi sul bancone e lo chiamano un giorno, aspettandosi che sia in grado di servire più di 10 persone. Tutto ciò che ottengono è un'esperienza wifi completamente inutilizzabile alla fine poiché la larghezza di banda teorica complessiva per questo router 802.11G è di 51 mbit/s e questo è per tutti, diciamo che il reale è di circa 30 mbit/s. Per 10 persone che sono 3mbit/s per utente nel migliore dei casi, il che non è abbastanza per le applicazioni affamate di larghezza di banda di oggi (streaming video/audio, pagine web 2.0 piene di immagini grandi ecc.).

Come ho affermato in precedenza, il punto di questo hack è il controllo remoto e questo non utilizzerebbe più di un paio di kbit/s di traffico attraverso una VPN.

Passaggio 6: software WRTG

Software WRTG
Software WRTG

Il firmware è costruito sulla versione migliore: DD-WRT v24-sp2 (08/12/10) std-nokaid (revisione SVN 14929) Ci sono altre immagini come la VPN che sacrifica il modulo ext2 per risparmiare spazio pur avendo mmc kernelmodulo (LoL). Optware 2 è un pacchetto di utilità fuori produzione ma ancora utile che estende la funzionalità di base DD-WRT:

-Fa una distribuzione linux di base dall'installazione di busybox storpiata.

-Fornisce bash e altre shell.

-Fornisce molte divinità come: htop, netcat, tcpdump, ngrep, mc

-Fornisce servizi server come: samba, asterisco, vsftpd, jabber server

Tuttavia, i pacchetti software sono vecchi, pieni di bug e vulnerabilità. La pubblicazione e l'immagine qui equivarrebbero a fornire un'installazione di Windows $ 98, quindi non pubblicherò ancora nulla ma scriverò passo dopo passo come configurare la scheda SD OptWare 2.

In futuro ho intenzione di creare una nuova distribuzione Linux (SnowGlobe Linux) con nuovi pacchetti per questo dispositivo e pubblicarla.

1, JFFS2 deve essere abilitato, non importa che non abbia spazio libero su di esso:

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

2, partizionamento SDCARD. Ecco un trucco intelligente:

14 GB o qualunque cosa vogliamo avere per la prima partizione dati per ddwrt 100-500 MB seconda partizione (EXT2) per il ripristino

Per esempio:

Disco /dev/sde: 14,5 GiB, 15523119104 byte, 30318592 settori

Unità: settori di 1 * 512 = 512 byte Dimensione settore (logico/fisico): 512 byte / 512 byte Dimensione I/O (minima/ottimale): 512 byte / 512 byte Tipo etichetta disco: dos Identificatore disco: 0x6ad48986 Avvio avvio dispositivo Fine Settori Dimensione ID Tipo /dev/sde1 2048 29362175 29360128 14G 83 Linux /dev/sde2 29362176 30318591 956416 467M 83 Linux

Crea filesystem:

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

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

Ottimizza i file system:

tune2fs -c0 -i0 -m0 /dev/sde1

tune2fs -c0 -i0 -m0 /dev/sde2

Solo la prima partizione verrà montata automaticamente dal sistema all'avvio! L'idea alla base della partizione di ripristino è che WRT54G non ha spazio per contenere un fdisk da nessun'altra parte. Quindi, se c'è un arresto non pulito e ci sono incongruenze del filesystem, l'unico modo per ripararlo è avere una copia di fdisk (e delle librerie richieste per l'avvio) su una seconda partizione che verrà montata solo occasionalmente come sola lettura per eseguire fsck se necessario. In caso contrario, la scheda dovrebbe essere estratta e inserita in un PC per la riparazione…

3, montaggio

Se inserisci una scheda già partizionata e formattata e wrtg si avvia correttamente, è molto probabile che la prima partizione venga montata automaticamente:

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

Opt deve essere montato ora:

mount -o bind /mmc/ /opt/

4, script di installazione di OWRT2

Prima di iniziare controlla se defgw, dns va tutto bene.

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

sh /tmp/optware-install.sh

Se non riesce a ottenere lo script è perché busybox wget fallisce. Funzionerà con wget di owrt, ma ehi, vuoi installare owrt …

L'output dovrebbe essere simile a:

Controllo della configurazione del sistema…

Utilizzo di 192.168.1.1 come gateway predefinito. Utilizzo dei seguenti nameserver: nameserver 192.168.1.30 Attenzione: il nameserver locale è diverso dal gateway! Controlla la configurazione o inserisci: sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf per correggere questo problema. Installazione del pacchetto uclibc-opt_0.9.28-13_mipsel.ipk … Connessione a ipkg.nslu2-linux.org[140.211.166.82]:80 uclibc-opt_0.9.28-12 100% |************ ***********************************| 832 KB 00:00:00 Aggiornamento ETA /opt/etc/ld.so.cache /opt/sbin/ldconfig: impossibile creare /opt/etc/ld.so.cache~ (nessun file o directory) Installazione del pacchetto ipkg-opt_0.99.163-9_mipsel.ipk … Connessione a ipkg.nslu2-linux.org[140.211.166.82]:80 ipkg-opt_0.99.163-9_ 100% |************** ***********************************| 75896 00:00:00 ETA Download https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Gonfiaggio https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Aggiornato elenco dei pacchetti disponibili in /opt/lib/ipkg/lists/optware Terminato con successo. Installazione di uclibc-opt (0.9.28-12) in /opt/… Download di https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… pacchetto uclibc-opt suggerisce di installare ipkg-opt Configurazione di uclibc-opt Aggiornamento di /opt/etc/ld.so.cache Terminato con successo. Installazione di ipkg-opt (0.99.163-9) in /opt/… Download di https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Configurazione di ipkg-opt terminato con successo.

5, errore di percorso:

DEVI esportare il percorso con:

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"

altrimenti ipkg non farà nulla!

6, verifica ipkg:

aggiornamento ipkg

Dovrebbe produrre:

Download

Inflazione https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Elenco aggiornato dei pacchetti disponibili in /opt/lib/ipkg/lists/optware Terminato con successo.

7, installa i pacchetti:

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

samba36 sed tar unrar unzip vnstat vsftpd wget whois zip ncftp

8, elenca i pacchetti installati:

ipkg-opt list_installed

La creazione di pacchetti sul router non è consigliata a causa della mancanza di risorse. Configurare un ambiente di crosscompilazione mips separato in Vmware/Vbox/KVM per questo scopo.

Cose necessarie:

-Sistema operativo host Debian 7 wheezy a 64 bit

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

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

Non perdere tempo a provare a compilare l'SDK da solo, l'SDK binario fornito è abbastanza buono.

Crea una semplice app Helloworld

#include int main(void) { printf("Diavolo! O mondo, perché il mio codice non viene compilato?\n\n"); restituisce 0; }

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

Se tutto va bene dovresti avere un eseguibile mips ora:

ciao: eseguibile ELF LSB a 32 bit, MIPS, MIPS32 versione 1 (SYSV), collegato dinamicamente (usa librerie condivise), non spogliato

Passaggio 7: software Arduino

Puoi scaricare il codice sorgente completo qui sotto. È abbastanza semplice, può controllare i 2 relè e alcune spine RC tramite radio a 433 Mhz. Puoi facilmente estenderlo, ad esempio: aggiungi più interruttori rc.

Passaggio 8: chiusura e lista delle cose da fare

Chiusura e lista delle cose da fare
Chiusura e lista delle cose da fare

Il WRT54G è un hardware eccellente, quindi tutto il lavoro investito in questo progetto ne è valsa la pena, inoltre lo shield NLD Wrtg potrebbe essere utilizzabile con future versioni hardware.

Poiché il consumo di energia di un WRTG è inferiore a quello dei Raspberry PI, anche l'alimentazione solare del router può essere un buon aggiornamento e con Arduino possiamo monitorare ogni dettaglio del processo di ricarica solare (tensione della batteria, tensione del pannello, consumo). Continuerò la serie WRTG con hack solari in seguito.

Trovare un modo per programmare Arduino direttamente dal WRTG sarebbe fantastico (questo richiederebbe un metodo per ripristinare Arduino).

Le persone con competenze 3D e Makerbot sono più che benvenute per progettare una piastra di copertura personalizzata (con i connettori della mia scheda) per la parte anteriore o riprogettare la parte anteriore in plastica completa del router.

AGGIORNAMENTO: Per celebrare l'architettura MIPS che diventa Open Source, ho aggiornato il tutorial con come crossbuild semplici programmi C al WRTG.

Viva i MIPS!:)

tipo di sistema: Broadcom BCM5352 chip rev 0processore: 0 modello cpu: BCM3302 V0.8 BogoMIPS: 199.47 istruzione di attesa: no timer microsecondi: si tlb_entries: 32 vettore di interrupt extra: no watchpoint hardware: no eccezioni VCED: non disponibile Eccezioni VCEI: non disponibile

Consigliato: