D-Link DIR-300

Aus Freifunk Kiel
Wechseln zu: Navigation, Suche

Der D-Link DIR-300 ist ein günstiges Einsteiger-Gerät, das leider nicht ganz einfach konfigurierbar ist. Einige Zeit wurden die von verschiedenen DSL-Anbietern als Standard-Gerät Neukunden gegeben. Jetzt findest Du die für 10-20,- EUR zum Beispiel bei Ebay.

Folgende Beischreibung bezieht sich auf Linux als Betriebssystem. Am einfachsten benutzt Du ein Laptop zur Arbeit mit dem Router Du kannst dann einfacher zwischen LAN und WLAN hin und her wechseln.

Außerdem solltest Du diese Seite bereits geöffnet haben (oder einfach ausdrucken :-), wenn Du loslegst, denn zwischendurch wirst Du eventuell kein Internet am Rechner haben.

Vorbereitung

Du brauchst:

  • Deinen D-Link Router
  • Stromversorgung für den Router
  • ein LAN-Kabel

Dann:

  1. Der Router lässt sich nur ausschalten, wenn man den Stecker aus dem Router zieht. Steck deswegen das Stromkabel in die Steckdose, aber noch nicht in den Router.
  2. Verbinde den Internet-Port (WAN) des Routers per LAN-Kabel mit Deinem Laptop

TFTP installieren

Um OpenWRT auf den Router zu bekommen, kannst Du es per Telnet und TFTP übertragen. Telnet ist in der Regel schon installiert. Das Trivial File Transfer Protocol (TFTP) ist ein sehr einfaches Dateiübertragungsprotokoll, dass nur das Lesen oder Schreiben von Dateien unterstützt.

Installiert TFTP im Terminal:

sudo apt-get install tftpd-hpa

Software herunterladen

Wechsel ins TFTP-Verzeichnis:

cd /var/lib/tftpboot

Lade die nötige Software herunter:

sudo wget http://www.dd-wrt.com/dd-wrtv2/downloads/v24/Atheros%20WiSoc/Airlink%20101%20AR430W/ap61.ram
sudo wget http://www.dd-wrt.com/dd-wrtv2/downloads/v24/Atheros%20WiSoc/Airlink%20101%20AR430W/ap61.rom
sudo wget http://freifunk.tumelum.de/stabil/atheros/openwrt-atheros-vmlinux.lzma
sudo wget http://freifunk.tumelum.de/stabil/atheros/openwrt-atheros-root.squashfs

Stelle sicher, dass die Daten für den TFTP-Daemon lesbar sind:

chmod a+r ap61* openwrt*

.telnetrc anlegen

Leg in Deinem Homeverzeichnis eine Datei mit dem Namen .telnetrc an und schreibe hinein:

192.168.1.1
        mode line 

192.168.20.81
       mode line

IP umschalten

Der Router wird gleich unter 192.168.20.81 zu erreichen sein. Entsprechend stellst Du die IP für Deinen Rechner auf 192.168.20.80. Hier am besten unter Linux immer mit Interface-Aliases arbeiten, d.h.

sudo ifconfig eth0:1 192.168.20.80

Da manche Interfaces nachdem ein Link da ist (z.B. beim Reboot des Routers) einige Sekunden brauchen, bis sie wieder da sind, ist es manchmal besser, einen kleinen Switch dazwischen zu haben. Achte bitte darauf, dass in dem dann aufgebauten Netz kein DHCP-Server läuft (z.B. von Deinem Internet-Router), ansonsten kann es beim Flashen später zu Problemen kommen.

Firmware des Bootloaders verändern

Damit wir unsere eigene Firmware auf den Router bringen können, muss zunächst der Bootloader des Routers aktualisiert werden.

Verbinde hierzu den Router mit dem Netzteil und warte dann ca. 5 Sekunden (bei den meisten Routern siehst Du einen "Countdown", bei dem die LEDs an der Vorderseite nacheinander aufblinken), bevor Du den folgenden Befehl ausführst:

