Inhoudsopgave:

NLDWRTG het ULTIMATE WRT54G uitbreidingsbord - Ajarnpa
NLDWRTG het ULTIMATE WRT54G uitbreidingsbord - Ajarnpa

Video: NLDWRTG het ULTIMATE WRT54G uitbreidingsbord - Ajarnpa

Video: NLDWRTG het ULTIMATE WRT54G uitbreidingsbord - Ajarnpa
Video: How to Upgrade Router Firmware - WRT54GL 2024, Juli-
Anonim
NLDWRTG het ULTIEME WRT54G-uitbreidingsbord
NLDWRTG het ULTIEME WRT54G-uitbreidingsbord
NLDWRTG het ULTIEME WRT54G-uitbreidingsbord
NLDWRTG het ULTIEME WRT54G-uitbreidingsbord

Ik modificeer WRT54G-routers sinds 2006, maar had tot vorig jaar nooit tijd om er een speciaal bord voor te ontwerpen. Deze hardware is nog steeds een van de meest hackbare wifi-routers op het moment van schrijven en verdient het om in leven te worden gehouden.

Stap 1: Kort overzicht van de Linksys WRT54G-serie

Kort overzicht van de Linksys WRT54G-serie
Kort overzicht van de Linksys WRT54G-serie

en.wikipedia.org/wiki/Linksys_WRT54G_serie…

Er zijn veel verschillende versies op de markt, dus laten we eens kijken die kunnen worden gewijzigd:

-WRT54G 2.0/2.1/2.2 -> Hoewel alle mods mogelijk zijn, neemt het grote oude moederbord alle ruimte in de behuizing in beslag, als je deze serie wijzigt, moet je je circuit buiten de doos verplaatsen of een volledig nieuwe behuizing maken (srsly niet de moeite waard)

-WRT54G 4.0 Overgeschakeld naar nieuwe SoC -> Dit was het eerste bord waarop het L-vormige moederbord werd geïntroduceerd, dus dit is de eerste versie waar je kunt profiteren van mijn schild en het in de behuizing kunt plaatsen

-WRT54GL 1.0/1.1 -> Linksys heeft in 2005 de WRT54GL (de best verkochte router aller tijden) uitgebracht om firmware van derden op basis van Linux te ondersteunen, nadat de originele WRT54G-lijn was overgeschakeld van Linux naar VxWorks, te beginnen met versie 5. De WRT54GL is technisch gezien een heruitgave van de versie 4 WRT54G. Dit model is de KONING van de WRTG's. Er zijn veel tweedehands routers op de markt, dus als je de keuze hebt welk type je wilt kopen, koop dan ALTIJD de WRT54GL.

-WRT54G 5.0 en hoger -> Gebruikt VxWorks OS en verminderd Flash-geheugen; niet compatibel met de meeste firmware van derden, hoewel het hulpprogramma "VxWorks killer" het mogelijk maakt om sommige open source-firmware van derden op deze en toekomstige versies te laden. Linksys maakte hier een slechte wending en verpestte in wezen een volledig goed product. Hoewel het mogelijk is om deze te wijzigen, is de ruimte op de router zo klein (2 MB) dat er alleen de DD-WRT-microfirmware in past, die vrijwel niets kan doen buiten de reguliere routeringsfunctionaliteit (geen VPN, geen smbfs/cifs, geen NFS, geen mmc, geen ext2). Ik ben erin geslaagd om kernels voor deze serie te maken en de 1-1 vereiste module erin te persen ten koste van het uitschakelen van anderen. Het is uw tijd en moeite NIET waard, koop deze routers NIET.

Met de latere WRT-serie schakelde Linksys over op ARM-architectuur, zo heeft de WRT1200 AC een 1,3 GHz dual-core ARM-cpu. Ik heb echter slechte ervaringen met deze routers, zelfs na het uitproberen van meerdere OpenWRT (nu LEDE) versies kunnen de routers willekeurig vastlopen. Ik verwacht 300+ dagen uptime van Unix-apparaten.

Stap 2: De functionaliteit uitbreiden

De functionaliteit uitbreiden
De functionaliteit uitbreiden

Ok dus welke hacks kun je doen met deze router:

1, voeg 2x seriële poorten toe -> wat handig kan zijn als je andere servers op een externe locatie hebt en je wilt verbinding maken met hun bios via een seriële lijn of andere routers, schakelaars die dit toestaan

2, voeg 1 USB1.0-poort toe -> kan worden gebruikt om een printer, externe harde schijf enz. Aan te sluiten (ik heb deze mod nooit gedaan, dus het zal geen deel uitmaken van het schrijven)

