Asus Router

Monitor and manage Asus routers running AsusWRT/AsusWRT-Merlin firmware. Supports status checks, client/top-talker lists, presence detection, AiMesh topology, WAN/port/VPN/firmware diagnostics, raw AsusData dumps, and safe reboots. Works with ZenWiFi, RT/GT/ExpertWiFi, Wi-Fi 6/6E/7, and other AsusWRT-based routers.

Audits

Pass

Install

openclaw skills install asus-router

Asus Router Management

Manage Asus routers via the asusrouter Python library. Works with any router running stock AsusWRT, AsusWRT-Merlin, or Merlin/GNUton firmware that exposes the local AsusWRT web API.

Setup

1. Install dependencies

pip install asusrouter aiohttp

2. Create config file

Copy config.example.yaml to config.yaml and fill in your router details:

cp skills/asus-router/config.example.yaml skills/asus-router/config.yaml

Edit config.yaml with your router's IP, username, and password.

3. Verify connection

python3 skills/asus-router/router.py status

Supported Routers

Any Asus router with the AsusWRT web interface:

  • ZenWiFi (XT8, XT12, XD6, etc.) — full AiMesh support
  • RT-AX series (RT-AX86U, RT-AX88U, etc.)
  • GT-AX gaming series
  • ExpertWiFi / Wi-Fi 7 models that expose AsusWRT 5 / 3.0.0.6 APIs
  • Merlin firmware variants
  • AiMesh nodes (RP-AX56, RP-AX58, etc.)

Commands

All commands use router.py. Activate your venv first if using one.

Quick Status

python3 router.py status          # WAN, CPU, RAM, mesh nodes, client count
python3 router.py status --json   # Machine-readable output

List Connected Devices

python3 router.py clients              # All devices
python3 router.py clients --online     # Online only
python3 router.py clients --filter "iphone"   # Search by name/IP/MAC
python3 router.py clients --sort speed --limit 10  # Current top talkers
python3 router.py clients --sort signal            # Weak/strong Wi-Fi clients
python3 router.py clients --json       # JSON output

Who's Home (Presence Detection)

python3 router.py who

Checks for known devices defined in config.yaml to determine who's home.

WAN Details

python3 router.py wan          # IP, gateway, DNS, lease, dual-WAN
python3 router.py wan --json

AiMesh Topology

python3 router.py mesh         # Which clients connect to which node
python3 router.py mesh --json

Find a Device

python3 router.py find "samsung"
python3 router.py find "192.168.1.100"
python3 router.py find "AA:BB:CC:DD:EE:FF"

Network Latency Check

python3 router.py ping

Firmware / Ports / VPN / Health

python3 router.py firmware          # Firmware, system info, release-note data when exposed
python3 router.py ports             # Ethernet port/link status
python3 router.py vpn               # OpenVPN, WireGuard, VPN client status as JSON
python3 router.py health            # Alert-friendly WAN/CPU/RAM/firmware/ports/VPN bundle
python3 router.py raw firmware      # Dump any AsusData dataset by name

raw is intentionally included so the skill keeps working as AsusWRT 5 / ExpertWiFi / Guest Network Pro / VLAN-era firmware exposes new datasets through asusrouter before this wrapper has a pretty command for them. Pings targets defined in config.yaml (default: gateway + Cloudflare + Google).

Reboot Router

python3 router.py reboot --confirm

⚠️ Requires --confirm flag. Causes 2-3 min downtime.

Common Tasks

"Is the internet down?"

  1. status — check WAN link state
  2. ping — check latency to external IPs
  3. wan — check DHCP lease and DNS

"What's using bandwidth?"

clients --online --json — check rx_speed/tx_speed fields

"Who's home?"

who — checks for devices listed in config.yaml under known_devices

"Why is WiFi slow?"

  1. mesh — check client distribution across nodes
  2. status — check CPU/RAM (high CPU = overloaded)
  3. find <device> — check signal strength (rssi)

Configuration

All settings live in config.yaml. See config.example.yaml for the full template.

Key settings:

  • router.host — Router IP address
  • router.username — Admin username
  • router.password — Admin password
  • router.ssl — Use HTTPS (default: false)
  • router.port — Optional web UI/API port, commonly 8443 for HTTPS local access
  • known_devices — Devices for presence detection
  • ping_targets — Custom ping targets for latency checks

For modern routers, prefer HTTPS local access when stable: enable it in AsusWRT under Administration → System → Local Access Config → Authentication Method, then set ssl: true and the configured port.

JSON Output

Add --json to any command for machine-readable output. Useful for cron jobs, heartbeat checks, and alerting.

Integration with Home Assistant

For persistent monitoring, also install ha-asusrouter via HACS: https://github.com/Vaskivskyi/ha-asusrouter