Making your Linksys WRT54GL wireless router open source with dd-wrt
Home wireless routers are actually pretty complex computing devices and many of them run some sort of stripped-down linux or some other embedded OS such as VxWorks. When I purchased my Linksys wireless router 5 years ago I specifically bought one that could be upgraded to run an alternative open linux platform such as dd-wrt.
Well for five years I never bothered to upgrade the firmware because the wireless router worked fine as-is. However, I finally decided to upgrade for a few of reasons:
- I wanted to know who was using my wireless network.
- My macbook had started randomly dropping wireless connections.
- I wanted to be able to ssh in to my wireless router.
- I didn't want to lose any more geek cred.
I then investigated which alternative router firmware packages were available. When I purchased my router Linksys had just created a new model: the WRT54GL. This was similar to the existing WRT54G in that it had 4MB of flash ram. After the WRT54GL was released Linksys reduced the amount of flash on the straight 'G' model to just 2GB to save manufacturing costs. While it is possible to replace the flash on just about all WRT54G... models replacing it on the GL is the easiest. So, if you have a regular G or a GS model, read on because some of these tips will apply for you. Just remember that you may not be able to install all the coolest features unless you have a GL. Also, apparently you can't replace the firmware on the version 7 WRT54G model at all. Most other models and versions can be upgraded with varying degrees of annoyance.
The first step was to pick an appropriate replacement OS for the router. This extremetech article does a nice job of covering the possible alternatives. I went with dd-wrt because according to the article it was completely open-source, featureful, and easy to install. This guy agrees with me on that.
The dd-wrt website is unfortunately confusing, mostly due to the vast number of different wireless router makes and models it supports. This specific wiki section pointed me in the right direction. Be sure to read the top of that page which details how to definitively identify which router you actually have, as Linksys makes this quite confusing and often uses the same name for totally different hardware.
From everything on that page, I knew the correct sequence was to first install a 'mini' version of the dd-wrt image, and from there install a 'std' (standard) version. This is necessary because some versions of the preinstalled Linksys firmware have a 3MB flash image size limitation, and the standard version is larger than that. While the notes indicate that you may be able to install the standard version directly depending on which existing Linksys firmware you have installed, it is safest to bootstrap with the mini version first, and then install the standard version.
I downloaded both the v.2.4 sp1 consumer mini 1.1 firmware and the corresponding standard firmware onto my Mac. Then, I plugged my mac directly into my wireless router with an ethernet cable as it seemed safest to do the upgrade over wired ethernet instead of wireless. I then also disconnected the Linksys from my outside internet connection just to be paranoid, in case upgrading the firmware left it open to attack.
At this point I had the router back up and running as before, but with a ton of new features. One thing I love about dd-wrt is that you don't have to use any of those features if you don't want to. For example you can turn on ssh access directly to the command line of the router and get a full command-line environment, complete with busybox. Another thing I like is all the extra info in the gui interface. For example, you can see a list of all the devices that are connected to your router and grpahs of current LAN and WAN bandwidth usage. If you leave your router unsecured like I do that can really help you keep an eye on who else is using it.
In short, dd-wrt is incredibly easy to install and adds a ton of new features. My recommendation is that if you have a router that supports it, go install dd-wrt today. You gain a bunch of new features for virtually no work.