Indholdsfortegnelse:

NLDWRTG ULTIMATE WRT54G Expansion Board: 8 trin (med billeder)
NLDWRTG ULTIMATE WRT54G Expansion Board: 8 trin (med billeder)

Video: NLDWRTG ULTIMATE WRT54G Expansion Board: 8 trin (med billeder)

Video: NLDWRTG ULTIMATE WRT54G Expansion Board: 8 trin (med billeder)
Video: CNIT 123 Ch 9: Embedded Operating Systems (Part 1 of 2) 2024, November
Anonim
NLDWRTG ULTIMATE WRT54G udvidelseskort
NLDWRTG ULTIMATE WRT54G udvidelseskort
NLDWRTG ULTIMATE WRT54G udvidelseskort
NLDWRTG ULTIMATE WRT54G udvidelseskort

Jeg har modificeret WRT54G -routere siden 2006, men har aldrig haft tid til faktisk at designe et dedikeret bord til det før sidste år. Denne hardware er stadig en af de mest hackbare wifi -routere i skrivende stund og fortjener at blive holdt i live.

Trin 1: Kort oversigt over Linksys WRT54G -serien

Kort oversigt over Linksys WRT54G -serien
Kort oversigt over Linksys WRT54G -serien

da.wikipedia.org/wiki/Linksys_WRT54G_serie…

Der er masser af forskellige versioner på markedet, så lad os tage et kig, som kan ændres:

-WRT54G 2.0/2.1/2.2 -> Selvom alle mods er mulige, fylder det store gamle bundkort al plads i sagen, hvis du ændrer denne serie, skal du flytte dit kredsløb uden for boksen eller oprette et helt nyt kabinet (srsly ikke besværet værd)

-WRT54G 4.0 Skiftede til nyt SoC -> Dette var det første bord, hvor det L -formede bundkort blev introduceret, så dette er den første version, hvor du kan drage fordel af mit skjold og indsætte det i sagen

-WRT54GL 1.0/1.1-> Linksys frigav WRT54GL (den bedst sælgende router nogensinde) i 2005 for at understøtte tredjeparts firmware baseret på Linux, efter at den originale WRT54G-linje blev skiftet fra Linux til VxWorks, startende med version 5. WRT54GL er teknisk set en genudgivelse af version 4 WRT54G. Denne model er kongen af WRTG'er. Der er mange brugte routere på markedet, så hvis du har et valg, hvilken type du vil købe, skal du ALTID købe WRT54GL.

-WRT54G 5.0 og højere -> Bruger VxWorks OS og reduceret Flash -hukommelse; ikke kompatibel med de fleste tredjeparts firmware, selvom værktøjet "VxWorks killer" gør det muligt at indlæse nogle tredjeparts open source-firmware på denne og fremtidige versioner. Linksys lavede en dårlig omgang her og ødelagde i det væsentlige et helt godt produkt. Selvom det er muligt at ændre disse, er pladsen på routeren så lille (2MB), at den kun kan passe til DD-WRT mikro-firmware, som stort set ikke kan gøre noget ud over almindelig routingfunktionalitet (ingen VPN, ingen smbfs/cifs, ingen NFS, ingen mmc, ingen ext2). Det er lykkedes mig at oprette kerner til denne serie og presse 1-1 påkrævet modul ind på omkostningerne ved at tage andre ud. Det er IKKE din tid og kræfter værd, køb IKKE disse routere.

Med den senere WRT-serie skiftede Linksys til ARM-arkitektur, for eksempel har WRT1200 AC 1,3 GHz dual-core ARM cpu. Jeg har dog dårlig erfaring med disse routere, selv efter at have prøvet flere OpenWRT (nu LEDE) versioner, som routerne kan fryse tilfældigt. Jeg forventer 300+ dages oppetid fra Unix -enheder.

Trin 2: Udvidelse af funktionaliteten

Udvidelse af funktionaliteten
Udvidelse af funktionaliteten

Ok, hvilke hacks kan du gøre med denne router:

1, Tilføj 2x serielle porte -> som kan være praktisk, hvis du har andre servere på et fjernt sted, og du vil oprette forbindelse til deres bios via serielinje eller andre routere, swtiches, der tillader dette

2, Tilføj 1 USB1.0 -port -> kunne bruges til at tilslutte printer, ekstern harddisk osv. (Jeg har aldrig gjort denne mod, så det vil ikke være en del af skrivningen)

