====== Firmware-Backrezept für den Speedport 500v und W 500v ====== ===== 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 ===== **Für den 500v:** von [[http://www.t-com.de/is-bin/INTERSHOP.enfinity/WFS/EKI-PK-Site/de_DE/-/EUR/ViewFAQTheme-Download;sid=?ProductThemeId=theme-1000&selaction=themen&FaqId=theme-6512161&pageNr=0&bound=3&itemLocator=downloads&headerSelection=2&SelectedTheme=theme-2000178&SelectedTheme=theme-2001628&SelectedTheme=theme-2001629|T-Com]] (V0.9 bzw. V1.31) oder [[http://www.hht-eu.com/pls/hht/wt_show.text_page?p_text_id=7705&p_flag=%28hht-eu%29|Hitachi]] **Für den __W__500v:** von [[http://www.t-com.de/is-bin/INTERSHOP.enfinity/WFS/EKI-PK-Site/de_DE/-/EUR/ViewFAQTheme-Download;sid=?ProductThemeId=theme-1000&selaction=themen&FaqId=theme-2001629&pageNr=0&bound=3&itemLocator=downloads&headerSelection=2&SelectedTheme=theme-2000178&SelectedTheme=theme-2001628&SelectedTheme=theme-2001626|T-Com]] (V1.20 bzw. V1.30) oder [[http://www.hht-eu.com/pls/hht/wt_show.text_page?p_text_id=7431&p_flag=%28hht-eu%29|Hitachi]] ===== 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... Um die Paketverwaltung von Debian nicht inkonsistent werden zu lassen, wäre es nicht sinnvoller, das Paket mit alien in ein deb Paket zu konvertieren? ===== 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. [b]EDIT 20071027:[/b] Bei mir war es die gleiche Änderung, aber an der Datei **kernel/linux/scripts/kconfig/mconf.c** in Zeile 91 (die oben genannte Datei war schon o.k.). ===== 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 abwarten, 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)