fritzWOL
A small text-based tool that connects to a FRITZ!Box — on your local network or remotely through myFritz — lists the devices on your network and lets you pick one to turn on via Wake-on-LAN.
It talks to the router over AVM's TR-064 interface using
fritzconnection.
FritzBox network devices
┏━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━┓
┃ # ┃ Name ┃ IP ┃ MAC ┃ Status ┃
┡━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━╇━━━━━━━━━━━━━━━━━━━╇━━━━━━━━━━━┩
│ 1 │ Gaming-PC │ 192.168.178.42 │ 1C:1B:0D:AA:BB:CC │ ○ offline │
│ 2 │ NAS │ 192.168.178.20 │ 00:11:22:33:44:55 │ ○ offline │
│ 3 │ fritz.box │ 192.168.178.1 │ 34:31:C4:AA:BB:CC │ ● online │
│ 4 │ Living-Room-TV │ 192.168.178.60 │ B8:27:EB:11:22:33 │ ● online │
│ 5 │ Office-Laptop │ 192.168.178.31 │ 3C:22:FB:44:55:66 │ ● online │
└───┴────────────────┴────────────────┴───────────────────┴───────────┘
Select device number to wake (q to quit):
Requirements
- Python 3.12+.
- A FRITZ!Box user with the "FRITZ!Box Settings" permission.
- The target device must support Wake-on-LAN and have it enabled in its
own network adapter / BIOS-UEFI settings, and be known to the FritzBox
(it appears under
Home Network > Network). - For remote access: an active myFritz account and enabled internet access
(
Internet > MyFRITZ! Account).
Install
Install it from PyPI:
pip install fritzwol # or: uv tool install fritzwol / pipx install fritzwol
This puts a fritzwol command on your PATH. To install straight from GitHub
without cloning first:
uv tool install git+https://github.com/jesperschlegel/fritzWOL.git
Or from a local checkout:
uv tool install . # or: pipx install .
For local development instead of a global install:
uv sync
uv run fritzwol # or: uv run fritzwol.py
Usage
Interactive (you will be prompted for anything not supplied):
fritzwol
It prints the known devices (offline ones first, as the usual wake candidates) and lets you pick one by number.
Remote access through myFritz — pass the HTTPS remote-access port your
FRITZ!Box exposes (Internet > Permit Access > FRITZ!Box Services, often 443
or a custom port):
fritzwol --address xxxxxxxxxxxxxxxx.myfritz.net --user myuser --port 443
The default port (49443, the LAN TLS port) only applies to local access. For remote myFritz access you normally need to set
--portto the HTTPS port configured on the box.
Local access on your home network:
fritzwol --address fritz.box --no-tls --user myuser
Just list devices without waking anything:
fritzwol --list
Show only offline devices (the usual wake candidates):
fritzwol --offline-only
Wake a specific MAC address directly (no menu):
fritzwol --mac 00:11:22:33:44:55
Configuration via environment variables
Instead of flags you can set:
| Variable | Meaning |
|---|---|
FRITZ_ADDRESS |
FritzBox address or myfritz hostname |
FRITZ_PORT |
TR-064 port (default 49443 TLS / 49000 not) |
FRITZ_USER |
FritzBox user name |
FRITZ_PASSWORD |
FritzBox password |
FRITZ_TLS |
true/false — use TLS (default true) |
The password is prompted for securely if it is not provided.
How it works
- Connects with
fritzconnection(use_tls=Truefor myFritz). - Reads the host list via the
HostsTR-064 service (get_hosts_info). - Sends
X_AVM-DE_WakeOnLANByMACAddressfor the chosen device's MAC.
A woken device may take a moment to appear as online.
Metadata
Release files for fritzwol 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fritzwol-0.1.1.tar.gz | 24.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fritzwol-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.7 kB
Release files / fritzwol-0.1.1.tar.gz
| Download URL | fritzwol-0.1.1.tar.gz |
|---|---|
| Size | 24.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
befd088059a1a0ad33049de4d0880cc592526fb53d9897e9b6920a94b11a7c6b
|
|
BLAKE2b-256 checksum How to use checksums |
0939040ed9c3cebac5930d14dc0ec0c6f1c912fddc19da51639d5cf2e7dc6285
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 4, 2026.
Transparency logRelease files / fritzwol-0.1.1-py3-none-any.whl
| Download URL | fritzwol-0.1.1-py3-none-any.whl |
|---|---|
| Size | 6.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f29210c007e9832931ccfbd0de8ddfe92fbe0273842f327004aa18227c4e6f87
|
|
BLAKE2b-256 checksum How to use checksums |
e227e272d61d11a6875f3e25f50f8f8ffd78420ce8780cabc7de32395a8d175f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
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 Jul 4, 2026.
Transparency log