3. Voeg een externe SD-kaart toe voor opslag, dit kan het kleine 16 MB flash-opslaggeheugen van uw router uitbreiden tot 16/32/…+GB. Ik had geen probleem met het gebruik van dit formaat SD-kaarten en ook geen probleem met het gebruik van gloednieuwe duurzame KLASSE 10-kaarten. Als je hebt geëxperimenteerd met de limiet van kaarten per WRTG-modellen, laat dan hieronder een reactie achter.

4, voeg een arduino toe om je huis, relais, rcswitches te bedienen

Het toevoegen van een arduino opent in wezen een onbeperkt aantal opties: robotbesturing, het besturen van infraroodapparaten in zicht (tv's, videorecorders, dvd's, projectoren, airconditioning), het aansluiten van tonnen apparaten op goedkope 433Mhz draadloze schakelaars, communiceren met andere arduino's, raspis, een Xbee toevoegen enz enz.

Hoewel dit allemaal zou kunnen met een Raspberry PI + Arduino en extensies, beschouw ik de WRT54G-router betrouwbaarder dan de raspis. Ik heb deze routers in vergelijkbare configuraties met meer dan 1 jaar (!) uptime, ik kan niet hetzelfde zeggen over de raspis waar mijn hoogste uptime ongeveer 240 dagen was op een raspi 1 en de SD-kaart geeft het systeem op, hoewel de C Arduino-besturingscode werd in het geheugen geladen, dus ik hoefde me niet te haasten met de vervanging omdat het besturingsknooppunt nog steeds perfect functioneel was:))

Stap 3: Hardwarelijst

Hardwarelijst
Hardwarelijst

Ik voeg de bordlay-out toe in zowel SVG- als EasyEda-indeling. Als je het project wilt bouwen, heb je de volgende componenten nodig: 1x LM7805 Spanningsregelaar

2x caps voor vreg 1uF 10uF (10PCS Elektrolytische Condensatoren 25V 35V 50V 1uF ~ 1000uF Diverse Waarde en Spanning)

1x 4-pins kabel van de SDcar naar het bord (10st Jumper Wire 2/3/4/5/6/7Pin Vrouw-naar-vrouw Dupont-kabel 20 cm voor Arduino)

2x DIP051A7212D Reed-relais

1x RS232 mannelijke aansluiting (20 stuks 9-pins D-Sub DB9 mannelijke haakse PCB-connector WT7n)

1x MAX 233 (10st Max233 Max233cpp Rs232 Rs-232 driver/ontvangers Ic nieuwe X)

1x 10-pins connectorkabel (5 stuks 2 mm steek 2x5 pin 10 pins 10 draads IDC platte lintkabel lengte 10 cm)

1x 10-pins socket (20 stuks 2,54 mm 2x5 pin 10-pins rechte mannelijke gehulde PCB-boxheader IDC-connector)

1x Connector headers (10 st 1*40Pin Enkele Rij Vrouwelijke 2.54mm Breekbare Header Connector fr Arduino 2017)

1x SD-kaart (kan een oude grote SD zijn of een nieuwe microsd met converter, kleiner dan 32 GB zouden ze moeten werken, daarbuiten heb ik geen kaarten getest)

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

1x 4n35 optocoupler

1x SD-kaartmodule Slot Socket-lezer voor Arduino ARM MCU Lezen en schrijven

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

1x RX- en TX-modules koop ze als een combopakket (5 stuks 433Mhz RF-zender en -ontvangerkit voor Arduino draadloze afstandsbediening)

Stap 4: Hardware-ontwerp

Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp
Hardware-ontwerp

-Boardschroeven in het belangrijkste zwarte plastic onderste deel van de plank

-MAX233 werd gekozen boven de MAX232 dus er zijn geen extra doppen nodig voor de PC->WRTG seriële converter -Alle componenten zitten in 1 lijn zodat een simpele rechthoek aan de voorkant kan worden gesneden in plaats van meerdere gaten te boren, alternatief een mooie afdekplaat (of een geheel nieuwe WRTG-behuizing) kan worden ontworpen met makerbot

-De arduino promicros micro-USB-aansluiting tegenover het voorpaneel voor externe programmering.

-Gebaseerd op Arduino Promicro (arduino wordt gevoed via de 12V-ingang van de WRT54G-router (via een spanningsregelaar), de nullastspanning van de adapter is ongeveer 16V!)

-De Promicro heeft echte usb, geen gedeelde rommel, dus de /dev/tts/1 van de WRTG kan worden aangesloten op de hardware-UART van de Promicro

-Seriële communicatie via /dev/tts/0 tussen PC WRTG

