Freetz provides some scripts for modifying an original firmware. Because of license issues the distribution of original or modified firmware images is forbidden.
the installation of a modified firmware invalidates the manufacturer’s warranty! In case of problems, do NOT contact AVM support.
Speedports: (see sp2fritz). From scriptversion 2.2.2008 the use of speed2fritz is possible.
Newbies: Please read ‘Freetz for Beginners’ first!
StinkyLinux (formerly FriBoLi) is a virtual Linux operating system for building FritzBox firmware images on Windows. Unfortunately, support for StinkyLinux was discontinued some time ago. This means it cannot be used for freetz anymore without hassle with updates.
Because of that, a new build environment Freetz-Linux was created by Silent-Tears (cinereous), who also maintains it. The use of this environment is strongly recommended if no native linux can be used.
The following instructions were initially adopted from Saphir , but have grown over time and were completed and/or edited by many different users. We try to keep these up-to-date and adapt it to the current versions of VM and freetz. However, the steps below can (with some minor limitations) be used for every freetz-VM.
See also:
Installing StinkyLinux (!!!obsolete!!!)
Installing Freetz and Speed-to-Fritz (SpeedPort users only)
StinkyLinux Homepage (Attention! instructions and images there are out of date!)
Run VMWare Player. Leave all settings as they are; the Player will be able to connect to the Internet by itself. If not, you can set up internet access manually like so:
ifconfig eth0 192.168.178.xx netmask 255.255.255.0 broadcast 192.168.178.255
(where eth0
might have to be replaced with your configured network
interface. “ifconfig -a” will list all network interfaces
available to your virtual machine.)
ping <IP-Address-of-Freetz-Linux>
inside Command Prompt.SSH/TELNET: (the preferred method)
svn co URL
You can replace freetz-1.1.x
with any other valid tag, or use the
development /trunk
if you wish.
Change into the freetz directory you just checked out (or unpacked into):
cd freetz-*/
Configure freetz. It is possible to do this using a ncurses interface, the same one being used to configure the Linux kernel. For a detailed description, see menuconfig.
make menuconfig
Modify firmware. In this step, the original firmware and packages matching your configuration as well as the necessary build tools are being downloaded automatically and a new one is being built, according to your configuration, in three distinct steps. The first run through will take a little while, so you might want to have some coffee or tea in the meantime.
unset CFLAGS CXXCFLAGS
make
~/freetz-*/images
, you’ll find your newly built firmware (e.g.
7170_04.76freetz-devel-3790.de_20091021-180742.image
).<BOX_VERSION>_<ORIG_FIRMWARE_VERSION>freetz-devel-VVVV.<LANG>_YYYYMMDD-HHMMSS.image
as Firmware Update to your FritzBox. After successful Upload, you
can access a secondary web interface on port 81 of your box,
offering detailed instructions to finalize installation. Should your
Box be unreachable even though INFO-LED stopped flashing several
minutes ago - especially if, in regular intervals, all LEDs
light up), you can recover your box’ original firmware on most Box
types.Für das Erstellen der Firmware kann auch Knoppix verwendet werden, wozu keine Linux-Installation erforderlich ist. Wichtig ist, dass zum Kompilieren des Mods unter Linux keine FAT oder NTFS Partition verwendet wird. Die folgende Anleitung benötigt für
tar-1.15.1
aus tools benötigt wirdmake menuconfig
)make recover
make recover
make menuconfig
Diese benötigen zusätzlich zu bereits unter freetz-1.0 genanntem noch folgende Pakete:
/usr/bin/ruby1.8
o.ä. haben, aber nicht das
vom Makefile benötigte Binary Namens ruby. Da hilft im o.g.
Beispiel sudo ln -s ruby1.8 /usr/bin/ruby
bzw. die Ausführung des
ln
-Befehls als Benutzer root.tools/extract-images
(ab freetz-devel), wenn man z.B. ein Recover-EXE zerlegen, also
urlader.image und kernel.image extrahieren möchte. Die in
anderen awk-Varianten nicht vorhandene Funktion strtonum wird an
einer Stelle verwendet.tools/mklibs.py
unbenutzte Symbole aus Bibliotheken zu entfernen, um Platz zu sparen
(ab freetz-devel)composite
mit dem Bilder kombiniert
werden können; nur notwendig wenn man das AVM-Webinterface
“taggen” möchteHier wird zusätzlich folgendes benötigt:
freetz-//xxx//.tar.bz2
wechseln
und diesen mit tar -xvjf ds-x.y.z.tar.bz2
entpackencd freetz-xxx/
in das Verzeichnis des entpackten Freetz
wechselnmake
.*.image
als Firmware Update auf die Box hochladen. Nach einem
erfolgreichen Upload ist nun auf Port 81 ein weiteres Webinterface
verfügbar, welches Instruktionen zum Abschluss der Installation
enthält. Sollte die Box nach dem Hochladen der Firmware auch Minuten
nachdem die Info LED aufgehört hat zu blinken nicht mehr erreichbar
sein (typischerweise leuchten periodisch immer wieder alle LEDs
auf), so kann die originale Firmware bei den meisten Box-Typen, wie
in diesem Howto
beschrieben, wiederhergestellt werden.Siehe auch: andlinux unter Vista installieren
Alternativ kann auch coLinux benutzt werden, ist etwas resourcenschonender als der vmware player. Mit speedLinux ist alles vorbereitet für freetz oder speed-to-fritz. Mit ./freetz werden alle notwendigen Vorbereitungen und Installationen durchgeführt. aktueller Stand 25.10.2009
Anmerkung von Alexander Kriegisch (kriegaex), 24.02.2008: Ja, das benutze ich auch seit gestern, und zwar speziell die mit Ubuntu Gutsy und XFCE (wahlweise auch KDE) vorkonfigurierte Variante andLinux, die man wahlweise als Dienst oder als Anwendung starten kann und mit einem einfachen Installer ausgeliefert wird. Scheint etwas langsamer zu sein als ein reines Linux, aber es ist schon cool, Linux-Fenster nativ neben Windows-Fenstern zu haben. :-) Der mitgelieferte X-Server Xming (für Windows) macht’s möglich. Ich verwende übrigens nicht mal ein X-Terminal, sondern logge mich sozusagen “headless” über SSH ein (Putty). Ab und zu lasse ich mal Synaptic oder als X-Editor SciTE laufen, den ich nachinstalliert habe. Ich baue gerade sämtliche Freetz-Pakete “from scratch” inkl. Download, es geht genauso wie in VMware oder nativem Linux, also Linux-Paketliste siehe oben.
Nachteile von coLinux/andLinux/speedLinux:
Vorteile von coLinux/andLinux/speedLinux:
Unter Cygwin funktioniert Freetz definitiv nicht, und auch für ds-0.2.9 (Kernel 2.4) wird Linux empfohlen, weil es mit Cygwin Probleme geben kann und es außerdem einen riesigen Geschwindigkeitsverlust beim Bauen (mehrfache Build-Dauer) bedeutet, Cygwin zu verwenden.
Da Freetz sich unter Cygwin ohnehin nicht bauen lässt, folgt hier lediglich die Beschreibung für ds-mod:
Ein Howto von dsl123 zum Kompilieren des ds-mod’s unter Cygwin gibt es
hier.
Zum Entpacken der Datei ds-*.tar.bz2
unter Windows ausschließlich
das Cygwin-tar — wie in der Anleitung beschrieben — verwenden:
ds-*.tar.bz2
in das Cygwin Home-Verzeichnis herunterladen (je nach
Installation z.B. C:/Cygwin/home/<Windows-Benutzername>/
)tar -xvjf ds-x.y.z.tar.bz2
cd ds-*/
make menuconfig
make
firmware_*.image
als Firmware Update auf die Box hochladen. Nach
einem erfolgreichen Upload ist nun auf Port 81 ein weiteres
Webinterface verfügbar, welches Instruktionen zum Abschluss der
Installation enthält. Sollte die Box nach dem Hochladen der Firmware
auch Minuten nachdem die Info LED aufgehört hat zu blinken nicht
mehr erreichbar sein (typischerweise leuchten periodisch immer
wieder alle LEDs auf), so kann die original Firmware mit Hilfe der
recover.exe
von AVM wiederhergestellt werden.Im Prinzip und mit ein paar Patches funktioniert ein aktuelles ds-mod auch unter Mac OS X. Zumindest ist mir gelungen, ds-0.2.9_26-14.2 unter Mac OS X zum Funktionieren zu überreden.
Zunächst sind folgende Voraussetzungen zu erfüllen:
Außerdem sind einige (GNU) Utilities nötig, die z.B. über Darwin Ports installiert werden können:
Und vermutlich ein paar weitere, wenn man die entsprechenden Packages anwählt.
Die zusätzlichen Utilities werden in der Regel unter Namen installiert, die mit g beginnen, um nicht mit den nativen Utilities von Mac OS X in Konflikt zu geraten. Manche Konfigurationsskripte setzen aber die Eigenschaften von GNU-Utilities voraus, auch wenn sie unter dem Standardnamen aufgerufen werden. Daher habe ich mir ein Verzeichnis erstellt, in dem Symlinks der Standardnamen auf die GNU Utilities zeigen. Zum Arbeiten mit ds-mod ist dieses Verzeichnis in den Suchpfad aufzunehmen:
~/gnubin $ ls -l
total 64
-rwxr-xr-x 1 enrik enrik 106 20 Mär 17:23 as
lrwxr-xr-x 1 enrik enrik 19 20 Mär 17:18 awk -> /opt/local/bin/gawk
lrwxr-xr-x 1 enrik enrik 18 20 Mär 18:32 cp -> /opt/local/bin/gcp
lrwxr-xr-x 1 enrik enrik 22 11 Apr 10:11 cpp -> /usr/local/bin/cpp-3.3
lrwxr-xr-x 1 enrik enrik 20 11 Apr 10:11 find -> /opt/local/bin/gfind
lrwxr-xr-x 1 enrik enrik 23 20 Mär 17:18 install -> /opt/local/bin/ginstall
-rwxr-xr-x 1 enrik enrik 106 20 Mär 17:24 ld
lrwxr-xr-x 1 enrik enrik 21 20 Mär 17:18 sed -> /opt/local/bin/gnused
Die Pseudebefehle as
und ld
dienen hier nur dazu, der glibc für den
Kernel-Compiler, die über crosstool erstellt wird, geeignete binutils
vorzugaukeln. Die beiden Dateien sehen so aus:
~/gnubin $ cat as
#! /bin/sh
# fake as version for crosstool
[ "$1" = -v ] && echo GNU assembler 2.13 || /usr/bin/as "$@"
~/gnubin $ cat ld
#! /bin/sh
# fake ld version for crosstool
[ "$1" = --version ] && echo GNU ld 2.13 || /usr/bin/ld "$@"
~/gnubin $ PATH=$HOME/gnubin:$PATH
Außerdem wird ein Patch für ds-mod benötigt, den man hier herunterladen kann:
Das ganze ist wenig getestet, insbesondere habe ich noch kein so erstelltes Image ausprobiert.
Freetz läuft nun also super auf der Box, und das schon seit längerer Zeit. Da kommt es unvermeidlich vor, dass AVM eine neue Firmware-Version herausbringt, und auch die Freetz-Entwicklung ist weitergegangen. Kurzum: Man möchte nun natürlich auch von den neuen Features und Bugfixes profitieren. Wie bringt man also Freetz auf der Box auf den neuesten Stand?
Die Antwort ist recht einfach: “Siehe oben”. Eine Aktualisierung geht genau so vonstatten, wie auch die Erst-Installation: Man baut sich ein neues Freetz-Image und nutzt dann das “Firmware-Update” der Box.
Hat man für die Installation eine Repository-Version verwendet, bringt man selbige zuvor auf den aktuellen Stand, indem man in das Quellverzeichnis wechselt und…
# In das Verzeichnis wechseln, in dem sich das "ausgecheckte" Freetz befindet:
cd freetz
# Quelldateien aktualisieren
svn up
# ggf. die Paketauswahl überprüfen, verändern, neue Patches aktivieren, etc.
make menuconfig
# Image bauen
make
Und jetzt das fertige Image auf die Box.