FTP-Server auf dem Linksys WRT54GL mit DD-WRT Firmware und 1GB Mini-SD-Karte

Primär aus Gründen der Erweiterbarkeit sowie der Möglichkeit, alternative Firmwares (z.B. Tomato, OpenWRT, DD-WRT, FreeWRT, …) zu benutzen und somit den Funktionsumfang des Routers erheblich zu erhöhen, habe ich mir vor 83 Tagen (Uptime des Routers, er läuft seitdem ohne das geringste Problem) einen Linksys WRT54GL zugelegt. Sekundär, um einen “featurearmen” Speedport in Rente – Pardon Altersteilzeit – zu schicken, er dient immerhin noch als Modem für den WRT54GL. ;-)
Die Standard-Firmware von Linksys wurde lediglich einmal durchgeklickt und dann gleich durch DD-WRT ersetzt. Eine Online-Demo zu dieser Firmware ist unter dd-wrt.com/demo erreichbar. Der Router selbst kann direkt über das Webinterface geflasht werden. Wird die Firmware über das Original Linksys-Webinterface eingespielt, ist darauf zu achten, erst die Firmware “dd-wrt.vxx_mini_generic.bin” zu installieren, da standardmäßig keine Firmware > 3,0 MB erlaubt ist. Wurde der Router erfolgreich mit dieser Firmware geflasht, kann dann bei Bedarf auch die Firmware “dd-wrt.vxx_std_generic.bin” geflasht werden. “xx” steht bei der jeweiligen Firmware für die Versionsnummer.
Nach dem Flashen ist der Router über das Webinterface sowie SSH (nach Aktivierung des SSH-Daemon im Webinterface) über die IP 192.168.1.1, den Benutzer root sowie das Default-Passwort admin erreichbar.

DD-WRT bietet unter anderem die Möglichkeit, eine SD-Karte in Verbindung mit dem Router zu nutzen. Der Router muss dazu zuerst um einen entsprechenden SD-Slot erweitert werden. Die Überlegung war zuerst, aus einem defekten Cardreader den SD-Slot auszulöten und ihn in den Linksys WRT54GL einzubauen. Ich hatte auch schon mit dem entlöten begonnen, als mein Blick auf einen Mini-SD zu SD-Adapter fiel. Warum nicht einfach auf den Adapter löten und eine Mini-SD benutzen? Der Adapter würde dabei dann als Slot dienen. Zudem ist ein solcher Adapter stabiler als ein entlöteter SD-Slot und bietet außerdem noch größere Pins, welches das Löten erheblich vereinfacht. Gesagt, getan! Eine 1GB Mini-SD Karte hatte ich sowieso noch von meinem alten Nokia N73 übrig.

Pinbelegung (Pin 1 – Pin 9) des Mini-SD zu SD-Adapters (bzw. SD-Karte), wobei Pin 8 sowie Pin 9 nicht benötigt werden:

Pin-Zuordnung SD-Karte / Linksys WRT54GL:
| Pin Nr. | Pin SD-Karte | Pin WRT54GL |
| 1 | CS | GPIO7 |
| 2 | DI (Data In) | GPIO2 |
| 3 | VSS (GND) | GND |
| 4 | VDD | 3,3V |
| 5 | CLK (Clock) | GPIO3 |
| 6 | VSS2 (GND) | GND |
| 7 | DO (Data Out) | GPIO4 |
| 8 | DAT1 | - |
| 9 | DAT2 | - |
Am Router selbst werden 6 Pins auf der Platine benötigt:

Der angelötete Mini-SD Adapter wurde mit doppelseitigem Klebeband direkt auf die Lan Ports gesetzt:

Am Gehäuse des Linksys musste nur noch eine Nut mit den Abmessungen des Slots herausgefeilt werden. Fertig zusammengebaut sieht bei mir das ganze dann so aus:



Nach dieser Modifikation wird die SD-Karte auch direkt im Webinterface richtig erkannt:

