Skip to content

Welcome to Freetz-EVO

Text Only
  _____              _            _______     _____
 |  ___| __ ___  ___| |_ ____    | ____\ \   / / _ \
 | |_ | '__/ _ \/ _ \ __|_  /____|  _|  \ \ / / | | |
 |  _|| | |  __/  __/ |_ / /_____| |___  \ V /| |_| |
 |_|  |_|  \___|\___|\__/___|    |_____|  \_/  \___/

Freetz-EVO is a fork of Freetz-NG, which remains the technical foundation of this project.
Freetz-EVO builds on that foundation with additional packages, UX improvements, and workflow tooling. Freetz-EVO is easier, sleeker, with more features and less bugs.

Relevant new packages include GCC on-device, nginx, rtorrent, ruTorrent, PHP,
AI translation for non EN and DE languages, more explicit error/warning messages, an advanced GitHub Action for testing new developments, and many other new packages.

Freetz-EVO is continuously kept in sync with the upstream Freetz-NG
repository: upstream fixes, new firmware support, and toolchain updates are regularly merged so Freetz-EVO keeps evolving on top of the latest Freetz-NG base.

Getting Started

New to Freetz-EVO? The Getting Started guide walks you through the complete workflow: setting up a Linux build environment (including WSL on Windows), configuring the firmware, building it, and flashing your device.

Improvements over Freetz-NG

Note: all new packages are currently developed and tested on an AVM FRITZ!Box 7590 AX with firmware FRITZ!OS 8.20.

UX and Web Interface

The Freetz-EVO web interface features a completely redesigned, fully responsive skin ("EVO skin"). On mobile devices, the navigation adapts to a fixed bottom bar with a slide-up drawer for sub-menus and sub-pages; on desktop and tablet a horizontal top menu with hover dropdowns is used, with an optional hamburger mode that collapses the top bar into a right-side slide-in panel. Dark mode, page-width toggle, and per-device preferences are persisted in cookies for a consistent experience across page loads and devices.

The web interface can be added to the home screen on any smartphone (Android or iOS) for an app-like experience; on Android, Samsung Internet delivers a full PWA-quality install. With freetz_proxy and HTTPS the full PWA install prompt is available, and the same HTTPS URL works remotely via MyFRITZ! without port-forwarding. See docs/mobile.md for detailed setup instructions.

The authentication layer has been updated to support a form-based session login (in addition to the legacy HTTP Basic Auth mode). When the New login with session id option is enabled, the web interface presents a custom HTML login page instead of the native browser credential dialog; access is protected by a session cookie with a configurable inactivity timeout, persisted across browser restarts, so re-opening the browser within an active session no longer forces re-authentication. A bug in passwd_save.sh that caused the stored password hash to include the username prefix — making any password change break subsequent logins — has been fixed. The session cookie has been hardened: the session ID is now generated from /dev/urandom (128-bit CSPRNG) instead of a predictable MD5 of the login timestamp, and the cookie is issued with HttpOnly (blocks JavaScript access, preventing XSS-based session hijacking) and SameSite=Strict (blocks all cross-site request forgery, including top-level navigation from external links) flags.

Interactive UI Mockup — live preview of the Freetz-EVO web interface (no device needed)

New packages