3, Tilføj eksternt SD -kort til opbevaring, dette kan udvide din routers lille 16 MB flash -hukommelse til 16/32/…+GB. Jeg havde ikke noget problem med at bruge disse SD -kortstørrelser og heller ikke noget problem med at bruge helt nye holdbare CLASS 10 -kort. Hvis du har eksperimenteret med, hvad der er begrænsningen af kort pr. WRTG -modeller, skal du efterlade en kommentar herunder.

4, Tilføj en arduino til at styre dit hjem, relæer, rswitches

Tilføjelse af en arduino åbner i det væsentlige en ubegrænset mængde muligheder: robotstyring, styring af infrarøde enheder i syne (fjernsyn, videobåndoptagere, dvd'er, projektorer, aircondition), tilslutning af tonsvis af enheder til billige 433Mhz trådløse switches, kommunikation med andre arduinoer, raspis, tilføjelse af en Xbee osv. osv.

Selvom alt dette kunne gøres med en Raspberry PI + Arduino og udvidelser, anser jeg WRT54G -routeren mere pålidelig end raspis. Jeg har disse routere i lignende konfigurationer med over 1 års (!) Oppetid, jeg kunne ikke sige det samme om raspierne, hvor min højeste oppetid var omkring 240 dage på en raspi 1, så gav SD -kortet op på systemet, selvom C Arduino -kontrolkoden blev indlæst i hukommelsen, så jeg behøvede ikke at skynde mig med udskiftningen, da kontrolnoden stadig var perfekt funktionel:))

Trin 3: Hardware -liste

Hardware liste
Hardware liste

Jeg vedhæfter tavlelayoutet i både SVG- og EasyEda -format. Hvis du vil bygge projektet, skal du bruge følgende komponenter: 1x LM7805 Spændingsregulator

2x hætter til vreg 1uF 10uF (10PCS elektrolytkondensatorer 25V 35V 50V 1uF ~ 1000uF forskellig værdi og spænding)

1x 4 -polet kabel fra SDcar til brættet (10 stk. Jumper Wire 2/3/4/5/6/7Pin Kvinde til Kvinde Dupont -kabel 20cm til Arduino)

2x DIP051A7212D Reed Relæer

1x RS232-hanstik (20 stk. 9-polet D-Sub DB9-mandlig retvinklet printkortstik WT7n)

1x MAX 233 (10 stk. Max233 Max233cpp Rs232 Rs-232 driver/modtagere Ic Ny X)

1x 10 pin stik kabel (5 stk. 2 mm pitch 2x5 Pin 10 Pin 10 Wire IDC Flat Ribbon Cable Length 10CM)

1x 10 -polet stikkontakt (20 stk. 2,54 mm 2x5 ben 10 -pins lige mandlig indhyllet printkortboks Header IDC -stik)

1x stikhoveder (10 stk. 1*40Pin enkelt række kvindelig 2,54 mm brydeløs hovedstik fra Arduino 2017)

1x SD -kort (kan være gammelt stort SD eller nyt microsd med konverter, under 32 GB i størrelse skal de fungere, ud over at jeg ikke testede kort)

1x 3v5v TTL converter (5x Logic Level Converter 3.3V to 5V TTL Bi-Directional for Arduino Raspberry pi)

1x 4n35 optokobler

1x SD -kortmodul Slot Socket Reader Til Arduino ARM MCU Læs og skriv

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

1x RX- og TX -moduler køber dem som en kombinationspakke (5 stk. 433Mhz RF -sender og modtagersæt til Arduino trådløs fjernbetjening)

Trin 4: Hardware design

Hardware design
Hardware design
Hardware design
Hardware design
Hardware design
Hardware design

-Board skruer ind i hoveddelen af sort plastik bundplade

-MAX233 blev valgt frem for MAX232, så der vil ikke være behov for yderligere hætter til PC-> WRTG seriel konverter -Alle komponenter er i 1 linje, så et enkelt rektangel kan skæres foran i stedet for at bore flere huller, alternativt en flot dækplade (eller en helt ny WRTG -sag) kunne designes med makerbot

-Arduino promicros mikro USB -stik vendt mod frontpanelet til ekstern programmering.