telnet 192.168.20.81 9000

Du bekommst dann mit ein wenig Glück und dem richtigen Timing die folgende Anzeige:

RedBoot>

Führe dann die folgenden Befehle aus:

Redboot> load ap61.ram
Redboot> go

Jetzt musst Du Deinem Rechner eine zusätzliche IP-Adresse vergeben:

ifconfig eth0:2 192.168.1.10

Dann steckst Du das LAN-Kabel vom WAN-Anschluss des Routers an einen der LAN-Ports und führst den folgenden Befehl aus:

 telnet 192.168.1.1 9000

Es kann sein, dass Du durchaus einige Minuten warten musst, bevor dieser Befehl funktioniert.

Letzendlich solltest Du dann die folgende Anzeige bekommen:

DD-WRT>

Und dann wird es etwas kryptisch. Im folgenden siehst Du die Befehle, die Du eintippen musst:

DD-WRT>fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x807f0000-0x80800000 at 0xbffe0000: .

DD-WRT>ip_address -h 192.168.1.10
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.10

DD-WRT>load -r -b %{FREEMEMLO} ap61.rom
Using default protocol (TFTP)
Raw file loaded 0x80080000-0x800a8717, assumed entry at 0x80080000

DD-WRT>fis create -l 0x30000 -e 0xbfc00000 RedBoot
An image named 'RedBoot' exists - continue (y/n)? y
... Erase from 0xbfc00000-0xbfc30000: ...
... Program from 0x80080000-0x800a8718 at 0xbfc00000: ...
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x807f0000-0x80800000 at 0xbffe0000: .

DD-WRT>fconfig bootp false
bootp: Setting to false
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . 
DD-WRT>reset

Freifunk-Firmware aufspielen

Der Router startet neu. Nachdem ca. 5s nach dem Reboot (den korrekten Zeitpunkt erkennst Du an den nacheinander aufblinkenden LEDs), führst Du dann wieder den folgenden Befehl aus:

telnet 192.168.1.1 9000

Danach musst Du dann wieder eine etwas längere Befehlsfolge ausführen:

DD-WRT>fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x807f0000-0x80800000 at 0xbffe0000: .
DD-WRT>ip_address -h 192.168.1.10
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.10
DD-WRT>load -r -b %{FREEMEMLO} openwrt-atheros-vmlinux.lzma
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x801007ff, assumed entry at 0x80040800
DD-WRT>fis create -e 0x80041000 -r 0x80041000 vmlinux.bin.l7
... Erase from 0xbfc30000-0xbfcf0000: ............
... Program from 0x80040800-0x80100800 at 0xbfc30000: ............
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT>load -r -b %{FREEMEMLO} openwrt-atheros-root.squashfs
Using default protocol (TFTP)
Raw file loaded 0x80040800-0x802207ff, assumed entry at 0x80040800

DD-WRT>fis create rootfs
... Erase from 0xbfcf0000-0xbffe0000: ...............................................
... Program from 0x80040800-0x80220800 at 0xbfcf0000: ..............................
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT>fconfig boot_script_timeout 5

DD-WRT>fconfig boot_script true
Run script at boot: true 

DD-WRT>fconfig
Run script at boot: true
Boot script:
Enter script, terminate with empty line
>> fis load -l vmlinux.bin.l7
>> exec
>>
Boot script timeout (1000ms resolution): 5
Use BOOTP for network configuration: false
Gateway IP address: 192.168.1.254
Local IP address: 192.168.1.1
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.1.10
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xbffe0000-0xbfff0000: .
... Program from 0x80ff0000-0x81000000 at 0xbffe0000: .

DD-WRT>reset

Und fertig. Der erste Start dauert ein wenig (ca. 5 Minuten). Danach geht es dann mit der Konfiguration normal weiter, indem Du einen Browser öffnest und Dich mit der IP-Adresse 192.168.1.1 verbindest.