OpenWRT on FritzBox!

Hallo IT-Begeisterte,

Ziel: weitgehend werbe-frei im Internet surfen ohne auf jedem Gerät am Browser ein adblock plugin installieren zu müssen.

Nachdem es zurzeit (Q1 2022) keine Raspberrys neu zu kaufen gibt und die paar Angebote von privat völlig überteuert sind wurde ich eher durch Zufall auf die mögliche Lösung von OpenWRT aufmerksam.

Zuvor wurde Pi Hole mit einem „Medion AKOYA Mini E1210“ und installiertem 32bit Ubuntu 18 lite verwendet. Das Notebook lief also die ganze Zeit mit einem Stromverbrauch von etwa 12W, was schon erstaunlich wenig war wenn man bedenkt wie alt das Gerät (ca. 2009) ist.

Mit einem OpenWRT System auf der FritzBox hat man sogar noch mehr technische Möglichkeiten auf Netzwerk-ebene als mit einem Raspberry Pi Computer.

Gut 20 verschiedene Fritzboxen werden lt. Table of Hardware als supported gelistet. Soweit ich beurteilen konnte ist die Fritzbox 7530 nicht nur die Leistungsstärkste sondern zugleich auch dank moderner Hardware (ARMv7 Processor rev 5 (v7l) die sparsamste Fritzbox in Sachen Energieverbrauch.

ModelVersionSoCCPU MHzFlash MBRAM MBWLAN HardwareWLAN2.4WLAN5.0100M portsGbit portsModemUSB
FRITZ!Box 7530Qualcomm IPQ4019716128NAND256Qualcomm IPQ4019b/g/na/n/ac4xDSL1x 3.0

Alternativ wäre auch ein FritzBox 4040 (ohne DSL Modem dafür mit eth WAN Interface) denkbar. In meinem Fall bekam ich die 7530 geschenkt und wurde dann auch umgebaut.

Jetzt aber geht es aber mal los.

Vorbereitung:

Am besten eignet sich ein Laptop mit Windows, Linux oder MacOS. Ich habe Windows 10 verwendet. Als Software braucht man: einen TFTP Server, WinSCP zur Dateiübertragung, SSH Client z.B. putty; Python ver. 3.x muss installiert sein.

Die Fritzbox ist bereits zurückgesetzt und ausgeschaltet und liegt bereits mit LAN Kabel am Notebook angeschlossen bereit. Das LAN Interface vom Laptop muss zwingend mit einer festen IP aus dem 192.168.178.0/24 Netz konfiguriert sein. Die 1 verwendet die FB. Es sollte also eine andere Nr. sein z.B. die 192.168.178.2.

Außerdem sollten zuvor alle nötigen Files schon heruntergeladen, z.T. umbenannt und im richtigen Ordner liegen. Für openwrt-21.02.2 habe ich alle nötigen Files hier heruntergeladen und im zuvor angelegten Ordner c:\openwrt abgelegt. Wichtig: die Datei openwrt-21.02.0-ipq40xx-generic-avm_fritzbox-7530-initramfs-fit-uImage.itb muss nach FRITZ7530.bin umbenannt werden.

Desweiteren wird eine Datei mit Endung py als Python script mit folgendem Inhalt im gleichen Ordner angelegt werden die dann bereits so in einer commando shell ausgeführt werden kann, sobald nach einschalten der Fritzbox am LAN Adapter ein link bzw. die Verbindung angezeigt wird.

eva_ramboot.py --offset 0x85000000 192.168.178.1 uboot-fritz7530.bin

Das muss sehr zeitnah erfolgen. Am besten also LAN Status Fenster und commando shell Fenster nebeneinander ausrichten, dass man beide sichtbar hat. Bei Erfolg sollte folgender output zu sehen sein, falls nicht, Fritzbox auschalten und Vorgang wiederholen:

Code:
> SETENV memsize 0x00080000
< 200 SETENV command successful
> SETENV kernel_args_tmp mtdram1=0x85000000,0x88000000
< 200 SETENV command successful
> MEDIA SDRAM
< 200 Media set to MEDIA_SDRAM

Als nächstes muss dann die IP vom LAN Interface auf eine aus dem 192.168.1.0/24 Netz vergeben werden. Die 1 verwendet die Firtzbox selbst. Wir vergeben/ändern also z.B. die IP Adresse zu 192.168.1.2. Aufpassen: Sollte das WLAN sich bereits im gleichen Netz verbunden haben, sollte das WLAN Interface deaktiviert werden.

Wenn bereits der TFTP Server läuft mit entsprechender eingestelltem Pfad auf c:\openwrt mit den nötigen Dateien läuft, sollte eine Datei automatisch zur Fritzbox übertragen worden sein: FRITZ7530.bin (ehemals openwrt-21.02.0-ipq40xx-generic-avm_fritzbox-7530-initramfs-fit-uImage.itb)

Jetzt startet sozusagen erst die Box bzw. das OS und sollte via ping auf 192.168.1.1 erreichbar sein. Der TFTP Server kann nun geschlossen werden.

Um das neue OS openWRT zu flashen werden zunächst via WinSCP mit Protokoll SCP und user root ohne PW zwei Dateien zur Box in’s /tmp Verzeichnis übertragen.

uboot-fritz7530.bin

openwrt-21.02.0-ipq40xx-generic-avm_fritzbox-7530-squashfs-sysupgrade.bin

Nun kann WinSCP geschlossen und mit putty zur FritzBox 192.168.1.1 verbunden werden. Auch hier root als user logon ohne PW verwenden.

am besten in’s /tmp Verzeichnis wechseln und dann….

mtd write uboot-fritz7530.bin uboot0

mtd write uboot-fritz7530.bin uboot1

sysupgrade -n openwrt-21.02.0-ipq40xx-generic-avm_fritzbox-7530-squashfs-sysupgrade.bin

…ausführen. Die Box startet automatisch neu und ist nach etwa 1min unter https://192.168.1.1/cgi-bin/luci/ zu errichen.

Abschließend passte ich nach dem reboot noch die IP Adresse auf 192.168.1.254 an, da die 192.168.1.1 bereits von meiner 7560 belegt ist.

Die 192.168.1.254 war dann gleichzeitig auch die IP meines PiHole Laptops, was zwischenzeitlich abgeschaltet wurde. Ich installierte das Adblocker addon, was dann auch schon hervorragend in den Standardeinstellungen funktionierte. Ich passte lediglich die Einstellung für „Don’t check SSL server certificates during download“ an und stellte auf wget für „pre-configured download utilities.“ um. wget muss zuvor, wie adblocker, installiert werden. Unter System -> Scheduled Tasks habe ich noch

# Adblock Reload
45 06 * * * /etc/init.d/adblock restart

eingetragen. Das sollte jeden Morgen ein URL Listenupdate antriggern.

Nachgemessen verbraucht die Box nur 4,5W mit aktiviertem WiFi für 2,4 und 5GHz.