Introduction: Speed Up Your (Dad's Satellite) Internet Connection With a Dual-Band Wireless Router

Hello. Please see

I'll probably put this info up on a personal blog shortly.

Step 1: Shop for a Dual-Band Wireless Router

Shortcut: Buy the Netgear WNDR3300 for about $76 plus shipping from I like Google Checkout better than giving my credit card info to a bunch of different vendors, and takes Google Checkout.

If you took the shortcut, you can skip to the next step. Otherwise, here are more details in case you are obsessive about saving a few dollars at the expense of a bunch of your time, kind of like me: Find the cheapest dual-band router that is listed as supported by dd-wrt. I found a pretty good deal at the above link. CNET Reviews also points to CDI as having it for $77. If I wanted to spend over twice as much on hardware and run a testing release of dd-wrt, I'd get the Linksys WRT610N (~$165) since it is supposed to support *simultaneous* 2.4 and 5 Ghz operation, but who knows what is actually happening with both radios with dd-wrt on this hardware -- maybe it's the same. This Netgear also doesn't have gigabit ethernet ports like the Linksys, but you could hang a gigabit switch off of it for $50 or less.

(Added June 12, 2009: now has the Trendnet TEW672-GR 300 Mbps dual band wireless router for $67 including shipping. I don't yet know if dd-wrt will work on it, but I'll probably get one and try it out, and update this instructable or start a new one.)

Here is the list of dd-wrt supported hardware, and here is the router "database" where you can type in a few characters of the router's name.

It would be better to use and support open-wrt because of repeated GPL violations by the dd-wrt guy, but I was more certain that this would work with the hardware I was buying, with a comprehensible UI, dual-band, and I need it to work unattended because it's going up a mountain to my Dad's house in North Idaho, a thousand miles from where I live. If the X-wrt or OpenWrt guys come up with something that I can easily figure out, I'll happily switch to one of those. From the main page, I couldn't even tell if those run wifi (they do), let alone support my hardware, and dual-band radios. What I gleaned from the open-wrt web pages are that they're all general-purpose embedded firmware or some such. Abstraction is great, but come on, what does it do? </rant>

Step 2: Get Your Specific Router's Installation Instructions

Check the dd-wrt wiki for particular instructions for the router you purchased. You'll also want to read the main Installation document.

That document refers to checking the "Supported Devices" list. You might think that starting at the "Supported Devices" list and clicking on the entry for your specific router would take you to a link for specific instructions on installing dd-wrt on that device, but you would be wrong.

In my case, a forum entry, here, was completely necessary -- the stock instructions didn't work. And even the forum instructions didn't describe how to fetch the files they referred to. (But this instructable does, in the next step.)

Step 3: Download the Firmware

Download the firmware you'll need. I found this to be a particularly poorly documented step. My router, the WNDR3300, needs a two-step download. You start with a particular version that the factory firmware will allow to be loaded, then move on to whatever more full-featured firmware you want to use (i.e., you upgrade the first version of dd-wrt that you have installed.). If you don't want to use any other features, you can just go with the first version you install.

Also, the download page at was useless and confusing. Consumer? Professional? What's the difference between v24 and v24-sp1 and why would I care? Where the hell is the version the instructions mentioned?

For the WNDR330, I needed to download, and the only way I found that was to infer and reconstruct the URL from the above-listed instructions.

I used curl to (Shortcut here) fetch this:

curl -O

(If you are taking the shortcut, skip ahead to the next step). You could also load that binary in your browser and do a "Save As" on that document, or use wget.

By random poking around (ok, binary search), I found that there is also apparently a svn11650 directory, and who knows what else. But this one worked for me.

Step 4: Prepare for Problems

Shortcut: Skip to the next step.

You should probably also download the instructions to recover from a bad flash and the FAQ and save those locally or in a tab on your browser, since your router will be offline for a bit (forever, if you're really unlucky) and you won't be able to load them easily.

The puppy picture is purely gratuitous.
Photo Credit: Pirate Scott, Creative Commons Attribution-Noncommercial 2.0

Step 5: Physically Hook Up the Router to Your Computer

Shortcut: Plug it in, log in as admin/password. Skip to the next step.

To prevent any confusion here, it might be a good idea to turn off the wireless interface on your computer now. It probably won't work anyway as soon as your computer thinks you have a spiffy wired connection to the internet (that alas, dead-ends at your new router).

Hook your router up to ONLY your computer, and get logged in to the router. I used the cable that came with the router from my laptop's ethernet connector to the #1 port of the router (don't use the WAN connection, which in this case is yellow). (Factory) Reset the router if you have messed with it before. In my case, I hadn't.

For pretty much the first and only time in my life, I'm going to recommend that you not use Firefox (for just the next few steps). Use Safari on the Mac, or IE on your Windows system. Or who knows, Chrome from Google would probably work too, but Firefox is reported to cause some problems, and it may well have caused problems for me.

Load the admin interface in a browser (not Firefox apparently) by typing the router's IP address in your browser. In my case, I typed "" in the URL bar and logged in. The username and password for the WNDR3300 from the factory are apparently "admin" and "password".

If you can't get to the admin interface, maybe you need to set your ethernet address to something in the 192.168.1.x range. I just plugged in the router and it assigned to my computer using DHCP, which was fine. Try pinging if you're not sure if you're connected.

Step 6: Upload the New Firmware, Don't Panic When It Fails

Shortcut: Skip to the next step, where we upload the correct firmware.

Upload the new firmware. Poke around in the router's factory web page until you find the "Upgrade Firmware" button/dialog. Tell it the firmware file you want to upload. I chose the file that the instructions told me to use for the first flash, that I had downloaded earlier, dd-wrt.v24_std-wndr3300.chk. Once you start the flash process, you're not supposed to mess with ANYTHING (router or computer or power for either) for 10 minutes. I did the 10 minute wait, and my router stopped responding to the web interface, although I found that pings to worked, and the power light was flashing green so I figured it wasn't totally bricked.

Also, I eventually noticed that starting some time in 2006, someone noted in some wiki page somewhere that Firefox didn't work to do this. So maybe it was Firefox, maybe it was the wrong binary image.

Don't panic.

Step 7: Now Upload the Right Firmware

Then I did the research that let me figure out the real version I should have uploaded, dd-wrt.v24-11604_NEWD_mini_wndr3300.chk. If you are working on your only router, you'll need to hook your computer up directly to your internet connection, since your router doesn't work anymore.

This time, I used tftp to upload the firmware, thusly:

macbook:Desktop gentry$ ls dd-wrt.v24*
dd-wrt.v24-11604_NEWD_mini_wndr3300.chk <-- This is the right one
dd-wrt.v24_std-wndr3300.chk <-- This is the one that didn't do anything good.
macbook:Desktop gentry$ tftp
tftp> binary
tftp> rexmt 1
tftp> timeout 60
tftp> trace
Packet tracing on.

Now power on the router, make sure that you can ping it, power down and get ready to start the "put". As soon as you restart the router, press "enter" after the following command, and with any
luck, something like the following will happen.

tftp> put dd-wrt.v24-11604_NEWD_mini_wndr3300.chk.x
sent WRQ <file=dd-wrt.v24-11604_NEWD_mini_wndr3300.chk.x, mode=octet>
sent WRQ <file=dd-wrt.v24-11604_NEWD_mini_wndr3300.chk.x, mode=octet>
received ACK <block=0>
sent DATA <block=1, 512 bytes>
received ACK <block=1>
sent DATA <block=2, 512 bytes>
sent DATA <block=5657, 58 bytes>
received ACK <block=5657>
Sent 2895930 bytes in 15.6 seconds

Step 8: Success!

After a minute or two, the router became reachable at and prompted me to set a non-default username and password. Yay!

If you are in a big fat hurry, you are done. But if you want more crazy features, you can go on to install a more full-featured and possibly less buggy version of dd-wrt. I installed the firmware I fetched from:

curl -O

and it seems to work great. Lord only knows what the most recent version actually is or where you can fetch it, but this one seemed to work.

Good luck!

Step 9: Try It Out a Little

Shortcut: Just mail it out.

I'm not completely sure that this thing is working dual-band, although think it must be because I get pretty good throughput between it and my Macbook Pro that says it has an "AirPort Extreme" wireless card which supports simultaneous dual-band 802.11n.

From 25 feet away with a refrigerator and a wall in the way, I see 2.3 - 2.5 MB/s locally (that's MegaBytes, not MegaBits, so it would be about 20 Mbits/sec), which is about twice as fast as I was seeing with my Linksys WRT-54g. I should probably have benchmarked the WNDR3300 BEFORE I flashed the new firmware. D'oh.

That speed is definitely fast enough for my Dad's home network, given that the satellite link he has is probably 10% of that speed. The other speedup features you got for free are that the router is now running a caching DNS server named DNSmasq (unless you fiddled with the admin interface and disabled it); and, if you leave the wifi channel selection on Auto, it'll pick a channel that isn't being interfered with by a wireless phone or maybe even a microwave oven.

If you are adventurous, you can also turn up the transmit power on the radios (see picture for this step). This doesn't help as much as you might hope. For one thing, just turning up the transmit power on one side won't help packets being sent from the other side (but if you have two high-powered or high-gain endpoints, rock on). Still, it can eliminate half of a packet loss problem. For another, if you overdo it and set the transmit power too high, a) you will get a more distorted signal, and b) you might overheat the radios and let out the magic smoke that makes them work. On my old wrt-54g, nothing over 70mw improved my test results.

