OpenWrt: Alternative Routersoftware (auf TP-Link TL-WDR3600)

Für viele Router (WLAN-Router) gibt es alternative Betriebssysteme. Eines davon ist OpenWrt. Auf dieser Seite steht kurz zusammengefasst, wie man OpenWrt auf einem TP-Link TL-WDR3600 (kleinere Version des TL-WDR4300 oder TL-WDR4310 mit "nur" 2 statt 3 Antennen) oder TL-WDR4300 installiert. Der TL-WDR3600 und der TL-WDR4300 wurden gewählt, weil sie schnelle Dualband-WLAN-Router (2.4GHz und 5GHz) mit 8MB Flash, 128MB RAM und 2(!) USB-2.0-Anschlüssen sind. Sie kosten mittlerweilen einiges unter CHF 100.-.

Die englische Anleitung dazu, man ist gut beraten, sie vorher zu lesen, ist hier auf der OpenWrt-Homepage: http://wiki.openwrt.org/toh/tp-link/tl-wdr3600 und http://wiki.openwrt.org/toh/tp-link/tl-wdr4300

Vorbereitung

Da hier noch nie schlechte Erfahrungen mit den aktuellen Snapshots gemacht wurden, bezieht sich das alles auf die Version Barrier Breaker (z.Z. bei Bleeding Edge, r39424). Neuere Geräte sind oft auf die neueren Snapshots angewiesen. Bitte vor der Installation die entsprechenden Seiten auf www.openwrt.org zum WLAN-Router lesen.

Den Router auspacken und am Netzwerk anschliessen, einen der gelben LAN-Anschlüsse verwenden. Der Router hat als Grundeinstellung die IP-Nummer: 192.168.1.1.
Die Netzwerkadresse des benutzten Computers auf eine Adresse im selben Netz setzen oder eine Alias-Adresse zufügen mit (2 Beispiele, eine Liste der Devices erhält man mit ifconfig -s):

ifcfg br0:0 add 192.168.1.5
 oder
ifcfg enp2s0:0 add 192.168.1.5

Dokumentation lesen

Immer ratsam ist es, kurz die Dokumentation zu lesen: http://wiki.openwrt.org/doc/howto/basic.config

Flash der OpenWrt Firmware

Unter http://downloads.openwrt.org/snapshots/trunk/ar71xx/openwrt-ar71xx-generic-tl-wdr3600-v1-squashfs-factory.bin findet sich die Firmware für den Router (die richtige für das benutzte Gerät wählen). Diese herunter laden.  Man kann auch die aktuelle stabile Version verwenden. Es muss das Wort squash und factory im Namen enthalten sein. Die Firmware normal mit der originalen Weboberfläche unter der oben gesetzten IP-Nummer hochladen. Der Router wird automatisch neu gestartet (Besitzer des TL-WDR4300 wählen die entsprechende Firmware unter http://downloads.openwrt.org/snapshots/trunk/ar71xx/ )

Das es sich bei dieser Version um eine 'trunk'-Version handelt, sollte man darauf bedacht sein, alles notwendigen Kernel-Module gleich zu installieren. Die 'trunk'-Versionen werden regelmässig neu erstellt und wenn die Kernel-Version ändert und man ein Kernel-Modul nachinstallieren will, führt kein Weg an einer vollständigen Neuinstallation vorbei. Beispiele von solchen Kernel-Modulen sind: kmod-nls-cp850 oder kmod-pppoe.
Eine Neuinstallation ist aber mit diesen Anweisungen hier in kurzer Zeit wieder hergestellt. Die Konfigurationsdateien kann man ja vorher sichern (liegen in /etc).

Erstes Login mit telnet

telnet 192.168.1.1
passwd

passwd setzt ein neues Kennwort für 'root' und deaktiviert zugleich den telnet-Zugang. Ausloggen und mit

ssh root@192.168.1.1

wieder einloggen.

Das System zeigt:

BusyBox v1.19.4 (2014-01-30 20:48:26 CET) built-in shell (ash)
Enter 'help' for a list of built-in commands.
  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 BARRIER BREAKER (Bleeding Edge, r39424)
 -----------------------------------------------------
  * 1/2 oz Galliano         Pour all ingredients into
  * 4 oz cold Coffee        an irish coffee mug filled
  * 1 1/2 oz Dark Rum       with crushed ice. Stir.
  * 2 tsp. Creme de Cacao
 -----------------------------------------------------

root@OpenWrt:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    5.1M      1.4M      3.7M  27% /
/dev/root                 1.8M      1.8M         0 100% /rom
tmpfs                    61.7M    548.0K     61.2M   1% /tmp
tmpfs                    61.7M     16.0K     61.7M   0% /tmp/root
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/mtdblock3            5.1M      1.4M      3.7M  27% /overlay
overlayfs:/overlay        5.1M      1.4M      3.7M  27% /

Router mit dem Internet verbinden

Der Router wird nun mit der blauen Buchse mit dem Internetzugang verbunden, die gelbe bleibt am lokalen Netzwerk. Den Router neu starten:

reboot

Vor jeder weiteren Installation: Das root-Filesystem vergrössern