-RF 433Mhz ontvanger + zender (zender kan 12V nodig hebben voor hoger bereik)

-IR-zender en -ontvanger kunnen aan het voorpaneel worden toegevoegd

-Extra LED's kunnen aan het voorpaneel worden toegevoegd (geef Rx/Tx aan voor RF, IR, router/ardu comm-indicator)

Ik had het bord kunnen ontwerpen met een mini-buck-converter, maar nam de lineaire spanningsregelaarbenadering omdat ik die in de hand had. Ik heb een bepaald punt van 5V in het circuit gevonden, maar toen ik erop tikte, werd de router onbruikbaar (kon waarschijnlijk niet de hoeveelheid stroom leveren die het arduino-bord nodig had), daarom ging ik met een extra vreg-aanpak.

De 3v5v TTL-converter is er om de juiste volatage-conversie te bieden (ik gebruik een 5V arduino promicro-model, dat 5V gebruikt op zijn hardware UART-poort, daarom is conversie van het spanningsniveau vereist). Ik heb in het verleden echter routers gemodificeerd door Arduino Nanos, Micros toe te voegen zonder de converter en had geen probleem omdat de TTY-poort van de WRTG 5V tolerant is, maar dit betekent niet dat je hem vanaf deze spanning moet bedienen.

De 4n35 is ook geïntroduceerd om wat ruis van de externe pc-kant weg te werken, ik heb dit onderdeel in het verleden niet gebruikt, maar het kan ook zijn omdat de laptop die ik tijdens de tests heb gebruikt defect was.

De 10-pins connectorkabel zorgt voor de meeste verbindingen, maar u moet ervoor zorgen dat u de stopcontacten correct installeert.

Zoals op de afbeelding op de seriële poort wordt getoond:

Pin 1: 3.3V + Pin 2: 3.3V <= De 2 uiterst rechtse pinnen (dichter bij de LED's) zijn de POSITIEVE aansluitingen aan de rechterkant van de connector op het NLDWRTG-schild (dicht bij de LM7805 spanningsregelaar)

Pin 9: GND + Pin 10: GND <= Aan de andere kant zitten de NEGATIEVE aansluitingen aan de linkerkant van de connector op het NLDWRTG-schild

Volg voor het aansluiten van de draden tussen de SDCARD-lezer en de WRTG:

www.jbprojects.net/articles/wrt54gl_mods/

De relevante pinnen:

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

Stap 5: Beperkingen

Beperkingen
Beperkingen

De CPU van de WRT54GL is niet de sterkste (Broadcom BCM5352 @ 200 MHz), kan worden overklokt naar 250 Mhz (het wordt niet aanbevolen:)), dus verwacht niet dat SETI@HOME erop draait. De router heeft -slechts- 100mbit/s interfaces en in tegenstelling tot wat je op veel plaatsen aantreft, ondersteunt deze hardware * GEEN 802.1q VLAN's*. Het is slechts een eenvoudig op poorten gebaseerd VLAN, plaats de WRTG alstublieft niet in een netwerk dat VLAN's transporteert, het kan het niet.

Een bijzonder nuttige toepassing is het gebruik van de router als VPN-client om verbinding te maken met een centrale locatie. Hoewel het ook perfect bruikbaar is voor VPN-servers, verwacht er niet veel prestaties van.

Hier zijn enkele van mijn resultaten met een WRT54GL v1.1 met OpenVPN als client.

Maximale tunneldoorvoer: 500 kbit/s omlaag 50 kbit/s omhoog

Maximale routeringsprestaties zonder VPN van WAN -> LAN 28 mbit/s

Maximale NAT (Masquerade) prestaties zonder VPN van WAN -> LAN 27 mbit/s

Er zijn nog steeds veel locaties met een lagere totale bandbreedte dan deze (ISDN's, adsl's, kabelnetwerken, satelliet enz.) waar deze router perfect aan kan voldoen.

Meestal komen de problemen voort uit het plaatsen van veel te veel draadloze clients op deze routers. Ik heb in de loop der jaren veel opstellingen gezien in koffie, hotels, restaurants waar ze één wifi-router op het aanrecht gooien en het een dag noemen, in de verwachting dat het 10+ mensen kan bedienen. Het enige wat ze krijgen is een volledig onbruikbare wifi-ervaring aan het einde, aangezien de totale theoretische bandbreedte voor deze 802.11G-router 51 mb/s is en dat is voor iedereen, laten we zeggen dat de werkelijke bandbreedte rond de 30mbit/s ligt. Voor 10 personen is dat in het beste geval 3mbit/s per gebruiker, wat nergens genoeg is voor de hedendaagse bandbreedtehongerige toepassingen (video/audiostreaming, web 2.0-pagina's vol grote foto's enz.).

