Skip to main content

TFTP Router Flasher

TFTP Router Flasher is a cross-platform command-line tool for flashing firmware to routers using the TFTP protocol. It is designed to assist in firmware recovery for routers that support TFTP-based rescue modes, such as many ASUS RT-series models.

This tool is a modern rewrite of the original arescue script by Joonas Nissinen. It has been updated for Python 3, refactored for clarity, and packaged as a CLI utility with improved logging, interface detection, and dependency management.


📚 Contents


✨ Features

  • 🛠️ Automatically configures your network interface for rescue mode
  • 📡 Scans IP ranges to detect routers in recovery mode
  • 📤 Uploads firmware via TFTP using a Python client
  • 🧾 Logs all activity to both console and file
  • 🧪 Includes retry logic and fallback IP configurations
  • 🧰 Packaged for easy installation and CLI use

📦 Installation

Clone the repository and install locally:

git clone https://github.com/vr-ski/tftp-router-flasher.git
cd tftp-router-flasher
pip install .

This will install the CLI command tftp-router-flasher, which you can run from your terminal.

💡 Make sure you're using pip >= 21.3 to ensure proper support for pyproject.toml builds.


🛠️ Build Requirements

Click to expand Linux setup instructions

TFTP Router Flasher depends on Python packages like psutil that include native C extensions. To install successfully, your system must have:

  • A C compiler (e.g. gcc)
  • Python development headers (e.g. Python.h)
  • Build tools (e.g. make, binutils)

🐧 Linux Setup Instructions

✅ Debian / Ubuntu

sudo apt update
sudo apt install build-essential python3-dev

✅ CentOS / RHEL / Fedora

sudo dnf groupinstall "Development Tools"
sudo dnf install python3-devel

✅ Arch Linux

sudo pacman -S base-devel python

✅ Void Linux

sudo xbps-install -S base-devel python3-devel

Once these are installed, you can run:

pip install .

Or, if you're using a virtual environment:

python -m venv .venv
source .venv/bin/activate
pip install .

🚀 Usage

tftp-router-flasher --firmware /path/to/firmware.trx --interface eth0

CLI Options

Flag Description Default
--firmware Path to the firmware file (required)
--interface Network interface to use en0
--hostname Router IP address 192.168.1.1
--timeout TFTP upload timeout (seconds) 120
--no-ping Disable ping check. Useful for some models False
--debug Enable debug logging False

🖥️ Compatibility

Click to view supported platforms

Tested on:

  • ✅ Linux (Debian, Ubuntu, Arch)
  • ✅ macOS
  • ⚠️ Windows (not officially supported due to reliance on ip and route commands)

📄 License

This project is licensed under the GPL-2.0 License.

This project is inspired by arescue by Joonas Nissinen, originally licensed under GPL-2.0. All original credit goes to the author.


🤝 Contributing

Pull requests are welcome! If you’ve tested this with other router models or added new features, feel free to open an issue or submit a PR.


⚠️ Disclaimer

This tool is provided as-is. Flashing firmware can permanently damage your device if done incorrectly. Use at your own risk.

Metadata

Release files for tftp-router-flasher 0.0.1

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

Source distribution (sdist)

Source distribution for tftp-router-flasher 0.0.1
File Size Uploaded
tftp_router_flasher-0.0.1.tar.gz 26.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tftp-router-flasher 0.0.1
File Interpreter ABI Platform
tftp_router_flasher-0.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 41.1 kB

Release files / tftp_router_flasher-0.0.1.tar.gz

Download URL tftp_router_flasher-0.0.1.tar.gz
Size 26.5 kB
Tags Source
SHA-256 checksum
How to use checksums
1de2e50772751ae751295fde32c89ed32f15a693085c673a818fe362b7ed4e97
BLAKE2b-256 checksum
How to use checksums
d81f9510c428243f7257b9a4d9a2821beb049fc066497b1f482a11aa5891ecdb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release files / tftp_router_flasher-0.0.1-py3-none-any.whl

Download URL tftp_router_flasher-0.0.1-py3-none-any.whl
Size 14.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e62016b30cb0b4adfa068984fa1aa42edafe542402a8b1077fe4a971db34c3cd
BLAKE2b-256 checksum
How to use checksums
1e2c30f3d25bd4c5320821f125899b76baebfd6f1b471c495067ea46408a7008
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.11.14

Release history Release notifications | RSS feed

This release

0.0.1 This release

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