OpenWrt Dokumentation: http://wiki.openwrt.org/doc/howto/usb.essentials und http://wiki.openwrt.org/doc/howto/extroot und http://wiki.openwrt.org/doc/howto/usb.storage

Dieses Kapitel beschreibt zur gleichen Zeit, wie man USB-Sticks am OpenWrt-System anschliesst.

Bevor der knappe Flashspeicher voll ist, sollte das Root-FS vergrössert werden. Man benötigt wiederum einige Packete

opkg update
opkg install block-mount kmod-usb-core kmod-usb2 kmod-usb-ohci kmod-usb-storage
opkg install kmod-fs-ext4 kmod-fs-vfat kmod-fs-ntfs 

Man sollte gleich folgendes Modul mit installieren. Es kann sein, dass die eine oder andere USB-Harddisk nicht erkannt wird. Hier war es eine ältere USB Lacie HD: "Cypress Semiconductor Corp. CY7C68300A EZ-USB AT2 USB 2.0 to ATA/ATAPI" mit ID 04b4:6830

opkg install kmod-usb-storage-extras

Der Befehl 'lsusb' zeigt eine Liste aller angeschlossenen USB-Geräte. Es braucht dafür:

opkg install usbutils

Nach der Installation aller dieser Pakete sehen die Platzverhältnisse so aus:

root@hades:~# df -h
Filesystem                Size      Used Available Use% Mounted on
rootfs                    5.1M      1.5M      3.5M  31% /
/dev/root                 1.8M      1.8M         0 100% /rom
tmpfs                    61.7M    564.0K     61.2M   1% /tmp
/dev/mtdblock3            5.1M      1.5M      3.5M  31% /overlay
overlayfs:/overlay        5.1M      1.5M      3.5M  31% /
tmpfs                   512.0K         0    512.0K   0% /dev

An einen der beiden USB-Ports steckt man einen Stick mit bspw. 8GB. Diesen kann man gleich auf dem Gerät einrichten und ihn zugänglich machen. Aber zuerst herausfinden, wo er sich befindet:

ls /dev/sd*
/dev/sda   /dev/sda1

und zur Sicherheit:

block detect
...
config 'mount'
    option    target    '/mnt/sda1'
    option    uuid    'e546f8e0-435f-3623-caf5-64e429fbf98c'
    option    enabled    '0'

Der USB-Stick am Gerät ist das device: "sda", dieses einrichten (vorher die notwendigen Packete installieren):

opkg install e2fsprogs
mkfs.ext4 /dev/sda1
mkdir /mnt/sda1
mount /dev/sda1 /mnt/sda1

Dann wird das "alte" root-Verzeichnis kopiert (man kann diese Aktion auch mit dem oben installiereten 'mc' sehr einfach durchführen):

cd /
mkdir /tmp/cproot
mount --bind / /tmp/cproot
tar -C /tmp/cproot -cvf - . | tar -C /mnt/sda1 -xvf -
sync
umount /mnt/sda1
umount /tmp/cproot

