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!)
-
Needed files:
- VMware Player
- Freetz-Linux: Image for VMWare Player or StinkyLinux: Image for VMWare Player (StinkyLinux-v1.06.7z), (Download-Source: Mirrors)
- Freetz, (Download-Source: Downloadseite)
- optional patches for freetz, (Quelle: Freetz Forum)
-
Unpack Freetz-Linux under Windows using 7-Zip or WinRAR .
-
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.) -
In VMWare Player, log on as user freetz with password freetz.
From here, there are several ways to work with Freetz-Linux and to exchange files between Freetz-Linux and the rest of the world. One might work on Freetz-Linux' console, for example.- SSH/SCP: One might also connect to the VM using an SSH/SCP connection. Windows clients include putty and WinSCP. Enter the VM's hostname (or IP-Address) under "Server name". For "name" and "password" please use the credentials indicated above.
- SAMBA: It is also possible to exchange data between Windows
and Freetz-Linux via SAMBA. To do that, enter "
Freetz-Linux" or "
Freetz-Linuxs-IP-Address" in Explorer's address bar and you get a listing of files and folders present in your VM. Then, you can move and copy them around as usual.
All those connection options have been pre-set in Freetz-Linux and should work out-of-the-box. If problems occur, please verify your network connection(s), and your firewall settings (if applicable). Also, don't forget to verify VMWare Player's network connection settings. By default, VMWare Player uses Bridged Mode. To start with, runping <IP-Address-of-Freetz-Linux>
inside Command Prompt.
-
Depending on your preferred choice, you proceed with one of the following:
-
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.
-
Optional: Apply patch(es) (see Howto)
-
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
- In
~/freetz-*/images
, you'll find your newly built firmware (e.g.7170_04.76freetz-devel-3790.de_20091021-180742.image
). - Upload the 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.
- Siehe PREREQUISITES
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
- gcc - GNU C Compiler
- g++ - GNU C++ Compiler
- binutils - GNU Assembler, Linker und Binary-Werkzeuge
- autoconf - dem Make vorgeschalteter Generator für Konfigurationsskripten nach GNU-Standard; hilft dabei, plattformunabhängig programmierte Software letztendlich für einen plattformspezifischen Build vorzubereiten
- automake ab Version 1.10 - Makefile-Generator nach GNU-Standard; wird nicht für alle DS-Mod-Pakete benötigt, aber z.B. für privoxy; Paketmanager installiert normalerweise autoconf als abhängiges Paket gleich mit
- automake-1.9 - Version, die zusätzlich speziell von
tar-1.15.1
aus tools benötigt wird - libtool - hilft beim Erstellen von statischen und dynamischen Bibliotheken; kann z.B. beim aufruf von autoreconf notwendig werden
- GNU make ab Version 3.81 - skriptgesteuertes Build-System
- bzip2 - (Ent)packen von Software-Archiven
- libncurses5-dev - Entwickler-Bibliothek für ncurses (Erzeugung
komfortabler textbasierter Benutzerschnittstellen, vgl.
make menuconfig
) - zlib1g-dev - Entwickler-Bibliothek für gzip-Kompression
- flex - lex-kompatibler Generator für lexikalische Analyse
- bison - YACC-kompatibler Parser-Generator
- patch - Programm, um Patches anzuwenden
- texinfo - Online-/Druck-Doku aus gemeinsamer Quelle erzeugen
- tofrodos - Dateiumwandlung DOS ↔ UNIX (für was wird das benötigt?)
- gettext - Texte in Programmen internationalisieren
- pkg-config - Hilfstool welche zum Bauen von Binaries und Libraries nötig ist; notwendig für Packages ntfs und transmission
- ecj-bootstrap - Eclipse Java Compiler (evtl. auch libecj-java und ecj in neueren Distributionen); nur notwendig für Package classpath ab 0.95 bzw. ds26-14.5
- perl - Perl-Interpreter; notwendig für
make recover
- libstring-crc32-perl - Perl-Modul zur Berechnung von
CRC32-Prüfsummen; notwendig für
make recover
- intltool -
make menuconfig
- xz-utils - (Ent)packen von Software-Archiven im xz-Format
Diese benötigen zusätzlich zu bereits unter freetz-1.0 genanntem noch folgende Pakete:
- svn - Subversion zum Auschecken der aktuellen Freetz-Versionen
- ruby1.8 - objektorientierte Skriptsprache (Version 1.8.6); nur
notwendig für Package ruby (ab freetz-devel) - seltsamerweise
benötigt der Crosscompile für ruby-1.8.6 eine installierte Version
seiner selbst als Voraussetzung. Zu allem Überfluß könnte es sein,
daß Sie im Paket zwar
/usr/bin/ruby1.8
o.ä. haben, aber nicht das vom Makefile benötigte Binary Namens ruby. Da hilft im o.g. Beispielsudo ln -s ruby1.8 /usr/bin/ruby
bzw. die Ausführung desln
-Befehls als Benutzer root. - gawk - GNU awk; notwendig für das Skript
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. - python - Python-Interpreter; notwendig, um via
tools/mklibs.py
unbenutzte Symbole aus Bibliotheken zu entfernen, um Platz zu sparen (ab freetz-devel) - libusb-dev - Entwicklungs-Bibliothek für USB-Anwendungen im Userspace; nur notwendig für SANE, wenn bspw. Multifunktionsdrucker/-scanner an die FritzBox angebunden werden sollen. Siehe auch Forums-Beitrag dazu.
- realpath - wird nur von Entwicklern benötigt, die ab ds26-15 innerhalb von fwmod beim Build das Patch-Auto-Fixing verwenden (AUTO_FIX_PATCHES im Environment). Wer nicht weiß, wovon die Rede ist, braucht es auch nicht.
- fastjar - Implementation des Java jar utils; nur notwendig für Package classpath
- graphicsmagick - enthält
composite
mit dem Bilder kombiniert werden können; nur notwendig wenn man das AVM-Webinterface "taggen" möchte
Hier wird zusätzlich folgendes benötigt:
- automake-1.8 - Version, die zusätzlich speziell von libid3tag benötigt wird. Nicht mehr erforderlich ab Freetz 1.0.
- jikes - Java Byte Code Compiler; nur notwendig für Package classpath bis 0.93 bzw. ds26-14.4
- Verschoben: PREREQUISITES
- Shell öffnen, ins Verzeichnis von
freetz-//xxx//.tar.bz2
wechseln und diesen mittar -xvjf ds-x.y.z.tar.bz2
entpacken - Optional: Patch einspielen (siehe Howto)
- Mit
cd freetz-xxx/
in das Verzeichnis des entpackten Freetz wechseln - Konfiguration wählen. Dies ist über ein ncurses Interface möglich, welches z.B. aus der Konfiguration des Linux Kernels bekannt ist. Details und Beschreibungen zu den Optionen gibt es in der Beschreibung zum make menuconfig.
- Firmware modifizieren. In diesem Schritt werden die zu der gewählten
Konfiguration passenden original Firmware und Pakete, sowie Sourcen
für die benötigten Tools vollautomatisch heruntergeladen und die
modifizierte Firmware in drei Schritten erzeugt. Dies erledigt ein
simples
make
. *.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:
- bei Multicore-Prozessoren wird nur ein Kern benutzt
- keine 64bit Unterstützung
- gravierende Systemanpassungen (spezieller Kernel, etc) bei Updates des Systems notwendig.
Vorteile von coLinux/andLinux/speedLinux:
- kommt mit weniger RAM aus als VMWare (geringerer Ressourcenbedarf)
- native Windowsfenster
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:
- Cygwin Installer von http://www.cygwin.com/ herunterladen und ausführen
- Cygwin mit den folgenden Paketen installieren:
- Archive > unzip
- Devel > gcc, libncurses-devel, make, patchutils
- Interpreters > perl
- Web > wget
ds-*.tar.bz2
in das Cygwin Home-Verzeichnis herunterladen (je nach Installation z.B.C:/Cygwin/home/<Windows-Benutzername>/
)- Cygwin Shell öffnen und den ds-mod entpacken
tar -xvjf ds-x.y.z.tar.bz2
- Optional: Patch einspielen (siehe Howto)
- In das Verzeichnis des entpackten ds-mod wechseln
cd ds-*/
- Konfiguration wählen. Dies ist über ein
ncurses
Interface möglich, welches z.B. aus der Konfiguration des Linux
Kernels bekannt ist. Details und Beschreibungen zu den Optionen gibt
es in der Beschreibung zum
menuconfig.
make menuconfig
- Firmware modifizieren. In diesem Schritt werden die zu der gewählten
Konfiguration passenden original Firmware und Pakete, sowie Sourcen
für die benötigten Tools vollautomatisch heruntergeladen und die
modifizierte Firmware in drei Schritten erzeugt.
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 derrecover.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:
- Datenpartition erstellen, bei der das HFS+ case sensitive konfiguriert ist.
- Xcode installieren. Dadurch erhält man geeignete Versionen von u. a.
- gcc
- g++
- autoconf
- automake
- make
- ncurses
- zlib
- flex
- bison
Außerdem sind einige (GNU) Utilities nötig, die z.B. über Darwin Ports installiert werden können:
- gettext
- texinfo
- dos2unix
- gawk
- coreutils
- findutils
- gsed
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.