Freetz-NG – Hol mehr aus deiner FRITZ!Box

Mit der Erweiterung Freetz-NG (ein Fork von Freetz), lassen sich verschiedene FRITZ!Box-Modelle mit weiteren Extrafunktionen ausstatten.
So können wir auch andere Softwareprodukte auf einer Box laufen lassen, oder auch das Netzwerk noch etwas granularer einstellen.
Wie du Freetz-NG auf deine FRITZ!Box bekommst, zeige ich dir hier in der Anleitung.

WARNUNG: Ich beschreibe hier die Möglichkeit alles umzusetzen. Ob und wie gut das gelingt hängt von der aktuell verfügbaren Software ab!
Ich garantiere weder 100%igen Erfolg, noch hafte ich für zerstörte FritzBoxen!
Die Garantie und Gewährleistung geht ebenfalls verloren!

Voraussetzungen:
Wir benötigen folgende Dinge, um Freetz-NG in Betrieb nehmen zu können:
– Eine virtuelle Maschine
– Die VM muss min. 2GB RAM, 20GB Festplattenspeicher und eine Internetanbindung besitzen
– Debian 11 als System in der VM
– Zugangsdaten für den Root-Benutzer und ein Standardbenutzer
– Eine unterstützte FRITZ!Box
– Ein LAN-Kabel (RJ45)
Wiederherstellungs-Tools für den Notfall

Warum gibt es kein fertigen Downlaod?
Wir modifizieren hier proprietäre AVM-Daten.
Diese dürfen durch die AGBs nicht zum Download bereitgestellt werden.
Sofern wir aber alles für uns selbst modifizieren, kann uns keiner Aufhalten 🙂
Dieses Prozedere müssen wir auch nur 1x pro FRITZ!Box durchführen, danach geht alles bequem per Webinterface.

Warum eine virtuelle Maschine?
Dann ist alles in einer geschlossenen Umgebung installiert und sobald wir fertig sind, können wir alles restlos von unserem System wieder entfernen.
Wir benötigen auch zwingend ein Linux-System, da die Tools nur darin funktionieren.
Ein Linux-Container wie es z.B. Proxmox anbietet, können wir auch nutzen, sofern Kernel-Headers durchgereicht werden.
Da dies in der Standardkonfiguration nicht der Fall ist, nutze stattdessen lieber eine virtuelle Maschine.

Legen wir los!


1. Einen „normalen“ Nutzer anlegen
Wir brauchen ein normalen Benutzer, da die Scripte nicht mit Root-Rechten laufen.
Also legen wir schnell einen an.

# adduser user

2. Das System aktualiseren
Damit wir die aktuellsten Pakete nutzen können, bringen wir erst mal das System auf den aktuellsten Stand.

# apt update && apt upgrade -y && apt dist-upgrade -y

3. Notwendige Pakete installieren
Wir brauchen jetzt alles, damit wir Freetz-NG selbst erstellen können.

# apt install pv cpio rsync kmod imagemagick inkscape graphicsmagick subversion git bc unar wget sudo gcc g++ binutils autoconf automake autopoint libtool-bin make bzip2 libncurses5-dev libreadline-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar perl libstring-crc32-perl ruby gawk python2 python-is-python3 libusb-dev unzip intltool libacl1-dev libcap-dev libc6-dev-i386 lib32ncurses5-dev gcc-multilib bsdmainutils lib32stdc++6 libglib2.0-dev ccache cmake lib32z1-dev libsqlite3-dev sqlite3 libzstd-dev netcat curl uuid-dev libssl-dev libgnutls28-dev sharutils -y

4. Execstack installieren
Nun brauchen wir noch execstack, was es nicht in den Paketquellen gibt. Also machen wir das kurz von Hand.

# wget http://ftp.de.debian.org/debian/pool/main/p/prelink/execstack_0.0.20131005-1+b10_amd64.deb
# apt install ./execstack_0.0.20131005-1+b10_amd64.deb

5. Umgebungsvariablen setzen

# echo "export PATH=$PATH:/usr/sbin" >> ~/.bashrc

6. Wechsel zum „normalen“ Nutzer
Ich nenne mein „normalen“ Nutzer hier „user“. Wenn du also „user“ liest, ist das der normale Benutzer.

# su - user
# cd ~

7. Umgebungsvariablen für den User anpassen
Dies müssen wir ebenfalls wie für den Root-Nutzer tun.

# echo "export PATH=$PATH:/usr/sbin" >> ~/.bashrc

8. Das Freetz-NG-Repo downloaden
Nun besorgen wir uns alle Daten und wechseln anschließend in den neuen Ordner.

