Perhaps you have decided that you need a feature that your old wireless router doesn’t support: How about the ability to provide a VPN service to access your home network securely from remote? Or maybe a guest network for those relatives coming over for Memorial day weekend? Wouldn’t IPv6 support come handy for this upcoming World IPv6 day event?. Or maybe you want to upgrade your home network to make your media server stutter free (300-450 Mbps would be cool, wouldn’t it?). In any case, running an alternative third-party firmware can provide you with a plethora of additional options at no cost (well, if you feel generous enough you could donate some money to one of these projects, but philanthropy is not cost, isn’t it?) and infuse new life into your older wireless router. In many cases, a third-party firmware is also more reliable, less buggy and runs smoother than the original vendor firmware included with the device.
There are several projects focused on building quality third-party software for wireless routers; some of the most well known and active projects are DD-WRT, OpenWRT, Tomato and Sveasoft. While the last two projects only support older wireless routers (WRT54G and family), DD-WRT and OpenWRT are constantly adding new routers to their lines and have a very active community. One caveat, Sveasoft uses a business model that requires a current subscription before you can try their latest firmware versions (and the older/stable versions tend to be quite limited), so I advice you to look to the other three projects first and resort to Sveasoft if none of them work for you.
Although these projects are all based on GNU/Linux, there are differences that go beyond the surface of the graphical user interface (GUI). The DD-WRT software tends to have a more thorough and consistent web based user interface, which minimizes the need for configuration through the command line interface (CLI). Support is usually very good through the DD-WRT forums, either from the active community or the developers themselves; documentation is also very high quality and gets regularly updated. DD-WRT also offers a good set of newbie friendly additional packages (Optware) to introduce additional features in a way that is mostly plug and play.
OpenWRT is more oriented towards the power user. Although the web interface (LuCI) is quite complete, advanced functionality can only be achieved using the command line interface; the filesystem layout is more in line with the standard Linux Filesystem Hierarchy so Linux folks should feel at home. OpenWRT has a large library of additional packages which can be installed directly from the central repository, either by using the opkg command line utility or through the LuCI web interface. Documentation is also good, with a substantial list of recipes and howtos guiding the users through basic and advanced topics, with an emphasis on command line configuration. On the downside, questions in the OpenWRT project forums are sometimes left unanswered, especially if they are not good questions, and there is typically less tolerance for newbies (see this document before asking for support) than in the DD-WRT project. However, if IPv6 support is a must and you don’t want the hassle of compiling your own ip6tables kernel modules, OpenWRT is your best option as these kernel modules are included in the standard backfire release; compiling any kernel module for a 2.6 DD-WRT kernel can be tricky if the version of the svn source code that your are using to build the kernel modules doesn’t match the exact svn version that you are running in your router (hint: 2.6 kernels require exact module symbol version matching in order to load the module, and the busybox insmod command seems not to allow to force modules without module symbol versions, giving back an “invalid module format” message).
If you haven’t purchased your router yet, you should stop now and head over to the supported hardware lists from DD-WRT and OpenWRT; and since making head or tails of such a long list can be difficult, I’ll give you a few tips. If you’re looking for the fastest supported router that can do simultaneous dual band and operate on a/b/g/n, then look no more: the Netgear WNDR3700 is probably the best option there (but make sure that the packaging of the unit you are buying indicates that it contains a wndr3700v2, as there have been reports of dead 2.4Ghz radios with some models of the first version running under DD-WRT). It is Atheros based, and with a very fast CPU, 8MB of flash and 64MB of RAM it is the clear performance king among supported routers. A close second choice would be the Linksys E3000 (with a slower Broadcom CPU, but otherwise similar features). Each one of these routers will set you back around $130-150 at current retail prices but considering that a wireless routers should last you for a good two to four years, you wouldn’t probably set for less. Do not select the Netgear WNDR4000 nor the Linksys E4200: these models are still not supported by either project, and although there may be ongoing efforts to support them, there is no guarantee that they will be supported at all.
If you plan on reusing existing hardware instead, and you have an older Linksys WRT54g/gs or similar device, this is your lucky day: every version has excellent support from DD-WRT (except for version 7, which is not and will probably never be supported). Tomato, OpenWRT and Sveasoft have all also good support for these devices, particularly for versions 1 through 4.
In any case, the list of supported devices by OpenWRT and DD-WRT covers hundreds of models across dozens of vendors. Chances are that your existing wireless router is supported by one of these projects and, if not, you can probably pick up an older/used supported unit for just a few dollars.
Depending on the specific router, the steps to upload the third-party software can involve a combination of either the web interface and/or tftp from a command line prompt. In very rare cases you may need a JTAG cable either to install the new software or to de-brick a modified router. I recommend that you stay away from any routers that require creating and soldering a JTAG cable for a third party software to work.
Before you start the process of deploying a third party software to your wireless router, you should ensure that you have a good backup of the settings for your network, including your PPPoE passwords, IP addresses and static DHCP leases, port forwards (in case you need support for incoming calls on a SIP phone, etc.) and recursive DNS settings if these are not dynamically configured by the provider. Some routers also have specific flash partitions containing calibration data, required if you want to ensure that your radios come back alive after a catastrophic flash overwrite or wipe, so go ahead and backup your caldata too (this is especially true for the WNDR3700). Information on how to backup your caldata is available on the DD-WRT forums.
After you covered these initial steps, head over to the particular project for the specific documentation on how to install that third party software on your device. For the OpenWRT project, you can use the hardware support table to identify your device and access the documentation for it. For the DD-WRT project, there is a similar table but you’re probably better off by looking it up in the hardware database.
Once you have installed the new software, sit back, relax and make yourself familiar with the myriad of options and open possibilities. Now it’s time to configure your router, enable those functions that were unavailable with the stock firmware, test everything and possibly donate to the project of your choice to demonstrate your appreciation.
Above all, enjoy and happy hacking!