Package Description Status
aria2 / AriaNg Multi-protocol download utility (HTTP, FTP, BitTorrent, Metalink) with a full web UI (AriaNg) and CGI integration. EVO only
rTorrent 0.16.7 / ruTorrent 5.2.10 Feature-rich BitTorrent client with a complete web interface, CGI backend, and config editor. EVO only
aMUTorrent 3.5.0 Static web frontend compatible with Transmission-style RPC backends. EVO only
flood-for-transmission 1.0.1 Static Transmission frontend integrated as selectable option in the Transmission package menu. EVO only
transmission-web-control (commit snapshot) Static Transmission Web frontend. EVO only
Transmissionic web UI 1.8.0 Static Transmission frontend integrated in the Transmission package menu. EVO only
TrguiNG web 1.5.1 Static Transmission frontend integrated in the Transmission package menu. EVO only
freetz_proxy Lightweight CGI HTTPS↔HTTP reverse proxy and index gateway, with HTML/CSS/JS URL rewriting and CDN proxying. Accessible via MyFRITZ! and from the internet without port-forwarding. When included, the Fritz logo and the AVM user menu gain direct links to the Freetz menus (through the proxy). EVO only
Nginx 1.29 High-performance HTTP/reverse-proxy server with MIPS/ARM cross-compilation fixes and optional externalization. EVO only
PHP 8.4 / 8.5 Modern PHP interpreter with multi-version selection (5.6 legacy, 8.4, 8.5), bzip2, libxml2, libatomic support. upstream has PHP 5.6 only
QuickJS (2026-03-23 git snapshot) Lightweight embeddable JavaScript engine, packaged with qjs and optional qjsc compiler support. EVO only
Python 3.14 Python 3.14.3 with zip-importer fix, patchelf RPATH support, and build scripts for external deployment. upstream has 3.14 too
python3-* (58 modules) New Python 3 third-party packages: aiodns 4.0.0, aiohttp 3.13.3, aiohttp-asyncmdnsresolver 0.1.1, aiohttp-fast-zlib 0.3.0, aiohappyeyeballs 2.6.1, aiosignal 1.4.0, annotatedyaml 1.0.2, async-timeout 5.0.1, attrs 26.1.0, av 16.0.1, audioop-lts 0.2.1, bcrypt 3.2.2, brotli 1.2.0, cffi 1.17.1, charset-normalizer 3.4.6, ciso8601 2.3.3, dateutil 2.9.0.post0, dbus-fast 4.0.0, faust-cchardet 2.1.19, fnv-hash-fast 1.6.0, fnvhash 0.2.1, frozenlist 1.8.0, grpcio 1.78.0, grpcio-reflection 1.78.1, grpcio-status 1.78.1, h11 0.16.0, ha-ffmpeg 3.2.2, httpcore 1.0.9, httpx 0.28.1, idna 3.11, lru-dict 1.4.1, lxml 6.0.2, markupsafe 3.0.3, multidict 6.7.1, numpy 2.4.3, pandas 3.0.1, pillow 12.1.1, pip 26.0.1, propcache 0.4.1, psutil 7.2.2, pycares 5.0.1, pycparser 3.0, pycryptodome 3.23.0, pymicro-vad 2.0.1, pynacl 1.6.2, pyspeex-noise 2.0.0, pyturbojpeg 2.2.0, pyyaml 6.0.3, setuptools 82.0.1, six 1.17.0, voluptuous 0.16.0, webrtc-models 0.3.0, yarl 1.23.0, zeroconf 0.148.0, python3-certifi 2025.10.5, python3-ifaddr 0.2.0, python3-mashumaro 3.17, python3-orjson 3.10.7, typing_extensions 4.15.0. Of which, pure-Python runtime modules (no compiled extensions) are: aiohappyeyeballs, aiosignal, async-timeout, attrs, charset-normalizer, dateutil, fnvhash, h11, idna, pycparser, six, voluptuous, certifi, ifaddr, mashumaro, typing_extensions. Build-time tooling (not required at runtime): pip, setuptools. EVO only
ttyd 1.7.7 Web-based terminal server: exposes any shell command over WebSocket; CGI page embeds a full xterm.js terminal with 7 themes, fullscreen, search, font-size controls, and canvas renderer. EVO only
GitHub CLI (gh) 2.83.2 GitHub CLI tool with Go host-tool integration, allowing GitHub API interaction from the FritzBox. EVO only
util-linux Dual-version support (2.27.1 / 2.41) with Disk Tools category and utilities like lsblk, fdisk, blkid. upstream has 2.27.1; EVO adds 2.41
elFinder 2.1.66 Full-featured web-based file manager for the FritzBox with enhancements: drag-and-drop UI, PHP connector (squashfs-safe), FTP remote volumes, video preview (with complete seek back and limited seek forward features), Movie plugin (scaping metadata from TMDb, OMDb, IMDb, Wikipedia; specific for Freetz-EVO), MediaInfo plugin (specific for Freetz-EVO), VLC plugin (specific for Freetz-EVO), unrar/7-Zip support, optional themes with theme selection plugin (specific for Freetz-EVO), multilingual (de/en/it/…), better status bar (specific for Freetz-EVO). EVO only
MediaInfo / libmediainfo / libzen / libxmlrpc Media file analysis tool with full library stack; reports codecs, bitrates, resolution, and metadata. EVO only
proc-ps Improved ps replacement backed by procps-ng with richer process information output. merged upstream
cpulimit 0.2 Limits the CPU usage of a process to a given percentage; prevents runaway processes from overloading the device. package improvement
microperl 5.38 Minimal Perl 5.38.2 interpreter (alongside legacy 5.10.1) with full stub library set for embedded use. upstream has 5.10.1; EVO adds 5.38.2
zip 3.0 (infozip) Standard zip archiver for creating ZIP archives directly on the device. merged upstream
gdb 17.1 GNU Debugger version 17.1 for on-device debugging of binaries and crash analysis. EVO only for 17.1 (upstream has 6.8/7.9.1)
patchelf (target) ELF binary patcher for fixing RPATH and dynamic linker paths on cross-compiled binaries. merged upstream
binutils-tools (c++filt, elfedit, nm, objdump) Additional binutils utilities for binary inspection and symbol demangling on the device. merged upstream
libnettle Low-level cryptographic library (AES, SHA, RSA) used by GnuTLS and other packages. upstream has nettle
libzen Helper library required by MediaInfo for portable C++ utilities. EVO only
libxmlrpc XML-RPC library for rTorrent's SCGI/RPC interface; host tool gennmtab moved to make/host-tools. EVO only
libwebsockets 4.3.9 Canonical C WebSocket library; optional SSL/TLS support via OpenSSL. EVO only
json-c 0.17 Lightweight JSON parser/serialiser library. EVO only
libcares (c-ares) Asynchronous DNS resolver library used by aria2 and curl. EVO only
libjemalloc 5.3.0 General-purpose allocator replacing uClibc malloc; required by aria2 to avoid SIGFPE on MIPS/uClibc-1.0.57. EVO only
libtcmalloc_minimal (gperftools) Thread-caching allocator from gperftools; low-overhead alternative to the system allocator. EVO only
libprofiler (gperftools) CPU profiler from gperftools; co-installed with libtcmalloc_minimal. EVO only
libssl (OpenSSL) OpenSSL SSL/TLS library; legacy provider module legacy.so added for OpenSSL 3.x compatibility (deprecated algorithms via provider API). EVO only
openlibm Portable standalone C math library (libopenlibm.so) for consistent libm behavior across platforms and toolchains. EVO only
tflite-micro (TFLM) 20260318 TensorFlow Lite for Microcontrollers: static library (libtflm.a) for on-device ML inference. Builds the full TFLM kernel set (conv2d, depthwise conv, LSTM, softmax, fully connected, etc.) from the official flat-source-tree generator. EVO only
llama.cpp b8575 CPU-only LLM inference engine for running quantized GGUF language models on-device (no GPU). Includes llama-cli (interactive inference), llama-server (OpenAI-compatible REST API on port 8080), llama-quantize (model quantization), and optional tools (llama-bench, llama-perplexity, llama-tokenize, llama-imatrix, llama-gguf-split, llama-tts, llama-mtmd-cli). Models stored on USB/NAS storage. Shared libraries (libllama.so, libggml*.so). EVO only