-Baseret på Arduino Promicro (arduino føder fra 12V -indgangen på WRT54G -routeren (via en spændingsregulator), adapterens åbne kredsløbsspænding er omkring 16V!)

-Promicro har ægte usb, ikke delt affald, så WRTG'erne/dev/tts/1 kan forbindes til Promicros hardware UART

-Seriel kommunikation via/dev/tts/0 mellem PC WRTG

-RF 433Mhz modtager + sender (sender kan tage 12V for højere område)

-IR sender og modtager kan tilføjes til frontpanelet

-Yderligere LED'er kan tilføjes til frontpanelet (angiv Rx/Tx for RF, IR, router/ardu comm indikator)

Jeg kunne have designet kortet med en mini buck converter, men tog den lineære spændingsregulator tilgang, da jeg havde det i hånden. Jeg har fundet 5V et eller andet sted i kredsløbet, men da jeg trykkede på det gjorde routeren ubrugelig (sandsynligvis ikke kunne levere den mængde strøm, arduino -kortet skulle bruge), derfor gik jeg med en ekstra vreg -tilgang.

3v5v TTL -konverteren er der for at levere den korrekte volatage -konvertering (jeg bruger en 5V arduino promicro -model, som bruger 5V på sin hardware UART -port, derfor er spændingsniveaukonvertering påkrævet). Men jeg har tidligere modificeret routere tilføjet Arduino Nanos, Micros uden konverteren og havde ikke et problem, da WRTGs TTY -port er 5V tolerant, men det betyder ikke, at du skal betjene den fra denne spænding.

4n35 blev også introduceret for at slippe af med støj fra den eksterne pc -side, jeg brugte ikke denne komponent tidligere, men det kan også skyldes, at den bærbare computer, jeg har brugt under testene, var defekt.

10pin -stikket tager sig af de fleste forbindelser, men du skal sørge for at installere stikkontakterne korrekt.

Som det er vist på billedet ved den serielle port

Pin 1: 3.3V + Pin 2: 3.3V <= De 2 yderste højre ben (tættere på lysdioderne) er POSITIVE forbinder til højre side af stikket på NLDWRTG -skærmen (tæt på LM7805 spændingsregulatoren)

Pin 9: GND + Pin 10: GND <= Modsat side er NEGATIVE forbundet til venstre side af stikket på NLDWRTG -skjoldet

Følg følgende for at forbinde ledningerne mellem SDCARD -læseren og WRTG:

www.jbprojects.net/articles/wrt54gl_mods/

De relevante stifter:

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

Trin 5: Begrænsninger

Begrænsninger
Begrænsninger

WRT54GLs CPU er ikke den stærkeste (Broadcom BCM5352 @ 200 MHz), kan overklokkes til 250Mhz (det anbefales ikke:)), så forvent ikke at køre SETI @ HOME på den. Routeren - kun- har 100mbit/s grænseflader og i modsætning til hvad du kan finde på mange steder, understøtter denne hardware *IKKE 802.1q VLAN *. Det er kun en simpel portbaseret VLAN. Venligst lad ikke WRTG'en være i et netværk, der transporterer VLAN'er, det kan ikke gøre det.

En særlig nyttig applikation er at bruge routeren som VPN -klient til at oprette forbindelse til en central placering. Selvom det også er perfekt brugbart til VPN -server, skal du ikke forvente meget ydelse ud af det.

Her er nogle af mine resultater med en WRT54GL v1.1, der bruger OpenVPN som en klient.

Maksimal tunnelgennemstrømning: 500 kbit/s ned 50 kbit/s op

Maksimal routingydelse uden VPN fra WAN -> LAN 28 mbit/s

Maksimal NAT (Masquerade) ydeevne uden VPN fra WAN -> LAN 27 mbit/s

