frewe-client selbst bauen

Für diejenigen, die auf die Freetz-Firmware umsteigen oder die Wetter-Software gerne selbst bauen, hier eine Anleitung, wie man frewe-client für Fritzbox unter Freetz kompiliert. Vielleicht hat jemand Lust, frewe-client auch unter OpenWRT zu bauen? Eine Anleitung dazu wäre super!

Schritt 1. Freetz-Umgebung bauen

Freetz ist eine Firmware-Erweiterung für Fritzbox, die eigene Software kompilieren und einbinden lässt. Die modifizierte Firmware darf man nicht einfach fertig zum Herunterladen anbieten, sie muss daher „gebaut“ werden. Das geht am einfachsten auf einem virtuellen Linux-Rechner, der nur zum Kompilieren gebraucht wird und sobald alles läuft gelöscht werden kann.

Für die Virtualisierung habe ich unter Windows 7 den kostenlosen MS Virtual PC genommen und darauf den letzten Debian Linux vom Netinst Image installiert. Achtung: Die virtuelle Festplatte wird schnell 10-15 GB groß.

# Create a new virtual PC
# Download latest Debian netinst image
# Connect E: to Debian ISO Image in Virtual PC settings
# Start virtual PC and install Debian
# Create root and user1 accounts
# Install only system tools, enable Grub, reboot and login
apt-get install ssh
passwd # Set new root pass to smth
ifconfig
# Check IP-Address and set it in the Fritz.box to be static (192.168.178.xxx)
# Connect via SSH with Putty to 192.168.178.xxx
# Install Freetz prerequisites
apt-get -f install
apt-get -y install nano graphicsmagick subversion gcc g++ binutils autoconf automake automake1.9 libtool make bzip2 libncurses5-dev zlib1g-dev flex bison patch texinfo tofrodos gettext pkg-config ecj fastjar realpath perl libstring-crc32-perl ruby ruby1.8 gawk python libusb-dev unzip intltool libglib2.0-dev libacl1-dev libcap-dev composite git
# It installs about 150 packages now
# Building Freetz for Fritzbox 7390
su user1
cd ~
mkdir freetz-7390
cd freetz-7390
svn co http://svn.freetz.org/trunk # Checked out revision <rev>
cd trunk
make menuconfig
# Level of user competence -> Expert
# Hardware type -> Fritzbox 7390
# Other patches -> Freezmount
# Other patches -> Automount filesystems ext2, ext3, ext4, NTFS
# Other patches -> Enable Custom UDEV rules
# Shared Libraries -> USB & FTDI -> libusb-0.1 (libusb-0.1.so)
# Shared Libraries -> USB & FTDI -> libftdi (libftdi.so)
# Shared Libraries -> Crypto & SSL -> OpenSSL (libcrypto.so)
# Busybox Applets -> Editors -> diff & patch
# Packages -> Packages -> Nano
# Packages -> Packages -> nfs-utils 1.2.3
# Packages -> Web Interfaces -> NFSD CGI 0.1
# Look here for other options http://freetz.org/wiki/help/howtos/common/install/menuconfig
# Press ESC until exit and confirm to save config
# Build modified firmware
unset CFLAGS CXXCFLAGS
make
# This takes some time to build the image
# Download image file 7390_<version>-freetz-devel-<rev>.de_<date>-<time>.image from image subfolder using WinSCP

Wenn man will, kann man die modifizierte Firmware jetzt aus dem image-Unterordner herunterladen und auf die Fritzbox flashen. Das ist nicht erforderlich, damit frewe-client läuft. Das Starten der eigenen Software beim Reboot, geht jedoch mit neuester AVM-Firmware nicht und erfordert Freetz-Firmware, siehe FAQs. Zum Flashen logge man sich unter http://fritz.box ein, speichere die Einstellungen und starte ein Firmware-Update aus eigener image-Datei. Das Flashen kann ca. 4-5 Minuten dauern. Wenn die Fritzbox nach dem Reboot aufwacht und alles wie gehabt läuft, ist das Schwierigste schon gemacht. Wenn sie nicht aufwacht, kann man mit dem Wiederherstellungsprogramm von AVM das Update rückgängig machen. Man soll sich jetzt unter http://fritz.box:81/ auf dem Freetz-Webinterface einloggen (User: admin, Pass: freetz), Passwort ändern und Telnet Daemon starten. Anschließend kann man sich per Telnet auf fritz.box einloggen (User: root, Pass: freetz) und mit passwd das Passwort ändern.

Schritt 2. frewe-client kompilieren

Das Kompilieren des Datenloggers frewe-client erfolgt auf dem virtuellen Linux-PC unter der Toolchain von Freetz. Der dortige C-Compiler und die Bibliotheken sind schon so eingestellt, dass das resultierende Programm auf Fritzbox laufen kann.

su user1
cd ~
git clone https://github.com/aloz77/frewe
cd frewe
# Lets compile it with static linked libs
~/freetz-7390/trunk/toolchain/target/bin/mips-linux-uclibc-gcc frewe-client.c http_fetcher.c http_error_codes.c -o frewe-client -static -lusb -lm -lcrypto -march=24kc -Os -pipe -Wa,--trap
# Strip the resulting binary
~/freetz-7390/trunk/toolchain/target/bin/mips-linux-strip frewe-client
# Test binary
file frewe-client
# frewe-client: ELF 32-bit MSB executable, MIPS, MIPS32 rel2 version 1 (SYSV)... stripped

Fertig ist eine frewe-client binary. Und so kann man sie schnell auf die Fritzbox hochladen:

# Upload binary to Fritzbox
ftp fritz.box
# Login ftpuser/ftpuser (=anonymous, it's a good idea to change the login)
mkdir frewe
cd frewe
put frewe-client
quit

Das war’s.

Zum Traumhaus und -garten mit Plan, Durchblick und diesem Baublog

QR Code Business Card