# git clone https://github.com/Freetz-NG/freetz-ng ~/freetz-ng
# cd ~/freetz-ng

9. Freetz-NG-Konfigurator starten
Nun öffnen wir den Konfigurator, mit dem wir alle Einstellungen vorab treffen können.

# make menuconfig

10. Gewünschte Funktionen Aktivieren / Deaktivieren
Nun können wir unsere FRITZ!Box auswählen und dann neue Funktionen hinzufügen oder abwählen.
Steuern kannst du alles mit den Pfeiltasten und Enter bzw. Leertaste.
Meine empfohlenen Minidesteinstellungen sind folgende:
→ Hardwware series → Hier die passende FRITZ!Box-Gruppe auswählen
→ Hardware type → Hier die passende FRITZ!Box auswählen
→ Target region → Hier bei originalen FRITZ!Boxen das ganze auf „avm germany“ belassen
→ Firmware version → Hier die passende Firmware auswählen. Sofern hinter der Version ein + steht, bedeutet dies, das alle zwischenversionen bis zur nächsten Auswahlmöglichkeit unterstützt werden
→ Webinterface → Hier noch die deutsche Sprache einstellen

Wähle anschließend „SAVE“ aus und speichere die Konfiguration ab.
Über „EXIT“ kannst du den Konfiguratior dann verlassen.

11. Ein Image erstellen lassen
Nun ist es an der Zeit, mit Hilfe der Konfiguration ein Image für unsere FRITZ!Box generieren zu lassen.
Das bekommen wir mit einem einfachen Befehl hin:

# make

Dieser Vorgang kann jetzt eine Weile dauern.
In der Zwischenzeit kannst du dich wie ein echter Hackermann fühlen, denn dein Bildschirm wird gleich mit jeder Menge Informationen geflutet.
Hier zahlt es sich aus, wenn du der virtuellen Maschine viele CPU-Kerne zugewiesen hast.
Bei diesem Vorgang, werden auch noch einige Daten aus dem Internet heruntergeladen. Achte daher nun auf eine stabile Internetanbindung.

Wenn du „FINISH“ ablesen kannst, hat alles funktioniert!

Solltest du einen ERROR bekommen, starte die virtuelle Maschine neu und versuch es noch einmal.
In der Regel gehts dann 🙂

12. Image prüfen
Du kannst nun in den Unterordner „images“ gehen. Dort sollte sich nun eine passende Firmware für deine FRITZ!Box gefinden.

# ls -l images

13. FRITZ!Box vorbereiten
Verbinde deine FRITZ!Box nun mit einem LAN-Kabel (RJ45) mit deinem PC.
Nutze dabei an der FRITZ!Box den LAN-Port 1 und ein RJ45-Port an deinem PC.
Trenne auch jegliche Internetanbindung von deinem PC, sodass er nur noch eine Verbindung zur FRITZ!Box hat, welche mit Freetz-NG ausgestattet werden soll.
Die FRITZ!Box sollte daher auch kein Internetzugang mehr haben.
(DSL-Kabel ziehen / WAN-Port-Kabel ziehen)
Ebenfalls MUSS die Box nun erst mal stromlos sein!

14. Flash-Tool starten
Starte nun in deiner virtuellen Maschine das Flash-Tool, welches gleich die Firmware auf die Box aufspielt.
Du musst nach dem Ausführen das ganze mit Y für YES bestätigen.

# tools/push_firmware

Das Tool wartet nun auf die Box und wird im passenden Moment die aktuellste Firmware aus dem Ordner „images“ aufspielen.

15. Die FRITZ!Box mit Strom versorgen
Versorge nun die Box wieder mit Strom und lass sie starten.
Soweit eine Anbindung zum PC steht, wird das Flash-Tool die Box beim Booten abfangen und die neuste Firmware installieren.
Dieser Vorgang kann 1-2 Minuten dauern.
Die FRITZ!Box wird dabei mehrfach aufleuchten und lustig vor sich hin blinken.

Ist der Vorgang abgeschlossen, gib der Box noch einmal 5 Minuten Zeit, sauber zu starten.

Allgemeiner Hinweis: Auf der Projektseite steht, dass man die Firmware ganz “bequem” per Webinterface hochladen könnte. Das geht seit Firmware-Version >6.5X nicht mehr! Daher müssen wir das Flash-Tool nutzen.

16. Die FRITZ!Box wieder ans Netzwerk anschließen
Du kannst nun die FRITZ!Box wieder ganz normal ans Netzwerk anschließen.
Alle Einstellungen sollten beibehalten worden sein.
War sie z.B. als Repeater in Betrieb, wird sie diesen Job auch wieder aufnehmen.

