After a few years of dealing with continual problems with bandwidth limits on our satellite internet network, it was imperative to find a way to institute daily bandwidth limits. When we don’t do that, guests who stay at our vacation rental at the beginning of the month can use up all the bandwidth so that there’s none left for guests at the end of the month, which makes for unhappy people. Gargoyle firmware, which can be installed on any OpenWRT-compatible router was, in the end, an easy solution. I settled on the Netgear WNDR3800
for reasons I’ll explain in a bit.
We started offering internet to guests at our vacation rental in 2010. The problem is that we are on a satellite internet system which limits monthly usage. Our old provider,Wildblue, only gave us 7GB. We switched to a new provider, Hughesnet, who gives us 10GB of anytime bytes and 10GB of “bonus” bytes for use between 2am and 8am. Hughesnet also gives you a 500MB token every month you stay within your limit and you can bank those tokens indefinitely. To anyone in the city this is laughable, but this is the highest-level service plan we can get in our area, and yet our total monthly bandwidth allowance is about what most people get for their average daily allotment (by comparison most DSL providers allow 250GB/month in their Fair Access Policy).
To put this in perspective, a single 150-minute Netflix movie in HD is going to suck up about 4500MB (4.5GB of data). A single hour of Netflix’s highest definition video is 7GB! Thus, a single movie is basically half of the month’s total for us. Over the years, this has created a lot of challenges to offering internet to guests and it’s gotten much worse with the advent of iPads.
Some of the things we’ve seen:
- The heavy user problem. Guests who use the entire month’s worth of data in two days, leaving nothing for future guests. We have had to pay up to $75 to “get out of jail” after one guest who said he absolutely needed internet “just for email” burned through the entire 7GB in a couple of days. It turned out he was doing tons of video transfer.
- The iPad/iPhone problem. A guest on the network who used almost the equivalent of a day’s allotment in 80 minutes of reading email with his iPad. That made no sense because email is very low bandwidth. It so happened, because I was helping him connect, I could see what was happening in real time. The second he connected to the network, his iPad started using 8MB/s and he wasn’t even doing anything. We didn’t figure it out at first, because I don’t have an iPad, but Theresa guessed that he had a lot of apps running. If you don’t actively shut down an app on an iPad it continues to run in the background. Sure enough, when he checked, he had 25 apps running: Facebook, email, Words with Friends, and a bunch of others. Almost all of these apps were querying the internet constantly, with the net effect that while he burned 2-3MB readin his email, his iPad burned another 280MB in the background just updating those apps. It gets even worse if someone has been traveling and hasn’t connected the table in a long time: in that case the tablet is also going to download all the app updates. They don’t do this over a 3G or 4G data connection, because they are trying to conserve bandwidth. Then they connect to our network and have a week’s worth of updates.
- The lack of technology knowledge problem. We had one guest who wanted to check email. Theresa was explaining that if they downloaded video, they would run out of bandwidth. She said “Oh, we won’t do anything like that. The girls might just want to watch a couple of Netflix movies.” Ouch! That would use all the bandwidth for the month.
- The lawbreaker problem. Not related to bandwidth, but we have also received letters from HBO lawyers on three occasions threatening legal action because guests on our network were engaged in illegal file sharing of HBO copyrighted materials.
These problems are bad enough that I know of two rentals in the neighborhood who this year quite offering guest access. So the solution I’ve been seeking for years has been something that would let me divide up the monthly bandwidth into daily segments so that guests from the beginning of the month can’t ruin it for guests at the end of the month. I’ve pored over spec sheets for routers for years, and have never found one that lets you do that.
After a lot of research, it turns out that if you get a router that allows you to upgrade the firmware, you can gain a lot of control. Broadly speaking, there were two options. First, there are many services that let you set up a wireless hotspot, like at your local cafe or airport. This is way more complexity than I wanted and many of these solutions quickly become quite expensive. Second, there is Gargoyle, a free, open-source firmware based on OpenWrt that lets you do exactly what I want. Any router that will run OpenWrt should let you run Gargoyle. As it turns out, none of my three routers (home network, rental network, and an old router that I’ve got kicking around) are built to allow you to upgrade the firmware.
Finding a Router
Most of your cheap consumer routers will upgrade their own firmware, but you can’t put OpenWrt on them. OpenWrt is actually a full Linux distribution designed to run routers. So you need a router that is, in short, a fairly capable computer in its own right. This crosses the vast majority of routers off the list, but there remain a huge number of routers that can run OpenWrt, ranging from major enterprise-level systems costing hundreds, even thousands, of dollars, to ones that are barely more expensive than that cheapo router you would buy at Best Buy. Gargoyle’s list of supported routers is disappointingly small. It also turns out to be way outdated. If you go to the downloads section, you’ll find that there are hundreds of “image” files. These are files that are built for a specific model of router and can be flashed straight onto your router.
That said, finding the one for your router can be tough. The download lists are based on “architecture” meaning the chipset your router uses. So first you have to figure out whether you have a Atheros AR71xx, Broadcom, Atheros 231X/5312, or Alix/X86 chipset in your router. Then you have to figure out which version of the chipset, then you can try to find your router on the list of routers. You of course already have all that information at hand, right?
If you’re going to use an existing router, I’ll just say that you’ll have to do some research. I was buying a new router. I ended up with the Netgear WNDR3800 and I’m really happy with it. I’ve recommended it to two other friends with a total of five vacation rentals and they’ve all gotten one. We have two up and running and I just got the third one delivered yesterday and I’ll set that up today or tomorrow.
I started looking for a router with a few criteria in mind
- Reasonably modern. Many of the officially supported routers are ancient and missing many features we now expect from routers. I don’t want a 10-year-old design. The Netgear WNDR3800 is very modern. It’s an N600 (300Mbps on both channels) and has everything else I would want. very nice.
- Pre-built image available. I don’t want to build from source or any of that. There was an image for the WNDR3800. More importantly, the predecessor, the WNDR3700 uses two different chipsets, only one of which is supported by Gargoyle, whereas the WNDR3800 comes in only one version and it is supported out of the box.
- Good reviews online. The first router we had for our rental basically wouldn’t let anyone connect. It was a constant hassle trying to get people online. So I didn’t want problems like that. Honestly, the WNDR3800 didn’t have the greatest reviews. Looking at router reviews, though, very few of them are well-informed and often give 1-star for fairly spurious reasons. So the reviews weren’t great, but many of the complaints were not well-grounded and in any case, the other routers that were compatible with Gargoyle had either similar reviews or wildly higher price tags.
- Unbrickable. It is possible of you screw up the firmware update that you can “brick” your router, meaning place it in a completely unrecoverable state such that it won’t boot up enough to even restore the factory firmware. Throw it out and buy a new router. Some routers have a reset button. If you totally screw it up, hit the reset button and you’re back to factory defaults. The WNDR3800 has this all-important feature for the neophyte network tech. In the end, I never had to do a reset on it, but I felt reassured just know that I could. I did, while messing around with all this, mess up one of my other routers and had to do the factory reset… so it does happen!
- Reasonable price. Routers that run Gargoyle are often $250 to $500. I’m sure they’re worth it. The Netgear WNDR3800 lists at $250, but wasavailable for $60 as a refurbished item on Amazon. I have no idea how long that link will be valid, but hopefully it will take you to some Amazon page with a decent deal on the WNDR3800. If not, try this link for a new WNDR3800 and look at the purchasing options and see if you can get a decent price.
Installing the Firmware
First I had to find the right download package. The WNDR3800 is based on an Atheros AR71xx chipset, versino 1.6.1. When I put that into the download finder tool, I was able to find the gargoyle_1.6.1-ar71xx-generic-wndr3800-squashfs-factory.img image file. Download that.
Once you’ve dowloaded it, disconnect entirely from the internet and connect to your router directly with a cable. Point your browser to http://192.168.1.1 on most routers. On the Netgear router, it’s going to want to run you through a setup wizard. You need to get out of that and say you want to do a manual setup. Then go to the Advanced settings and find the Firmware Upgrade item. Click that and when it asks you, say you have a file (rather than updating over the web), point the router to the file you just downloaded, and hit return. It will take about 2-5 minutes and you’ll pop up with the Gargoyle welcome screen.
You’ll have to log in. This threw me… what do I log in with? I decided to try “admin,” then “adminstrator,” then “password.” Bingo! The default password is password. As soon as you enter that, you’ll be prompted to set a real password.
Once you set the real password, you’re up and running. From there it’s super simple.
The Connection tab lets you set up all the normal stuff – your SSID, security type, Wifi password and so on.
The Firewall tab is where the magic happens. There, under Quotas, you can set the daily quotas. You can set a quota that resets hourly, daily, weekly or monthly. You can set different quotas for upload or download or just the total. You can change when it resets. In my case I don’t want a guest to watch YouTube all morning and then check out, leaving no bandwidth for the guest who checks in that afternoon. So I have the bandwidth reset at noon. You can also choose whether or not to cut off access entirely when the quota is reached, or simply throttle down to a really low level.
Your settings page will look roughly like this (click to view full size).
- Applies to is the set of IPs that it applies to. The easy thing is to plug in a second router with a static IP, like 192.168.1.1 and force your people who are under a quota to login via that router.
- Max Total makes sense if you upload and download both count against you. But if you have different limits, you can create separate rules for each.
- Quota Is Active — note that I have one rule at the bottom under Active Quotas that is already saved and covers 8am to 2am and one that I’m in the process of saving that covers the “Bonus Bytes” period.
I am no longer on HughesNet as of October 2016, but this system was rock solid for three years. I deployed this for four friends and the only complaints I’ve had were because I messed up the times (had two quotas for the Bonus Bytes period and none for the main period, which obviously doesn’t work). These settings are persistent, so despite the numerous power outages and all the reboots a HughesNet system needs to stay running, once these were set, I could forget.