Files
2026-06-13 03:18:28 +02:00

2.1 KiB
Raw Permalink Blame History

napalm-fritzbox

NAPALM community driver for AVM FritzBox routers (read-only, via TR-064).

Requirements

Dependency Minimum version
Python 3.9
NAPALM 4.0
fritzconnection 1.13

Installation

pip install napalm-fritzbox

Or from source:

git clone https://github.com/napalm-automation-community/napalm-fritzbox
cd napalm-fritzbox
pip install -e .

Quick start

from napalm import get_network_driver

driver = get_network_driver("fritzbox")
with driver(
    "192.168.178.1",
    "user",
    "pass",
    optional_args={"use_tls": True},
) as d:
    print(d.get_facts())
    print(d.get_wan_status())
    print(d.get_hosts())

Example

driver = get_network_driver("fritzbox")
d = driver("fritz.box", "user", "pass")
d.open()

print(d.get_wan_status())
print(d.get_port_forwards())
print(d.get_ssids())
print(d.get_wireless_clients())
d.close()

Optional arguments

Argument Default Description
use_tls True Use HTTPS (port 49443) instead of HTTP (port 49000)
port 49443 / 49000 Override the TR-064 port

FritzBox serves TR-064 over HTTPS with a self-signed certificate; fritzconnection does not verify it, so no separate verify option is needed.

Limitations

  • Read-only: configuration management methods (load_merge_candidate, commit_config, ...) are not implemented.
  • get_nat_translations() is derived from the enabled port-forwarding rules — TR-064 does not expose a live connection-tracking table.
  • get_vpn_tunnels() returns an empty dict — FritzOS does not expose VPN tunnel status via TR-064.
  • channel_width, tx_power and frequency in get_radio_status() are not available via TR-064 and are reported as 0.

Development

pip install -e ".[dev]"
pytest tests/

CI

This project includes a GitHub Actions workflow that:

  • Runs unit tests across Python 3.9–3.12
  • Builds sdist and wheel

See .github/workflows/ci.yml.

License

Apache 2.0 — see LICENSE.