Anschliessend wird OpenWrt mitgeteilt, beim Starten das erweitere root-FS zu nutzen. Hier vorgeschlagen ist das gesamte Kopieren des root-fs auf den Stick. Man kann auch nur das /overlay-fs verschieben (http://wiki.openwrt.org/doc/howto/extroot#duplicate.data2). Die Datei /etc/config/fstab wird ergänzt (oder abgeändert) durch:

config mount
        option target /
        option device /dev/sda1
        option fstype ext4
        option options rw,sync
        option enabled 1
        option enabled_fsck 0

Diese Änderung muss man nach dem Neustart im "neuen" root-Filesystem wiederholen, damit Luci im Webinterface die richtigen "mount points" anzeigt.

Ein 'df -h' (nach dem Neustart) zeigt nun z.B.:

Filesystem                Size      Used Available Use% Mounted on
rootfs                    6.9G    414.6M      6.2G   6% /
/dev/root                 1.5M      1.5M         0 100% /rom
tmpfs                    61.8M    100.0K     61.7M   0% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/sda1                 6.9G    414.6M      6.2G   6% /

Sollte das extroot-fs nicht sichtbar sein, hilft möglicherweise

        option    delay_root    '5'

oder höher im 'global'-Bereich von /etc/config/fstab.

späterer Zugriff auf das urspürngliche root-Filesystem

Was ist vorhanden. Man benutzt block info

block info
/dev/mtdblock2: UUID="a1xxxx-xxxx-xxxxxxxxx-xxxxxxxx" VERSION="4.0" TYPE="squashfs"
/dev/mtdblock3: TYPE="jffs2"
/dev/sda1: UUID="yyyyyyyy-yyyy-yyyy-yyyy-yyyyyyyyyyyy" NAME="EXT_JOURNAL" VERSION="1.0" TYPE="ext4"

Das lässt sich einfach 'mounten':

mkdir /mnt/overlay
mount -t jffs2 /dev/mtdblock3 /mnt/overlay/
df -h /mnt/overlay
Filesystem                Size      Used Available Use% Mounted on
/dev/mtdblock3           12.4M      3.1M      9.3M  25% /mnt/overlay

Software installieren: luci (Webinterface), mc, fehlende Packete für WiFi

Erst wird ein update der Quellen gemacht. Dann wird die Web-Oberfläche installiert (luci). Diese läuft aber nicht ohne einen Webserver (uhttpd) und einem passenden "Theme". WiFi wird nur funktionieren, wenn das fehlende Packet dazu nachinstalliert wird.

Es empfiehlt sich, mögliche weitere Kernel Module gleich zu installieren, wenn die Firmware aus den Snapshots kommt, sonst kommt man bei einer Nachinstallation nicht umhin, ein Sysupgrade (siehe: OpenWrt: Upgrade (Sysupgrade)) mit erneuter Installation aller Packete durchzuführen.

opkg update
opkg install luci-mod-admin-full luci-theme-openwrt uhttpd libiwinfo-lua
opkg install kmod-nls-cp850 kmod-nls-cp437 kmod-nls-cp850 
opkg install kmod-nls-cp852 kmod-nls-iso8859-1 kmod-nls-utf8
opkg install kmod-usb-printer kmod-pppoe
opkg install kmod-dm
opkg install kmod-fs-hfs kmod-fs-hfsplus kmod-fs-isofs kmod-fs-ntfs kmod-fs-vfat 
opkg install kmod-fs-xfs kmod-fuse
opkg install kmod-crypto-aes kmod-crypto-cbc 
opkg install kmod-loop kmod-loop-aes kmod-lib-zlib kmod-lib-lzo
opkg install kmod-ledtrig-default-on kmod-ledtrig-usbdev kmod-ledtrig-oneshot kmod-ledtrig-timer 
opkg install kmod-ipv6 kmod-iptunnel6

Schreibzugriff auf NTFS-Partition bekommt man mit:

opkg install ntfs-3g

Eventuell fehlen noch die Kernel-Module für das Wifi-Modul. Diese installieren mit:

opkg install kmod-ath9k wpad-mini

Nützliche Zusatzpackete für Luci

Der Packetmanager wird die Abhängigkeiten auflösen und alle weitere benötigten Packete mitinstallieren.

opkg install luci-i18n-german luci-app-firewall luci-app-qos 
opkg install luci-app-upnp luci-app-hd-idle

Autostart des Webservers

Ein Zugriff auf die Weboberfläche (Luci) ist nur möglich, wenn der Webserver läuft. Damit der Webserver auch bei jedem Start des Routers gestartet wird, braucht es:

/etc/init.d/uhttpd enable

Man kann ihn auch gleich starten:

/etc/init.d/uhttpd start

Netzwerk konfigurieren

Wem die Gundkonfiguration nicht passt, der kann die Einstellungen leicht ändern. Man kann dazu den 'vi'-Editor benutzen oder den midnight-commander, der einem das Leben sehr erleichtert (vor allem Anfängern auf Linux).

vi /etc/config/network

config interface 'lan'
        option ifname 'eth0.1'
        option type 'bridge'
        option proto 'static'
        option ipaddr '192.168.0.3'
        option netmask '255.255.255.0'

Wenn das geschehen ist, den Router neu starten

reboot -f

und neu einloggen (auf der neuen Netzwerkadresse):

ssh root@192.168.0.3

Nun ist der Router bereit, via Webinterface konfiguriert zu werden. Oben ein Bildschirmfoto der Status-Seite.

Failsafe Mode: Router auf Grundeinstellung setzen

Dokumentation: http://wiki.openwrt.org/doc/howto/generic.failsafe

Sollte sich der Router zu keiner Mitarbeit mehr überreden lassen, kann man innerhalb weniger Sekunden, nachdem man ihn anschaltet und nachdem die System-LED zu blinken anfängt, mit

telnet 192.168.1.1

einloggen. (Der Computer muss dafür im selben Netzwerk 192.168.1.0/24 sein.)

Was nun folgt, ist hier beschrieben: http://wiki.openwrt.org/doc/howto/generic.failsafe#in.failsafe.mode

Passwort vergessen? Neues erstellen:

passwd

IP-Adresse des Routers vergessen:

uci get network.lan.ipaddr

Wenn das Flash-Dateisystem JFFS2 voll ist und sich nichts mehr de-/installieren lässt, können damit alle Packete entfernt und die Grundeinstellungen wieder hergestellt werden ("factory reset"):

firstboot

oder

mtd -r erase rootfs_data

oder

rm -r /overlay/*

Dann kann der Router neu gestartet werden.

reboot -f

Technische Daten TL-WDR3600

http://www.tp-link.com.de/products/details/?categoryid=2268&model=TL-WDR3600#spec

IEEE802.11a
IEEE802.11b
IEEE802.11g
IEEE802.11n

4 10/100/1000Mbps-LAN-Ports
1 10/100/1000Mbps-WAN-Port
2 USB2.0-Anschlüsse

5GHz: Bis zu 300Mbps
2,4GHz: Bis zu 300Mbps

Die Leistungsaufnahme des Gerätes ist um die 4 Watt. Das Steckernetzteil alleine braucht ca. 0.3 Watt.