Zoals ik eerder al zei, is het punt van deze hack afstandsbediening en dat zou niet meer dan een paar kbit/s-verkeer via een VPN gebruiken.

Stap 6: WRTG-software

WRTG-software
WRTG-software

De firmware is gebouwd op de beste versie: DD-WRT v24-sp2 (08/12/10) std-nokaid (SVN-revisie 14929) Er zijn andere afbeeldingen, zoals de VPN die de ext2-module opoffert om ruimte te besparen terwijl hij nog steeds de mmc heeft kernelmodule (LoL). Optware 2 is een stopgezet maar nog steeds nuttig hulpprogramma dat de basisfunctionaliteit van DD-WRT uitbreidt:

-Het maakt een standaard Linux-distro van de verlamde drukke box-installatie.

-Biedt bash en andere shells.

-Biedt veel goddies zoals: htop, netcat, tcpdump, ngrep, mc

-Biedt serverdiensten zoals: samba, asterisk, vsftpd, jabber-server

De softwarepakketten zijn echter oud en zitten vol met bugs en kwetsbaarheden. Het publiceren en de afbeelding hier zou hetzelfde zijn als het aanbieden van een installatie van Windows $ 98, daarom zal ik nog niets publiceren, maar stap voor stap opschrijven hoe je je OptWare 2 SD-kaart instelt.

In de toekomst ben ik van plan om een nieuwe linux-distro (SnowGlobe Linux) te maken met nieuwe pakketten voor dit apparaat en dat te publiceren.

1, JFFS2 moet zijn ingeschakeld, het maakt niet uit dat er geen vrije ruimte op staat:

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

2, SDCARD-partitionering. Hier is een slimme truc:

14 GB of wat we maar willen hebben voor de eerste gegevenspartitie voor ddwrt 100-500 MB tweede partitie (EXT2) voor herstel

Bijvoorbeeld:

Schijf /dev/sde: 14,5 GiB, 15523119104 bytes, 30318592 sectoren

Eenheden: sectoren van 1 * 512 = 512 bytes Sectorgrootte (logisch/fysiek): 512 bytes / 512 bytes I/O-grootte (minimum/optimaal): 512 bytes / 512 bytes Disklabeltype: dos Schijfidentificatie: 0x6ad48986 Device Boot Start End Sectoren Grootte Id Type /dev/sde1 2048 29362175 29360128 14G 83 Linux /dev/sde2 29362176 30318591 956416 467M 83 Linux

Bestandssystemen aanmaken:

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

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

Stem bestandssystemen af:

tune2fs -c0 -i0 -m0 /dev/sde1

tune2fs -c0 -i0 -m0 /dev/sde2

Alleen de eerste partitie wordt bij het opstarten automatisch door het systeem gemount! Het idee achter de herstelpartitie is dat WRT54G nergens anders ruimte heeft om een fdisk op te slaan. Dus als er een onreine afsluiting is en er inconsistenties in het bestandssysteem zijn, is de enige manier om dit te herstellen een kopie van fdisk (en vereiste libs om te starten) op een tweede partitie die slechts af en toe zal worden gemount als alleen-lezen om fsck uit te voeren als nodig zijn. Anders zou de kaart eruit moeten worden gehaald en in een pc worden gestopt voor reparatie…

3, montage:

Als je een reeds gepartitioneerde, geformatteerde kaart plaatst en wrtg goed opstart, is de kans groot dat de eerste partitie automatisch wordt gemount:

/dev/mmc/disc0/part1 13.8G 59.6M 13.7G 0% /mmc

Opt moet nu worden gekoppeld:

mount -o bind /mmc/ /opt/

4, OWRT2 installatiescript

Controleer voordat u begint of defgw, dns allemaal goed zijn.

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

sh /tmp/optware-install.sh

Als het het script niet kan krijgen, komt dat omdat busybox wget mislukt. Het zal werken met wget van owrt, maar hey, je wilt owrt installeren…

Uitvoer zou er als volgt uit moeten zien:

Systeemconfiguratie controleren …