17. Login ins Webinterface
Öffne nun einen Browser am Rechner, sofern dieser wieder mit dem normalen Netzwerk verbunden ist.
Gehe in die Adressleiste und gebe die IP-Adresse der FRITZ!Box ein.
Du solltest nun das ganz normale Webinterface sehen.
Hast du das Logo geändert, solltest du nun auch ein modifiziertes AVM-Logo sehen.
Das Zugangspasswort für das FRITZ!Box-Webinterface hat sich NICHT geändert.
Du solltest also wie gewohnt rein kommen.

Über den Port 81, steht nun ein neues Webinterface von Freetz-NG zur Verfügung.
Also öffne mal http://192.168.178.1:81 im Webbrowser.
Der Standardlogin hierfür ist erst mal folgender:
Benutzer: admin
Passwort: freetz

Für den SSH-Login gibt es aktuellen folgenden Login:
Benutzer: root
Passwort: freetz

Damit kommen wir auch zum Ende, den Freetz-NG läuft nun auf deiner FRITZ!Box!


Hier habe ich noch weiterführende Links, die dir bei der Fehlersuche helfen könnten.
FAQ wo viele Probleme geklärt sind:
https://freetz-ng.github.io/freetz-ng/wiki/00_FAQ/FAQ.de.html#wie-lautet-das-standard-passwort-f%C3%BCr-freetz

Installationsanleitungen für andere UNIX-Systeme:
https://freetz-ng.github.io/freetz-ng/wiki/10_Beginner/install.en.html#linux

Unterstützte Geräte:
https://freetz-ng.github.io/freetz-ng/FIRMWARES.html

Repos:
https://github.com/Freetz-NG/freetz-ng
https://gitlab.com/Freetz-NG/freetz-ng/-/tree/master
https://bitbucket.org/Freetz-NG/freetz-ng/src/master/


Diese Anleitung wurde mit einer FRITZ!Box 7490 (Frimware 7.29) getestet und erstellt.

