giao diện
The Rowa app icon
Android · iOS / iPadOS

Your router, run from your phone.

Open the app and see what is online at home and what is eating the bandwidth. Cut one device off with a tap, set a bedtime for the kids' tablet, change the Wi-Fi password, block ads for the whole house. The app talks straight to the router in your home — no account to create, nobody's server in between.

📱 Per-device internet control ⏰ Schedules by day and hour 🛡️ Ad blocking for the whole house 📶 5G/4G · multi-WAN 🔔 Alerts when something breaks 🔒 No ads, no analytics

Features

What Rowa does

🔌

Per-device internet control

Every machine on the network — name, band, and how much it is pulling right now. One tap cuts the internet for exactly one of them; that machine can still reach the router's own admin page, the printer and the network drive.

Schedules by day and hour

Repeating windows per weekday, per device — a child's tablet at bedtime, for instance. Plus a one-off override that beats every window currently running.

Advanced feature
📶

Wi-Fi you cannot lock yourself out of

Change names and passwords, switch radios on and off, see channels and per-band client counts. Every write arms a 90-second auto-rollback first: if the phone cannot get back in, the router restores the old configuration by itself.

🛡️

Ad blocking for the whole house

Turn filtering on and off, choose blocklists, add your own rules, change the upstream DNS — all in the app, if your router already runs AdGuard Home.

Advanced feature
🔀

Several uplinks at once

Fibre, 4G/5G and a Wi-Fi repeater together: balance traffic by weight, or let one carry the load when another dies. If the router has no multi-WAN package, the app installs it.

Advanced feature
📡

The mobile link, and SIM messages

On a router with a SIM: network mode, band, signal strength, carrier and data used — and read or send SMS right in the app.

📈

Live status

A traffic graph that refreshes every two seconds, CPU, RAM, temperature, battery, storage, and which uplink is actually carrying traffic out.

🔔

Alerts

The router drops off the network, the battery runs low, an unknown device joins — waiting for you when you open the app, not something to go looking for.

🧰

Away from home too

Out of the house, the app carries on over Tailscale if your router has it, and prefers the LAN again the moment you are back. No server of ours stands in the middle.

🚫

Block websites for one device only

Rules are pinned to the machine's hardware address, so tomorrow's lease cannot move them onto somebody else's device. Needs AdGuard Home on the router.

Advanced feature
📊

Data used by day, week and month

Today, or over 7, 30, 90 or 365 days. The agent on the router does the counting itself, with no extra package to install — and because the ledger lives on the router, it keeps counting while the phone is off.

Screenshots

What it looks like

Taken from the demo mode built into the app — the real interface, on fabricated data. Tap an image to enlarge.

7 screens · demo mode · fabricated data

Changelog

What each version changed

Tap a version to open it. 3.0 is on Google Play now. The App Store is still on 2.2.