There are a bunch of other swell dd-wrt (and open-wrt and x-wrt) features if you poke around.

Now mail it to your Dad up a mountain in Idaho to see how it works there with the noisy microwave oven and super high latency satellite internet connection.

Step 10: Epilogue: Why This Helps

Here's a timeline of a typical (but super-simple, with no dependent requests like graphics, ads, etc.) web page request before installing a caching DNS server:

0s -- Dad types "" and hits enter on the browser. Browser sends DNS request to satellite/ISP, which does some consultation with the rest of the internet and,
0.5s -- Answer to DNS request comes back:
0.51s -- Browser (ok, TCP stack) sends request to
1.1s -- Content starts to arrive at browser. Let the rendering begin.
1.3s -- Content is complete at browser
1.8s -- Browser is done rendering, and the web page is fully displayed.

Here's (a slight lie, but it's simpler) how that would look with a single dropped packet

1.1s -- Content starts to arrive at browser. Let the rendering begin.
1.3s -- Whoops, wait for a round trip to get the missing packet.
1.8s -- Content is complete at browser
2.3s -- Browser is done rendering and the web page is fully displayed.

In real life, it's actually much worse than this, because most web pages include references to content from other servers, so you have to do more DNS lookups (that can begin only after you have fetched the first page) THEN fetch the referenced content. The good news about this satellite connection is that it's reasonably high-bandwidth, so at least all the ads, graphics, etc., get fetched in parallel, and pretty quickly. Once the web page starts to display, it shows up pretty quickly.

Now, the same simplified timeline with a caching web server (loading a page we have loaded in the not-too-distant past):

0s -- Dad types "" and hits enter on the browser. Browser sends DNS request which is intercepted by our router and answered in a few msec instead of incurring a satellite round-trip.
0.01s -- Answer to DNS request comes back:
0.02s -- Browser (ok, TCP stack) sends request to
.51s -- Content starts to arrive at browser. Let the rendering begin.
.71s -- Content is complete at browser
1.2s -- Browser is done rendering, and the web page is fully displayed.

So we've gone from ~1.8s to about 1.2s, and, we're less likely to have packet loss with the modern radios, so what was a 2.3s load is still 1.2s. And in real life, this is compounded by the references the page makes. Pages that used to take 10s to load now take maybe 5s. Still slow, but a big improvement. This is also a great reason to run Adblock Plus in Firefox -- you can cut out pretty much an entire roundtrip of fetching crap you didn't want to see anyway.