_ _ _   _   _      _     _ _       _        _      
 | (_) |_| |_| | ___(_) __| (_) ___ | |_   __| | ___ 
 | | | __| __| |/ _ \ |/ _` | |/ _ \| __| / _` |/ _ \
 | | | |_| |_| |  __/ | (_| | | (_) | |_ | (_| |  __/
 |_|_|\__|\__|_|\___|_|\__,_|_|\___/ \__(_)__,_|\___|

Firmware Backrezept für den Speedport 500v und W500v

BIG FAT WARNING

Die Folgende Anleitung mag unvollständig oder gar an einigen Stellen Falsch sein. Der/Die AuthorInnen übernehmen keine Haftung für Schäden jeglicher Art, die mittelbar oder unmittelbar als Folge dieser Anleitung entstanden sind.
Das Flashen der Firmware bedeutet in jedem Falle eine Verletzung der Garantiebedingungen.

Schritt 1: Quellcode laden

Auf der Website des rosa T gibt es ein Quellcode Archiv zum runterladen.

Schritt 2: Quellen entpacken, Toolchain installieren

Zuerst einmal solltest Du Dir ein Verzeichnis für die Sourcen anlegen, sinnvoll wäre z.B. mkdir /usr/src/speedport_firmware Danach das Archiv mit der Firmware dort ablegen und entpacken. cd /usr/src/speedport_firmware
tar -xzvf bcm963xx_Speedport [...]

In dem Verzeichnis befinden sich nun 2 weitere Archive, die ebenfalls wie oben entpackt werden können. Ausserdem liegt dort die Toolchain vergraben in zwei RPM-Paketen. Auf Systemen, die ohnehin RPM verwenden einfach installieren mit rpm -ihv uclibc-crosstools-common.i386.rpm uclibc-crosstools-mips.i386.rpm
Für Systeme, die primär auf das Debian-Paketmanagement setzen (Debian, Ubuntu, etc.), muss rpm installiert sein: apt-get install rpm
Danach die Toolchain installieren mit rpm -ihv --nodeps uclibc-crosstools-common.i386.rpm uclibc-crosstools-mips.i386.rpm
Die --nodeps Option ist leider nötig, da bei der Installation von RPM dessen Paketdatenbank leer ist und RPM glaubt, es sei nicht einmal eine libc installiert...

Schritt 3: Anpassungen vornehmen

Damit es sauber backt, muss man zuerst einmal Hand anlegen und die Datei "mconf.c" im Verzeichnis userapps/opensource/busybox/scripts/config bearbeiten.
In Zeile 104 muss static struct menu *current_menu; zu struct menu *current_menu; umgebastelt werden.

Schritt 4: ein eigenenes Busybox bauen

Die eigene Busybox Konfiguration kann man bequem menügeführt erledigen. Dazu muss man in das Verzeichnis userapps/opensource/busybox gehen und dort
make menuconfig
eingeben.
Was unbedingt aktiviert werden sollte in der Config ist der telnetd -- den brauchen wir später noch ;)
Nach getaner Arbeit muss man die soeben erstellte Datei ".config" kopieren in "brcm.config", sonst wird sie knallhart von der Makefile überschrieben. Alternativ kann man natürlich auch folgenden Eintrag aus Zeile 774 der Makefile auskommentieren: cd $(OPENSOURCE_DIR)/busybox; cp -f brcm.config .config in cd $(OPENSOURCE_DIR)/busybox #; cp -f brcm.config .config

Schritt 5: Kernel anpassen (optional)

Den Kernel darf man natürlich auch veründern und so z.B. ipv6 support einbauen. Einfach in das Verzeichnis kernel/linux wechseln und ebenfalls make menuconfig hier eingeben.
Auch hier ist die Makefile gnadenlos und will einfach unsere schöne neue Kernel-Config überschreiben... Hierzu einfach Zeilen 362 und 374 der Makefile komplett auskommentieren: cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config; in # cp -f $(KERNEL_DIR)/arch/mips/defconfig $(KERNEL_DIR)/.config;

Schritt 6: Telnetd starten

Es gibt 2 möglichkeiten den Telnetd zu starten. Zum einen via inetd oder direkt via rc-script, das beim starten des Systems aufgerufen wird.

Starten mit rc-script

Zum starten via rc-script die Datei /target/fs.src/etc/init.d/rcS editieren und folgende Zeile hinzufügen: /usr/sbin/telnetd telnetd -l /bin/login ...fertig.

Starten mit inetd

Es ist auch möglich den Telnetd via inetd zu starten. Hierzu sollte man den inetd in busybox (s.o.) aktivieren und ihn mit dem rc-script starten. Hierzu einfach folgende Zeile der rcS hinzufügen: /usr/sbin/inetd Wenn man sich für inetd entscheidet, muss man zusätzlich noch folgende Zeile in der Datei /target/fs.src/etc/inetd.conf eintragen: telnet stream tcp nowait root /bin/telnetd telnetd

Schritt 7: Image bauen & hochladen

So, nun ist's eigentlich fertig...
Zum Backen des Images braucht man nun nur noch make zu tippen und abzuwarten, bis folgende Meldung erscheint: Done! Image 96348GWV_DT has been built in /usr/src/speedport_w500v/images. In dem Verzeichnis images/ wird dann ein fertiges firmware-image abgelegt, das man über das Webinterface hochladen kann.

Wenn mal was schief geht

...gibt es noch eine Art backup-Modus. Hierzu muss man das Gerät zunächst ausschalten und mit gedrückt gehaltener reset-taste wieder einschalten. So lange drücken, bis die Power-LED rot, die Online-LED gelb und die LAN-LED grün leuchtet.
In diesem Modus hält das Gerät einen mini Webserver vor, der auf der IP 192.168.1.1 lauscht und mit dem man das Gerät neu flashen kann. (z.B. Original Firmware image vom Hersteller)

Related

bitswitcher ist eine distribution für die Speedports (W) 500V und derivate, die auf den Quellen aufbaut.
In meinem Projekt neue Firmware für den Siemens SL2-141-L widme ich mich dem kompilieren und flashen einer aktuellen Firmware für dieses Gerät.
_
impressum