Version 3.013 new features, plus fixes
  • Every uplink at once not just the one carrying traffic — plug a cable into a router running on 5G and it appears straight away. An uplink that is ready but unused now says “Ready” and why, instead of vanishing from the screen.
  • Change what a port is for — an Ethernet port from LAN into WAN or back. A dialog says the port will drop for a few seconds first, and the port works immediately rather than after a reboot. An undo clock rides along: if nobody taps Keep within two minutes, the router puts the port back — the safety net for when the phone plugged into that very port loses its way back.
  • Wi-Fi: read first, change second — the screen opens on what is actually on the air: which radios, their names, channels, client counts and security. Quick setup asks for a name and a password and picks the rest: WPA2 on 2.4 GHz so IoT devices can join, WPA2/WPA3 on 5 GHz, WPA3 on 6 GHz, and the channel handed back to the router. A router still broadcasting an open network can be secured from the app now too. Per-band names, widths and the broadcast region live on the Advanced setup page.
  • Quick network setup — the app sees each network port of the router (which has a cable in, whether it serves WAN or LAN, which one this phone is on), lets you make each port a WAN or a LAN, and changes the home network's address range. Every change is shown before it is made, and the router puts the old settings back unless someone confirms — even across a power cut. A router fresh out of the box, with no way out to the internet yet, is invited through it step by step: the way to the internet (PPPoE with an optional VLAN, or DHCP), the ports, the account, the home network — then a preview of every change. A router with both a cable and 5G can set the role of 5G — backup, primary or 5G only — for free; combining both goes through Load balancing.
  • Devices grouped by how they connect: Wi-Fi 6 GHz, 5 GHz, 2.4 GHz, then wired, then unknown — on evidence the router provides, not inferred from a name. Machines outside your own network are called out at the top, before you cut the internet on somebody else’s.
  • Real CPU percent, and every core — the CPU ring is actual utilisation now, not a load average wearing a percent sign, with each core behind it. The alert stops calling load average “CPU load” too.
  • Inbox and outbox, kept apart — received and sent, and an empty box is not drawn at all. Unread messages carry a NEW tag that clears when you open them. The recipient field offers quick chips: numbers this SIM has exchanged messages with, and the carrier’s own hotlines.
  • Join the tailnet from the pairing screen — add a router that is somewhere else even when the app has no router yet and you are not on its Wi-Fi. That door used to open only after a first router was already paired.
  • Restore a purchase at the door — an “Already bought?” button sits on the pairing screen itself. Someone who paid, reinstalled, and is away from home is no longer locked out waiting to pair a router before the button appears.
  • Power-cut and low-battery alerts on routers with a battery: unplugging or a power cut is announced at once — on a travel router that is also the earliest sign the house has lost power. The battery has two levels and two different sentences: low is a reminder, nearly flat is a push. A gauge reading 0% while the cells are still above 3.5 V is ignored — that is a stuck gauge, not a flat battery.
  • Telegram alerts, landing in your own Telegram through a bot you make yourself — no server of ours in between. The router sends them, so a router that loses power goes quiet here; push is what covers that. There is a direction back too: message the router for its status, open alerts, a device count, data used or the SIM, or tell it to reboot. That half is always on and answers almost at once — the router holds a connection open to Telegram instead of asking on a schedule — and the screen says what it costs in data. There is a Funny Mode too: the router complains like a person, with the degrees, percentages and counts left in. Advanced feature
  • Told when a message arrives — the sender's number and nothing of the text. A SIM inbox is where bank one-time codes land, and notifications travel through Telegram and a push server; the text stays on the router and is read by opening the app. Works on both kinds of router: where messages sit on disk they arrive within a minute, and where the modem has to be asked, within two.
  • Told when the address changes — the carrier hands out a different public IP, or the router starts leaving by another road, and you hear about it. That is the moment port forwards, DDNS and anything else aimed at the old address stop working, and normally nothing says so.