192.168.1.1 gebruiken als standaard gateway. Gebruik van de volgende nameserver(s): nameserver 192.168.1.30 Waarschuwing: lokale nameserver is anders dan gateway! Controleer de configuratie of voer het volgende in: sed -i s/192.168.*/192.168.1.1/ /tmp/resolv.conf om dit te corrigeren. Pakket uclibc-opt_0.9.28-13_mipsel.ipk installeren … Verbinding maken met ipkg.nslu2-linux.org[140.211.166.82]:80 uclibc-opt_0.9.28-12 100% |************ ***********************************| 832 KB 00:00:00 ETA Updaten /opt/etc/ld.so.cache /opt/sbin/ldconfig: kan /opt/etc/ld.so.cache~ niet maken (geen bestand of map) Pakket installeren ipkg-opt_0.99.163-9_mipsel.ipk … Verbinding maken met ipkg.nslu2-linux.org[140.211.166.82]:80 ipkg-opt_0.99.163-9_ 100% |*************** *******************************| 75896 00:00:00 ETA downloaden https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Opblazen https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Bijgewerkt lijst met beschikbare pakketten in /opt/lib/ipkg/lists/optware Succesvol beëindigd. uclibc-opt (0.9.28-12) installeren in /opt/… Downloaden van https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… pakket uclibc-opt stelt voor om ipkg-opt te installeren uclibc-opt configureren Updaten van /opt/etc/ld.so.cache Beëindigd. Installeren van ipkg-opt (0.99.163-9) naar /opt/… Downloaden van https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Configureren van ipkg-opt Succesvol beëindigd.

5, Padbug:

U MOET het pad exporteren met:

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"

anders doet ipkg niets!

6, controleer ipkg:

ipkg-update

Moet uitvoeren:

Downloaden

Inflating https://ipkg.nslu2-linux.org/feeds/optware/ddwrt/c… Bijgewerkte lijst van beschikbare pakketten in /opt/lib/ipkg/lists/optware Succesvol beëindigd.

7, pakketten installeren:

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

samba36 sed tar unrar unzip vnstat vsftpd wget whois zip ncftp

8, lijst geïnstalleerde pakketten:

ipkg-opt list_installed

Het bouwen van pakketten op de router wordt afgeraden vanwege het gebrek aan middelen. Stel hiervoor een aparte mips crosscompiling-omgeving in Vmware/Vbox/KVM in.

Dingen die nodig zijn:

-Debian 7 wheezy 64-bits host-besturingssysteem

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

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

Verspil geen tijd om te proberen de SDK zelf te compileren, de meegeleverde binaire SDK is goed genoeg.

Bouw een eenvoudige helloworld-app

#include int main(void) { printf("Hell! O' wereld, waarom compileert mijn code niet?\n\n"); retourneer 0; }

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

Als alles goed gaat, zou je nu een uitvoerbaar mips moeten hebben:

hallo: ELF 32-bit LSB uitvoerbaar, MIPS, MIPS32 versie 1 (SYSV), dynamisch gekoppeld (gebruikt gedeelde bibliotheken), niet gestript

Stap 7: Arduino-software

U kunt de volledige broncode hieronder downloaden. Het is vrij eenvoudig, het kan de 2 relais en enkele RC-stekkers bedienen via 433Mhz-radio. Je kunt het eenvoudig uitbreiden door bv. meer rc switches toe te voegen.

Stap 8: afsluiting en takenlijst

Sluiting en takenlijst
Sluiting en takenlijst

De WRT54G is uitstekende hardware, dus al het werk dat in dit project is geïnvesteerd, is het zeker waard, behalve dat het NLD Wrtg-schild bruikbaar kan zijn met toekomstige hardwareversies.

Aangezien het stroomverbruik van een WRTG lager is dan de Raspberry PI's, kan zonne-energie de router ook een goede upgrade zijn en met de Arduino kunnen we elk detail van het zonnelaadproces (batterijspanning, paneelspanning, verbruik) volgen. Ik zal de WRTG-serie later voortzetten met zonne-hacks.

Het zou geweldig zijn om een manier te vinden om de Arduino rechtstreeks vanaf de WRTG te programmeren (hiervoor zou een methode nodig zijn om de Arduino opnieuw in te stellen).

Mensen met 3D-, Makerbot-vaardigheden zijn meer dan welkom om een aangepaste afdekplaat (met de connectoren van mijn bord) voor de voorkant te ontwerpen of het volledige plastic frontgedeelte van de router opnieuw te ontwerpen.

UPDATE: Om te vieren dat de MIPS-architectuur open source wordt, heb ik de tutorial bijgewerkt met hoe je eenvoudige C-programma's kunt crossbuilden naar de WRTG.

Lang leve de MIPS!:)

systeemtype: Broadcom BCM5352 chip rev 0processor: 0 cpu-model: BCM3302 V0.8 BogoMIPS: 199.47 wachtinstructie: nee microseconde timers: ja tlb_entries: 32 extra interrupt vector: nee hardware watchpoint: nee VCED uitzonderingen: niet beschikbaar VCEI uitzonderingen: niet beschikbaar

Aanbevolen: