How I use a ₹1,800 router and OpenWrt to reproduce flaky mobile‑network bugs

I repurposed a cheap router with OpenWrt to throttle, add latency, and reproduce mobile‑network bugs I only saw on Jio/Idea networks. Setup, shortcuts, and a failure I couldn't ignore.

Written by: Arjun Malhotra

A person typing on a laptop at a wooden desk, with a coffee cup and a phone nearby
Photo by Brooke Cagle on Unsplash

I was on a call with QA when a PM shared a clip: video stalls for 10–20 seconds, then resumes. Only happened for some users on their cheap Jio dongles and certain hotel Wi‑Fi. It never happened on my home broadband. Reproducing the bug on my laptop was impossible; no amount of Chrome devtools throttling matched the real behaviour. We were shipping a Hotstar-like feature in two weeks. I needed a reproducible, local network that behaved like the messy mobile networks users actually have in India.

So I bought a ₹1,800 router and turned it into a traffic lab.

Why a cheap router (and not a cloud proxy)

What I built (30–90 minutes, ₹1,800–₹3,500)

How I use it in practice

The tradeoffs and the week it bit me I should’ve expected tradeoffs. The router approach is great at reproducing packet-level jitter and bursts, but it doesn’t emulate carrier middleboxes or real IMS timeouts. Once, after three successful reproductions locally, we deployed a fix that passed our router tests and staging. In production, some users still saw the stall. The missing element was carrier TCP connection resets caused by carrier-side NAT churn under heavy load — something my home network topology couldn’t simulate.

Other real annoyances:

A failure that changed how I test The day the fix missed carrier resets I accepted I couldn’t simulate everything locally. After that, I combined the router lab with two short plays:

  1. A quick field test using a real SIM/Band 40 dongle for one hour on a local prepaid plan (₹249 for 30GB) to catch carrier NAT churn. Cost: one weekday evening and ₹249, but it found the bug.
  2. A pcap-based approach: capture from a failing production client (with user consent) and replay it through my OpenWrt box using tcpreplay. That lets me see how the app handles packet reordering and bursts without requiring a live carrier.

Why this setup stuck

One limitation I still live with This setup won’t catch carrier‑side state churn and some weird middlebox behaviours. For those, you need at least one real SIM test or a cloud provider that gives you a cellular gateway — both cost more. I accepted that tradeoff because the router caught 80% of the cases that used to slip to production.

Takeaway If you regularly debug issues that only show up on flaky mobile networks in India, an OpenWrt router plus a cheap test phone is the most pragmatic next step. It’s cheap, quick, and uncovers the majority of jitter/bandwidth issues you won’t reproduce with browser throttling. But keep one real-SIM test in your pipeline — the router is necessary, not sufficient.