Alles schön und gut, jetzt hat der Router eine 1GB Mini-SD Karte, doch für was kann diese jetzt genutzt werden? Dank der DD-WRT Firmware (Linuxbasierend) ist es nun ohne weiteres möglich, z.B. einen kleinen FTP-Server auf dem WRT54GL laufen zu lassen. Ich selbst habe zum FTP-Server “vsftpd” gegriffen.
Um Ipkg-Pakete installieren zu können, muss folgende Dateistruktur auf der SD-Karte angelegt werden:
mkdir /mmc/jffs mkdir /mmc/jffs/tmp mkdir /mmc/jffs/tmp/ipkg
Nun kann der vsftpd-Server über folgenden Befehl heruntergeladen und installiert werden:
ipkg -d /mmc/jffs install http://downloads.openwrt.org/whiterussian/packages/vsftpd_2.0.4-1_mipsel.ipk
Zusätzlich benöftigt der vsftpd-Server noch die Library uclibc:
ipkg -d /mmc/jffs install http://downloads.openwrt.org/whiterussian/packages/uclibc_0.9.27-9_mipsel.ipk
Die Konfigurationsdatei für den FTP-Server kann mit dem Editor vi bearbeitet werden:
vi /mmc/jffs/etc/vsftpd.conf
Hier eine Beispielkonfiguartion, welche auch Anonymen Zugriff erlaubt:
anon_mkdir_write_enable=YES anon_upload_enable=YES no_anon_password=YES anon_world_readable_only=NO # leave this as / needs to be nonwritable anon_root=/ # you might have to make this dir secure_chroot_dir=/jffs/var/run/vsftpd ftp_username=root nopriv_user=root background=YES listen=YES anonymous_enable=YES local_enable=YES write_enable=YES local_umask=022 check_shell=NO dirmessage_enable=YES ftpd_banner=ROUTER
Über ein Startscript (z.B. gespeichert unter /mmc/ftpstartup) werden nach einer Wartezeit von 60 Sekunden zuerst die beiden Ordner /jffs und /opt gemountet, dann der Benutzer nobody angelegt und anschließend der vsftpd-Server mit uclibc gestartet:
sleep 60 mount -o bind /mmc /jffs mount -o bind /mmc/opt /opt echo "nobody:Password:0:0:User,,,:/mmc:/bin/sh" >> /tmp/etc/passwd export LD_PRELOAD='/mmc/jffs/lib/libuClibc-0.9.27.so' /mmc/jffs/usr/sbin/vsftpd /mmc/jffs/etc/vsftpd.conf unset LD_PRELOAD env > /dev/null
Damit das Script auch bei jedem Start ausgeführt wird, muss es im Webinterface noch unter Administration/Diagnose/Kommandozeile eingetragen werden:
/mmc/ftpstartup
Dieser FTP-Server erreicht bei mir einen Durchsatz von ca. 400 KB/s. Um kleinere Dateien im Netzwerk oder Internet auszutauschen, reicht dies locker aus. Auch können z.B. per SSH und wget Downloads direkt auf dem Router gestartet werden, ohne dass hierzu extra ein PC laufen muss. In Verbindung mit einem Dyndns-Client auf dem Router können solche Downloads auch über das Internet von jedem beliebigen SSH-Client aus gestartet werden. Bis man(n) dann Zuhause ist, ist der Download schon auf dem eigenen Router. ;-)






Donnerstag, 11. Februar 2010 0:12
Hi, do you have this in English?
Donnerstag, 11. Februar 2010 13:02
Hi Rich, unfortunately not. Here is a link to the translation of google: FTP server on the Linksys WRT54G with DD-WRT firmware and 1GB mini SD card. I hope this will help you. If you have any Questions, please ask!
Mittwoch, 21. April 2010 22:56
Hallo,
habe hiermit Schwierigkeiten,
mein SD Karten Mod funktioniert.
Wenn ich versuche mit mk.. die Verzeichnisse zu erzeugen werden diese nicht angelegt, habe das dann per SCP erledigt.
Wenn ich nun versuche die Dateien per ipkg-Befehl herunter zu laden, kommen nur jeweils drei Fehler
und ich soll “ipkg update” ausführen wo anscheinend auch nichts passiert ?
Donnerstag, 22. April 2010 13:38
Hallo Marabel,
wo hast du versucht, die Befehle einzugeben? Über das Webinterface?
Falls ja, würde ich dir empfehlen, den SSH-Server auf dem Router zu aktivieren, um eine Verbindung von einem SSH-Client aus zum Router aufbauen zu können.
Über das Webinterface fehlen dir die benötigten Rechte.
MfG Manuel
Samstag, 12. November 2011 11:34
Hallo!
Besteht die Möglichkeit, einen adaptierten WRT54GL mit SD Card Slot zu bestellen? Meine Lötfähigkeiten würden wahrscheinlich die Platine zerstören….
lg, BurnD