Der er stadig mange steder med lavere samlet båndbredde end disse (ISDN'er, Adsls, kabelnetværk, satellit osv.), Hvad denne router perfekt kan tilfredsstille.

Normalt kommer problemerne fra at lægge alt for mange trådløse klienter på disse routere. Jeg så mange opsætninger i årenes løb i kaffe, hoteller, restauranter, hvor de smider en wifi -router på tælleren og kalder den en dag og forventede, at den kunne servere 10+ mennesker. Det eneste, de får, er en helt ubrugelig wifi -oplevelse i slutningen, da den samlede teoretiske båndbredde for denne 802.11G -router er 51 mbit/s, og det er for alle, lad os sige, at den virkelige er omkring 30mbit/s. For 10 personer, der er 3mbit/s pr. Bruger i bedste fald, hvilket ikke er nok til dagens båndbredde sultne (video/lydstreaming, web 2.0 sider fulde af store billeder osv.) Applikationer.

Som jeg sagde tidligere, er pointen med dette hack fjernbetjening, og det ville ikke bruge mere end et par kbit/s trafik gennem en VPN.

Trin 6: WRTG -software

WRTG -software
WRTG -software

Firmwaren er bygget på den bedste version: DD-WRT v24-sp2 (08/12/10) std-nokaid (SVN revision 14929) Der er andre billeder som VPN, som ofrer ext2-modulet for at spare plads, mens der stadig er mmc kernelmodul (LoL). Optware 2 er en afbrudt, men stadig nyttig hjælpepakke, der udvider den grundlæggende DD-WRT-funktionalitet:

-Det laver en grundlæggende linux -distro fra den forkrøblede nedtaget travlbox -installation.

-Giver bash og andre skaller.

-Giver mange gudinder som: htop, netcat, tcpdump, ngrep, mc

-Giver servertjenester som: samba, stjerne, vsftpd, jabber -server

Men softwarepakkerne er gamle, redet med fejl og sårbarheder. Publicering og billede her ville være det samme som at levere en Windows $ 98 -installation, derfor vil jeg ikke offentliggøre noget endnu, men skrive det ned trin for trin, hvordan du konfigurerer dit OptWare 2 SDCard.

I fremtiden planlægger jeg at lave en ny linux distro (SnowGlobe Linux) med friske pakker til denne enhed og udgive den.

1, skal JFFS2 være aktiveret, uanset at den ikke har ledig plads på den:

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

2, SDCARD -partitionering. Her er et smart trick:

14 GB eller hvad vi nu vil have til den første datapartition til ddwrt 100-500mb anden partition (EXT2) til gendannelse

For eksempel:

Disk /dev /sde: 14,5 GiB, 15523119104 bytes, 30318592 sektorer

Enheder: sektorer på 1 * 512 = 512 bytes Sektorstørrelse (logisk/fysisk): 512 bytes/512 bytes I/O -størrelse (minimum/optimal): 512 bytes/512 bytes Diskmærketype: dos Diskidentifikator: 0x6ad48986 Enhedsstart Start slut Sektorer Størrelse Id Type /dev /sde1 2048 29362175 29360128 14G 83 Linux /dev /sde2 29362176 30318591 956416 467M 83 Linux

Opret filsystemer:

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

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

Indstil filsystemer:

tune2fs -c0 -i0 -m0 /dev /sde1

tune2fs -c0 -i0 -m0 /dev /sde2

Kun den første partition vil blive automatiseret af systemet ved start! Ideen bag gendannelsespartitionen er, at WRT54G ikke har plads til at holde en fdisk andre steder. Så hvis der er en uren lukning, og der er uoverensstemmelser i filsystemet, er den eneste måde at reparere det på at have en kopi af fdisk (og krævet libs for at starte) på en anden partition, som kun vil blive monteret lejlighedsvis som skrivebeskyttet for at køre fsck hvis havde brug for. Ellers skulle kortet tages ud og sættes i en pc til reparation …

3, Montering

Hvis du har indsat et allerede partitioneret, formateret kort og wrtg -støvler korrekt, er det mest sandsynligt, at den første partition vil blive automatiseret:

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

Opt skal bindes monteret nu:

mount -o bind /mmc / /opt /

4, OWRT2 installerings script

Inden du begynder at kontrollere, om defgw, dns alt godt.

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

sh /tmp/optware-install.sh

Hvis det ikke kan få scriptet, skyldes det, at busybox wget mislykkes. Det fungerer med owrts wget, men hey, du vil installere owrt …

Output skal se sådan ud:

Kontrollerer systemkonfiguration …

Brug af 192.168.1.1 som standardgateway. Brug af følgende navneserver: navneserver 192.168.1.30 Advarsel: lokal navneserver er anderledes end gateway! Kontroller config eller indtast: sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf for at rette dette. Installation af pakke uclibc-opt_0.9.28-13_mipsel.ipk… Opretter forbindelse til ipkg.struction2-linux.org [140.211.166.82]: 80 uclibc-opt_0.9.28-12 100% | ************* ************************************ | 832 KB 00:00:00 ETA Opdatering /opt/etc/ld.so.cache/opt/sbin/ldconfig: kan ikke oprette /opt/etc/ld.so.cache~ (Ingen sådan fil eller bibliotek) Installation af pakke ipkg-opt_0.99.163-9_mipsel.ipk… Opretter forbindelse til ipkg.struction2-linux.org [140.211.166.82]: 80 ipkg-opt_0.99.163-9_ 100% | *************** ********************************* | 75896 00:00:00 ETA Download https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Oppustning https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Opdateret liste over tilgængelige pakker i/opt/lib/ipkg/lists/optware Afsluttet. Installation af uclibc-opt (0.9.28-12) til/opt/… Downloading af https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… pakke uclibc-opt foreslår installation af ipkg-opt Konfiguration af uclibc-opt Opdatering /opt/etc/ld.so.cache Afsluttet. Installation af ipkg-opt (0.99.163-9) til/opt/… Downloader https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Konfiguration af ipkg-opt Afsluttet.

5, Path bug:

Du SKAL eksportere stien med:

eksport 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"

ellers gør ipkg ingenting!

6, Bekræft ipkg:

ipkg opdatering

Skal output:

Downloader

Oppustning af https://ipkg.struction2-linux.org/feeds/optware/ddwrt/c… Opdateret liste over tilgængelige pakker i/opt/lib/ipkg/lists/optware Afsluttet.

7, Installer pakker:

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

samba36 sed tar unrar unzip vnstat vsftpd wget whois zip ncftp

8, liste installerede pakker:

ipkg-opt list_installeret

Det anbefales ikke at bygge pakker på routeren på grund af mangel på ressourcer. Opsæt separate mips crosscompiling miljø i Vmware/Vbox/KVM til dette formål.

Ting der er nødvendige:

-Debian 7 hvæsende 64bit vært OS

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

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

Spild ikke tid på at prøve at kompilere SDK på egen hånd, den medfølgende binære SDK er god nok.

Byg en simpel helloworld -app

#include int main (void) {printf ("Helvede! O 'verden, hvorfor vil min kode ikke kompilere? / n / n"); returnere 0; }

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

Hvis alt går rigtigt, skal du have en mips eksekverbar nu:

hej: ELF 32-bit LSB eksekverbar, MIPS, MIPS32 version 1 (SYSV), dynamisk forbundet (bruger delt libs), ikke fjernet

Trin 7: Arduino -software

Du kan downloade den fulde kildekode herunder. Det er ret simpelt, det kan styre de 2 relæer og nogle RC -stik via 433Mhz radio. Du kan nemt udvide det f.eks.: Tilføje flere rc -switche.

Trin 8: Lukning og opgaveliste

Lukning og opgaveliste
Lukning og opgaveliste

WRT54G er en fremragende hardware, så alt det arbejde, der er investeret i dette projekt, er det hele værd, udover NLD Wrtg -skjoldet kan være brugbart med fremtidige hardwareversioner.

Da strømforbruget for en WRTG er lavere end Raspberry PI'erne, kan solenergi til routeren også være en god opgradering, og med Arduino kan vi overvåge alle detaljer i solopladningsprocessen (batterispænding, panelspænding, forbrug). Jeg vil fortsætte WRTG -serien med solhacks senere.

At finde en måde at programmere Arduino direkte fra WRTG ville være fantastisk (dette ville kræve en metode til nulstilling af Arduino).

Mennesker med 3D, Makerbot -færdigheder er mere end velkomne til at designe en brugerdefineret dækplade (med stik på mit bord) til fronten eller redesigne hele den forreste plastparti af routeren.

OPDATERING: For at fejre, at MIPS -arkitekturen blev Open Source, har jeg opdateret selvstudiet med, hvordan man krydsbygger simple C -programmer til WRTG.

Længe leve MIPS!:)

systemtype: Broadcom BCM5352 chip rev 0processor: 0 cpu model: BCM3302 V0.8 BogoMIPS: 199,47 venteanvisning: ingen mikrosekundstimere: ja tlb_entries: 32 ekstra afbrydelsesvektor: ingen hardware -overvågningspunkt: ingen VCED -undtagelser: ikke tilgængelige VCEI -undtagelser: ikke tilgængelig

Anbefalede: