Tuesday, March 15, 2011

In Praise of Open Source Firmware: Routers

In early December of last year, I came home to discover that my wireless network was down again. This was hardly a rare occurrence. The unit—a Linksys WRT54GS—was about 8 years old. I'd received it used sometime in late 2005 and it was a great workhorse, but it was getting on in years.

No problem though. No matter how stubborn it was about connecting, configuring, or assigning IP addresses to my various devices, unplugging the router and giving it a few minutes of rest always refreshed the connection to the cable modem and restored the network. Except that night. All told, I probably spent an hour fiddling with the unit's configuration. Even a hard reset wouldn't work.

Despondent, I began researching the cost of a new Wireless-N router, until it hit me... the administration interface still worked fine. Why not try to re-flash the firmware? I'd done it several times before, upgrading the router as recently as March 2008. The worst that could happen was no worse than he current problem: an 8-year-old router that still wouldn't work.

Given those odds, why not be more daring still? I'd heard about people having wonderful results with third-party firmware: open source replacement code that not only duplicated the function of the original product, but generally improved performance and added new features.

Switching gears, I went from researching a new router to scouting for new firmware and eventually I settled on DD-WRT. It began as a replacement for Linksys WRT54-type routers, but has since expanded to other brands and models.

While there were links to the latest software right on the front page of the site, I did a bit of preparatory reading about my particular model on the project's wiki first. This is good advice to pass along to you because there were very useful tips and an upgrade path spelled out there, specific to my unit.

As suggested, I installed the "micro" version of the firmware (designed for those desiring basic features, or for those with models with less built-in memory) as a first step, then I upgraded to the "mega" version using the previously installed DD-WRT firmware. It worked flawlessly both times.

Now, having experienced the firmware under rigorous use for over 3 months, handling demands from my desktop, laptop and mobile phone wi-fi surfing, I can say:
  1. The feature set is truly mind-boggling, with more functions than most geeks will ever use. I'd actually recommend that the faint of heart consider sticking with the "micro" firmware and see if it suits your needs, before leaping to the Swiss-Army knife "mega" version (assuming your router has sufficient memory to store it). For a comparison of features, see the feature matrix.
  2. The stability of the firmware is amazing: no network interruptions or losses; no power cycling or resets of any kind required.
  3. The throughput / performance is better than the stock Linksys firmware, especially with this tweak:
    • Go to the Web Interface of the DD-WRT device and log in
    • Go to 'Administration'
    • Go to 'Management'
    • Enter (or verify) the following values for 'IP Filter Settings'
      • Maximum Ports: 4096 (For an 8MB RAM model set it no higher than 1024)
      • TCP Timeout (s): 600 
      • UDP Timeout (s): 120
If you're already satisfied with your current firmware, don't feel compelled to fix what isn't broken. But, if you're intrigued by the possibilities of continued firmware updates and increased features for your aging device, and you're willing to accept a small gamble (which become larger if the instructions aren't followed), I really recommend trying DD-WRT.

If you've never replaced firmware before, or don't feel up to this kind of radical personality surgery, you probably have geek in your family or circle of friends who'd be well up to the task. Tempt her/him with free pizza if the lure of hacking on your device isn't intoxicating enough.