For a full description of freetz_proxy, see docs/make/freetz-proxy.md.

Python 2 third-party modules fix

Added python-pip for python2. All 13 python-* cross-compilation modules (python-bjoern, python-cffi, python-cheetah,
python-pycurl, python-pycryptodome, python-pyopenssl, etc.) were broken during cross-compilation
due to missing environment variables. Freetz-EVO fixes python-module-macros.mk.in by properly
setting CC, CXX, LDSHARED, CFLAGS, PYTHONPATH, and build_ext --library-dirs to point
to the target staging directory instead of the host.

Enhanced packages

Package Enhancement
curl Added CA-bundle toggle option; rTorrent uses the curl CA bundle for HTTPS validation.
transmission Added integrated static frontend selectors in the Transmission submenu (flood-for-transmission, TrguiNG web, Transmissionic web UI, transmission-web-control), with package-level installation under /usr/mww/*.
busybox (httpd) Added support for HTTP Range header handling for CGI responses, enabling partial-content workflows with CGI-backed endpoints.
pcre Fixed parallel install race condition; removed stray dev/test files; fixed double-indirection via $(PKG) causing stray root symlinks; JIT disabled for kernel 2.6.39.3.
pcre2 / libpcre2-posix Added select FREETZ_LIB_libpcre2_posix to FREETZ_LIB_libpcre2 (posix wrapper is always built alongside pcre2-8); EXTERNAL_FREETZ_LIB_libpcre2_posix changed to default y so libpcre2-posix.so.3.0.7 is automatically externalized.
libyaml Fixed broken find "$FILESYSTEM_MOD_DIR/..." pattern in external.files (replaced with ${FREETZ_LIBRARY_DIR}/libyaml-0.so.2.0.9, matching the working pcre2 approach); EXTERNAL_FREETZ_LIB_libyaml changed to default y so it is auto-enabled when libyaml is selected.
iptables Fixed missing $ in external.files for VERSION_KERNEL4 conditions, preventing broken externalization.
ffmpeg Fixed missing $ in external.files for VERSION_ABANDON condition, preventing broken externalization.
fwmod Augmented Module.symvers with inter-module CRC symbols before the depmod check; pre-existing AVM inter-module symbol version disagreements are now ignored to avoid false build failures.
p7zip Uses FREETZ_RPATH for correct library path at runtime (merged upstream as PR #1433).
socat Fixed posix_memalign for old uClibc; added VSOCK compatibility for kernels < 4.8 (merged upstream).
bzip2 Library porting for PHP dependency chain (merged upstream).
sqlite Disabled math functions for uClibc 0.9.28/29 compatibility (merged upstream as PR #1346).
iconv / libiconv Forced ABANDON version for uClibc 0.9.28 compatibility.
unrar Variable naming fix and version bump (merged upstream as PR #1384).
patchelf Synced host and target tools; used for RPATH fixing in Python and GCC toolchain.
binutils Fixed RPATH; disabled for armeb; c++filt / elfedit added (merged upstream).
ldd Bumped to version matching current uClibc toolchain (merged upstream).
RRDTool aarch64 support; no border fix for v1.2; no v1.2 without libart_lgpl (merged upstream).
libatomic Externalization with dynamic versioning for PHP dependency (merged upstream).
PSL (libpsl) Uses crosscompiling Python tool instead of host Python.
glib2 Meson cross-build fixes: normalized cross-file tool keys and forced host Python for Meson internal generators to avoid target python3 execution.
Disk tools Updated dosfstools, e2fsprogs, gptfdisk, hdparm, util-linux, and parted (porting, packaging, and menu/externalization improvements).

CI / tooling

Feature Description
make_package workflow Advanced GitHub Actions workflow for per-package build testing with matrix parallelism and detailed failure diagnostics.
sync-upstream workflow Automated workflow to merge upstream Freetz-NG changes into Freetz-EVO on a schedule.
AI translation Automatic translation of web UI labels to foreign languages via LLM, with curated override cache.
ssh_firmware_update.py Python tool to flash a Freetz firmware image to a FRITZ!Box over SSH/SCP, emulating the web update process with interactive/batch modes, progress bars, dry-run and debug options. Merged upstream.
make_progress_monitor.sh Bash script to monitor Freetz cross-compilation build progress in real time (run alongside make in a second terminal). Merged upstream.
sync-upstream-manual.sh Interactive script to merge upstream Freetz-NG changes into Freetz-EVO on demand, with --dry-run, --diff, and --log modes. See docs/SYNC_UPSTREAM.md.

Basic infos:

  • A web interface will be started on port :81, credentials: admin/freetz
  • Default credentials for shell/ssh/telnet access are: root/freetz
  • For more see: ircama.github.io/freetz-evo

Requirements:

Clone the main branch:

Bash
  git clone https://github.com/Ircama/freetz-evo ~/freetz-evo

Or clone a single tag:

Bash
  git clone https://github.com/Ircama/freetz-evo ~/freetz-evo --single-branch --branch TAGNAME

Install prerequisites:

Bash
  cd ~/freetz-evo
  tools/prerequisites install # -y

Build firmware:

Bash
  cd ~/freetz-evo
  make menuconfig
  make
  # make help

Flash firmware:

Bash
  cd ~/freetz-evo
  tools/push_firmware -h

Update freetz firmware via SSH:

Bash
  cd ~/freetz-evo
  tools/ssh_firmware_update.py --host <myIP> --password <myPassword> --batch

Show GIT states:

Bash
  git status
  git diff --no-prefix # --cached # > file.patch
  git log --graph # --oneline

Delete local changes:

Bash
  git checkout master ; git fetch --all --prune ; git reset --hard origin/HEAD ; git clean -fd

Update GIT:

Bash
  git pull

Sync with upstream Freetz-NG:

Bash
  tools/sync-upstream-manual.sh              # interactive merge
  tools/sync-upstream-manual.sh --log        # show pending upstream commits
  tools/sync-upstream-manual.sh --diff       # show diff with upstream
  tools/sync-upstream-manual.sh --dry-run    # test merge without pushing

See docs/SYNC_UPSTREAM.md for full details.

Checkout old revision:

Bash
  git checkout HASH-OF-COMMIT # -b NEW-BRANCH

Checkout another branch:

Bash
  git checkout EXISTING-BRANCH

Mirrors:

Bash
  git clone https://github.com/Ircama/freetz-evo ~/freetz-evo

Documentation:

See https://ircama.github.io/freetz-evo/ (or docs/).

Testing Documentation changes

Bash
  cd ~/freetz-evo
  tools/zensical_httpserver.sh

Language: This repository uses English as its primary language for code, documentation, commit messages, and issues.


License

This repository contains two distinct components under different licences:

  • Freetz-NG base (all content inherited from the upstream Freetz-NG project) is licensed under the GNU General Public License v2.0 (GPL-2.0). See COPYING for the full GPL-2.0 text.

  • Freetz-EVO extensions (all additions, modifications, and new packages introduced by this fork) are licensed under the European Union Public Licence v1.2 (EUPL-1.2). See LICENSE for the full EUPL-1.2 text.

  • Reuse of Freetz-EVO-original files: when files that are original to Freetz-EVO (e.g., package makefiles or other code not derived from upstream Freetz-NG) are reused in other projects, including upstream, their licence remains EUPL-1.2. Reusers should keep the original copyright/licence notices and clearly indicate that those specific files are under EUPL-1.2.

The EUPL-1.2 and GPL-2.0 are explicitly compatible: the EUPL-1.2 Appendix lists GPL v.2 as a Compatible Licence under Article 5. When distributing the combined work, it may be distributed under the terms of the GPL-2.0 via the EUPL-1.2 compatibility clause.