Fixes and improvements

  • The Telegram bot answers as fully as the app: /status gains temperature, storage, battery, the public address, signal and message count; /sim gains RSRQ, the aggregated carriers and which SIM sits in which slot. Messages read better — bold headings, an icon per kind of alert, and the router name and every figure emphasised inside the sentence. The command list lives behind Telegram's Menu button and has English names too; the old button grid pinned under the chat is gone, since it spent a third of the screen repeating what the Menu button already said. The reboot confirmation code is no longer the clock, and a name containing an ampersand such as "AT&T" no longer swallows the placeholder and prints "AT{0}T".
  • The 5G card names each aggregated carrier — "5G n41 · 60 MHz + 4G B3 · 20 MHz" — instead of only counting them, and is more compact: the carriers share one line beside the network mode, and the carrier · address strip takes two lines instead of three. The live signal chart gains RSSI, the raw strength that a whole class of modems reports and nothing else, and stops repeating what the card below already names; a metric the modem cannot measure no longer holds its place, so the card shrinks by exactly what it dropped. A modem running 5G NSA no longer leaves the card blank, a router with several modems reports each one separately, and a modem that cannot be read shows an icon rather than an empty signal ladder.
  • GL routers read the SIM slot actually in use: the GL-E5800 no longer shows a grey 5G card, "-92" in place of the network mode, or a live chart with no signal line. GL machines without sms_tool show the aggregated carriers, card temperature, APN and network code again — that reader knew only two of the agent's three AT paths and came back empty instead of reporting an error.
  • Alerts with the app closed stop dying quietly after a reinstall, or after opening the app with no network: the app re-registers on every connect and whenever the device token changes. And they send on stock OpenWrt, which ships no curl — the feature used to switch on and send nothing, and six hours later the relay would announce the router as offline.
  • Pairing and agent install: a router with no password set can be paired, and when it does fail the message names the account instead of blaming the password. A changed SSH key — Tailscale SSH switched on or off, firmware reinstalled — is no longer reported as the SSH port being shut: the app shows both fingerprints exactly as ssh-keyscan prints them and asks whether to trust the new one, and it only asks on a path that proves the far end is the router; over DDNS or a strange network it refuses. The preflight screen no longer says both "nft is missing" and "nft is present but will not run", and offers a button to install nftables. An older app no longer reinstalls its older agent over a newer one already on the router — the cause of dropped connections and a lost rpcd login. And the app stops blaming the router while Tailscale is still bringing the path up, or when it is the phone that has no network.
  • Stopping the agent now releases every blocked device, including on a router used as an access point. The AP blocking table used to be left behind: the agent was gone, the device stayed cut off, and nothing was left to release it.
  • Network changes always have a way back. The 90-second auto-rollback now runs on routers without nohup — on those it never ran at all, which made a wrong Wi-Fi change permanent; all four paths that roll back (Wi-Fi, network mode, APN, multi-WAN) now share one. Switching from AP mode back to router mode works again and brings back the old LAN address, a change nobody confirmed no longer survives a power cut, and when the router refuses, the app says why in a plain sentence instead of a raw code.
  • The Router tab is regrouped: five vitals on one row, a card of their own for what is connected, and uptime beside the router's name. The page scrolls instead of shrinking itself to fit, and the numbers stop jumping. The public IP is tied to the uplink that produced it, so switching uplinks changes the figure. Plus an eighth accent colour — Lime — and the colour picker laid out as an even four-column grid.
  • Lighter and quieter: the agent moved configuration reads off the ten-second loop and no longer spends five processes quoting one JSON string, while the app stops polling the router when you are on another tab. SIM messages are read from whichever modem actually holds them, across every port rather than the first four, and accented messages no longer lose characters.

Version 3.0 is in private testing and has not been submitted to either store. These items, and the features marked “In testing”, are not in the build you download from the App Store or Google Play.

Version 2.2Fixes
  • Device blocking works on Wi-Fi access points — including routers with WED offload — via a bridge prerouting drop.
  • Safer agent updates: stage the new build beside the old one, then swap. Losing the phone mid-copy leaves the running agent in place.
  • Agent install and update work when the phone is on the same Wi-Fi as a Tailscale-paired router — the app learns the LAN address over ubus instead of only trying DERP.
  • The Devices tab shows DHCPv6 hostnames the way LuCI does (EasePi and similar), and a tap opens IP, MAC and remaining lease time.
  • Self-repairs a missing rpcd login; fixes for Wi-Fi signal, large device lists, and issues found during the 2.2 beta.
Version 2.1Fixes
  • Installing and updating the agent over Tailscale works again — the app pins one host key per path, because port 22 seen from a tailnet is a different SSH server from port 22 on your LAN.
  • The install buttons say what went wrong instead of doing nothing, and list every path they tried.
  • A router used as an access point is recognised as one — no more false "uplink is not NAT'd".
  • Opening the app connects on the first try, with no retry tap — and switching to another router closes the picker at once instead of waiting on the connection.
  • After the agent installs, the screen updates itself instead of needing the app restarted.
  • The memory figure is now what is really in use rather than the cache Linux hands back on demand — it no longer climbs with uptime and drops after a reboot, which looked exactly like a leak.

Per-device website blocking moves into the advanced features: it writes its rules through AdGuard Home, the same surface that tier covers.

