Skip to main content

eva-image-tool

PyPI Python License

Parser, builder, and CLI for the Fritz!Box EVA kernel image format — the TI record container used by AVM's EVA bootloader to hold LZMA-compressed Linux kernels. Pure Python standard library, zero runtime dependencies.

See docs/format-spec.md for the full format specification and docs/format-quickref.md for a one-page summary.

Install

pipx install eva-kernel-image     # recommended for CLI-only use
pip  install eva-kernel-image     # for library use

No external binaries required — everything runs on Python's stdlib lzma, zlib, struct, and argparse.

CLI quickstart

# Inspect an image
eva-image info kernel.image

# Verify checksums (exit 0 if valid, non-zero otherwise)
eva-image verify kernel.image

# Extract kernels + metadata.json to a directory
eva-image extract kernel.image -o extracted/

# Rebuild an image, optionally replacing kernel(s)
eva-image repack kernel.image -o new.image
eva-image repack kernel.image -o new.image \
    --kernel1 patched-primary.bin

# Pack an image from raw kernel binaries
eva-image pack -o new.image \
    --kernel1 kernel1.bin --load1 0x80500000 --entry1 0x80C8B500 \
    --kernel2 kernel2.bin --load2 0x8DFFFFFC --entry2 0x8E691770

Library quickstart

from pathlib import Path
from eva_kernel_image import parse_image, build_image

image = parse_image(Path("kernel.image").read_bytes())

print(f"dual-kernel: {image.dual_header is not None}")
print(f"primary entry: 0x{image.primary.entry_addr:08X}")
print(f"primary uncompressed size: {image.primary.lzma.uncompressed_len}")

# Validate checksums (parser itself does not auto-validate)
for issue in image.validate():
    print(f"warning: {issue}")

# Decompress a kernel
Path("kernel1.bin").write_bytes(image.primary.decompress())

# Replace a kernel and rebuild
image.primary.replace_kernel(Path("patched.bin").read_bytes())
Path("patched.kernel.image").write_bytes(build_image(image))

Supported models

Verified against 18 reference images spanning six product lines:

Model Firmware versions tested
7530 08.02
7560 07.00, 07.12, 07.27, 07.29, 07.30
7580 06.92, 07.27, 07.30
7583 08.03
7590 08.03, 08.10
7590 AX 08.02

Both single-kernel (FEED1281) and dual-kernel (FEED9112) variants are handled, including the legacy inner-signature quirk found on older Fritz!Box 7560 and 7580 builds.

License

see LICENSE.

Metadata

Release files for eva-kernel-image 0.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eva-kernel-image 0.2.0
File Size Uploaded
eva_kernel_image-0.2.0.tar.gz 44.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eva-kernel-image 0.2.0
File Interpreter ABI Platform
eva_kernel_image-0.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 79.4 kB

Release files / eva_kernel_image-0.2.0.tar.gz

Download URL eva_kernel_image-0.2.0.tar.gz
Size 44.6 kB
Tags Source
SHA-256 checksum
How to use checksums
2dca3198c7bcc7129ba1d056bfe15693e0cce5695f677fbdf915300790522827
BLAKE2b-256 checksum
How to use checksums
810677df9a2b97a887702abe03f910a42d21cca4fea3248ec27ffc375a907b8b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 11, 2026.

Transparency log

Release files / eva_kernel_image-0.2.0-py3-none-any.whl

Download URL eva_kernel_image-0.2.0-py3-none-any.whl
Size 34.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a2484b28affdc17f7da70d79697d8e457c04470a847f4193a5d819aacc4897a4
BLAKE2b-256 checksum
How to use checksums
a6aa39ed8125ca0b2f2ca9ebbeca63c062a0985adf15b48b4af25c8730edf6b3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.2.0 This release

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page