15 Kommentare

  1. Hallo ich nochmal. ich vermute diese Fritzbox von mir ist zu alt. Deshalb wird auch kein Image mehr gefunden bei AVM.
    Ich habe das mit einer 7490 getestet da läd er wesentlich länger zeigt aber am Ende auch einen das er libelf.h nichtgefunden hat. Ich werde weiter probieren.

    • Hi René,
      ganz unten steht ein super Hinweis für dich 😉
      Ich habe die Anleitung auch mit Hilfe einer 7490 umgesetzt.
      Die ganzen Revisionen davon sollten noch unterstützt werden. Dafür kann man auch über den FTP die passenden Recoverys runterladen.

  2. Bei mir kommt dann immer bei “14. Flash-Tool starten” immer eine Fehlermeldung.

    You have to install “ncftp” or “ftp” in order to use this script.

    Was kann ich dann machen? Übrigen wo bekomme ich eigentlich Flash-Tool her?

  3. ich versuche ein image für FB 6490. in der Configdatei ist FB 6490 auf yes gesetzt.
    aber wenn ich den befehle make ausführe erstellt das Programm immer ein image für 7490.
    mehrmals versucht immer dasselbe Ergibnis.
    hat jeman eine Lösung oder mach ich irgendwas falsch?

    • Hast du im Konfigurationstool auch deine 6490 ausgewählt?
      Soweit das korrekt dort gesetzt wurde, sollte es eigentlich sauber durchlaufen und dir eine passende Version ausgeben.
      Wenn nicht, schreib mal den Entwickler über GitHub, vielleicht gibts hier doch ein Bug.

  4. Hallo Sameh. Hatte am Anfang auch Problem gehabt. Nun habe ich aber eigene Fehler festgestellt. In Konfigurationstool musst du in “Hardware series” -> All devices nehmen. Und dann in “Hardware type” -> 6490 auswählen.
    Dann hat es bei mir Funktioniert.

  5. Hallo, vielen Dank für Ihre Rückmeldung.
    ich habe geneu das gemacht und danch nochmal die .config Datai kontrolliert.
    in der config Datei steht genau das in den Zeilen 81 bis 88
    “Cable
    # freetz_type_6430 ist not set
    freetz_type_6490=y
    # freetz_type_6590 ist not set
    # freetz_type_6591 ist not set
    # freetz_type_6660 ist not set
    # freetz_type_6690 ist not set. “”
    wenn ich den Befehl make ausführe erstellt das Programm trotzdem ein Image von FB 7590.
    ich habe den gesamsten Ordner freetz-ng gelöscht und wieder die Datei von Github neu geladen aber immer wieder dasselbe Problem.
    außerdem konnte ich keine ftp Verbindung aufbauen obwohle das Netzwerk am VM richtig eingestellt ist. eine ftp Verbindung über win cmd mit dem user adam2 konnte ich problemlos mit dem Fritzbox herstellen ich kann aber leider die Firmware nicht pushen. gibts es alternative, die Firmware an FB zu übertragen?
    viele Grüße

  6. Hallo,
    Vielen Dank für die gute Anleitung – im Ergebnis habe ich folgendes Problem:
    Mehrere Build führen zu sehr unterschiedlichen binär-Images, auch wenn der make im Minutentakt ausgeführt – Die Dateigröße ist identisch, die Images unterscheiden sich ab der Position 1178, danach geht es bis 3536989 synchron weiter und dann ist fast bis zum Ende alles ungleich. Der zweite Bereich ab dem die Unterschiede auftauchen wird eingeleitet von “brcma9_HW256_squashFS_filesystem”, handelt es sich hierbei um ein nicht-determistisches Schreiben in ein Dateisystem???
    Diese großen Unterschiede empfinde ich zunächst als merkwürdig, fällt jemand etwas dazu ein?

  7. Ich habe das Problem in github gepostet, es ist dort in Bearbeitung – die Ungleichheit rührt wohl hauptsächlich von dem integrierten, komprimierenden squashFS.
    Ich habe Deine Anleitung mal in ein sh-Skript geschrieben – so kann der gesamte Build automatisiert augeführt werden:
    #!/bin/bash
    #
    # Freetzing (leicht gemacht???) - alternative/additive FW für Fritz!Boxen
    # Image Build für Freetz-NG
    # debian 11 Minimalinstallation in VM 4GB RAM / 40 GB Storage
    # Als root starten / User des Namens user muss bereits angelegt sein
    #
    # System auf den neuesten Stand bringen
    #
    apt update && apt upgrade -y && apt dist-upgrade -y
    #
    # Vorab notwendige Pakete installieren:
    # wget : Download von Spezial-Package
    # git : Clonen des Freetz-NG-Projekts aus github
    # net-tools : Von push_firmware verwendet (oldstyle ifconfig)
    # ftp : Für push_firmware
    #
    apt install wget git net-tools ftp -y
    wget -O /home/user/execstack.deb http://ftp.de.debian.org/debian/pool/main/p/prelink/execstack_0.0.20131005-1+b10_amd64.deb
    apt install /home/user/execstack.deb
    echo "export PATH=$PATH:/usr/sbin" >> /root/.bashrc
    echo "export PATH=$PATH:/usr/sbin" >> /home/user/.bashrc
    su - user -c "git clone https://github.com/Freetz-NG/freetz-ng /home/user/freetz-ng"
    /home/user/freetz-ng/tools/prerequisites install
    su - user -c "cd /home/user/freetz-ng; make menuconfig; make"
    #
    # Vorbereitung/Duchführung wie für FB-Recovery, statt AVM *-recover.exe wird push_firmware mit ftp verwendet
    #
    # tools/push_firmware
    # FB Einschalten => Flash + automatischer Neustart => Standard-Web-Interface
    # Original Interface und Settings sollten erhalten sein
    # Freetz-Interface auf Port 81
    #

  8. Hi und herzlichen Dank für Anleitung. Alles wunderbar geklappt.
    Bis auf Flash per make push-firmware.

    Box Verbindung ist da, dann wird es aber irgenwie nich drauf geschrieben.
    Kann das Ergebnis nicht interpertieren und würde mich über hilfe freuen.

    Wie kopier eich den Konsolentext eigentlich aus der Konsole?
    Habe mir hier mit We trasnfer Screenshot Upload beholfen.
    –> kannst es gern bei Deiner Antwort hier mit anhängen; bitte hier, dann haben ja alle was davon:

    https://we.tl/t-3FnSAKJ0ag

    Danke VG JAna

    • Hi Jana,
      der Screenshot gibt mir leider nicht viel Informationen her.
      Am besten mal bei GitHub ein Issue erstellen und genauer Box-Typ + bisherige AVM Firmware nennen.
      Eventuell gibts da gerade ein kleinen Fehler.

  9. Soweit hat alles gut funktioniert, vielen Dank für die Anleitung. Einzig NcFTPPut wollte nicht und musste durch ftp ersetzt werden.

  10. Hm, ich dachte ich teste das mal in crostini (debian 11) und stelle fest: der build scheitert an fehlenden permissions. mal sehen, ob ich das noch herausbekomme. die anleitung – und das bash-script hier in den kommentaren – sind jedenfalls schön und klar; danke dafür!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.