Version 2.013 new features
  • Deny a device the router outright when cutting the internet is not enough: nothing forwarded, no address handed out. Plus dropping old machines from the list.
  • Block websites for one device only — Rules are pinned to the machine's hardware address, so tomorrow's lease cannot move them onto somebody else's device. Needs AdGuard Home on the router. Advanced feature
  • Data used by day, week and month — Today, or over 7, 30, 90 or 365 days. The agent on the router does the counting itself, with no extra package to install — and because the ledger lives on the router, it keeps counting while the phone is off.
  • Scheduled router reboots, daily, weekly or monthly, at an hour nobody is using it. Advanced feature
  • The Wi-Fi region row now shows its numbers — how many channels your current region actually opens up on your radios, how many of those are radar-restricted, and which band to sit on.
  • Drag to reorder multi-WAN priority.
  • Tailscale inside the app — no Tailscale app to install any more; Rowa becomes its own node on the tailnet.
  • The 5G card shows every aggregated band — B1 + B3 + n41 rather than just one.
  • Signal graded on four levels — excellent, good, fair, weak — on each of RSRP, SINR and RSRQ.
  • Processes eating CPU and RAM — named in plain language, and endable right from the app.
  • Network mode: edit the PPPoE account, take an address from another router, or switch to AP mode — with a timer that puts the old config back if the app loses the router on the way.
  • Pick a device's icon: thirty-two kinds, in the same menu as rename. The router can only guess from the name a device announces, and cameras tend to announce gibberish.
  • Fan control on routers that have one: quiet, medium, maximum, or left to the kernel.
Version 1.011 new features
  • Per-device internet control — Every machine on the network — name, band, and how much it is pulling right now. One tap cuts the internet for exactly one of them; that machine can still reach the router's own admin page, the printer and the network drive.
  • Schedules by day and hour — Repeating windows per weekday, per device — a child's tablet at bedtime, for instance. Plus a one-off override that beats every window currently running. Advanced feature
  • Wi-Fi you cannot lock yourself out of — Change names and passwords, switch radios on and off, see channels and per-band client counts. Every write arms a 90-second auto-rollback first: if the phone cannot get back in, the router restores the old configuration by itself.
  • Ad blocking for the whole house — Turn filtering on and off, choose blocklists, add your own rules, change the upstream DNS — all in the app, if your router already runs AdGuard Home. Advanced feature
  • Several uplinks at once — Fibre, 4G/5G and a Wi-Fi repeater together: balance traffic by weight, or let one carry the load when another dies. If the router has no multi-WAN package, the app installs it. Advanced feature
  • The mobile link, and SIM messages — On a router with a SIM: network mode, band, signal strength, carrier and data used — and read or send SMS right in the app.
  • Live status — A traffic graph that refreshes every two seconds, CPU, RAM, temperature, battery, storage, and which uplink is actually carrying traffic out.
  • Alerts — The router drops off the network, the battery runs low, an unknown device joins — waiting for you when you open the app, not something to go looking for.
  • Alerts with the app closed, because the router is the thing that is plugged in and can watch. They travel through a relay the author pays to keep running, which is why this part costs something. For no relay at all, there is the Telegram route. Advanced feature
  • Away from home too — Out of the house, the app carries on over Tailscale if your router has it, and prefers the LAN again the moment you are back. No server of ours stands in the middle.
  • Automatic cache flushing Advanced feature

Price

Free, and staying free

Costs nothing, now or later

  • Router status and live graphs
  • The device list
  • Cutting and restoring internet by hand
  • Data usage by day, week and month
  • The process list and fan control
  • Wi-Fi: names, passwords, radios on and off
  • Alerts when you open the app
  • SIM messages
  • The diagnostics report

Eight advanced features

Free for 30 days, then a single 9.99 US$ purchase unlocks them for good — no subscription, nothing to renew.

  • Hourly schedules
  • AdGuard Home controls
  • Multi-WAN load balancing
  • Alerts with the app closed
  • Telegram alerts
  • Automatic cache trimming
  • Per-device website blocking
  • Scheduled router reboots

The app itself is never locked: when the trial ends without a purchase, those eight lock and everything else carries on as before.

Requirements

What you need

Privacy

Your router password never leaves your phone

Router passwords and SSH keys live in the Android Keystore or the iOS Keychain, and go only to your own router. No ads, no analytics, no account to create. The diagnostics report is never sent anywhere on its own: you see all of it first — with Wi-Fi names, MAC addresses and phone numbers already masked — and choose who gets it.

Read the full privacy policy →

The router is already sitting in your house. Rowa only makes it visible — and clickable.

Support

Ask about anything

Support page · tuanlong.sav@gmail.com

Rowa is an independent app and is not affiliated with OpenWrt, AdGuard, Tailscale, GL.iNet or Telegram. Those names appear only to say what Rowa works with.

© 2026 Rowa · htl·8 · About · Privacy · Support · Terms
👁 visits