Introduction to Tomato Firmware

By Aaron Weiss

October 01, 2008

Tomato firmware is light, efficient, and offers powerful features wrapped in friendly packaging, making it a very accessible option for novices.

In the annals of computer software with bizarre and seemingly random names, "Tomato" is probably one of the less weird examples as these things go. But whether you say tomay-toe or tomah-toe, this one is neither a fruit nor a vegetable—it is a firmware for wireless routers, including the popular WRT54G family.

Tomato is meant to be flashed onto your compatible wireless router to replace the stock firmware loaded by the vendor. Why do this? Stock firmware usually provides only basic configuration, administration, and management features, and is not always updated often. Alternative firmware like Tomato can effectively "unlock" advanced functionality from your router, giving it the network management capabilities of much more expensive enterprise gear. Using a firmware, such as Tomato, you can increase your router's output power (to potentially improve wireless coverage), create rules to discriminate different kinds of network traffic, and monitor bandwidth.

If you've dabbled with wireless router hacking before, you are probably thinking, hey, Tomato sounds a lot like DD-WRT—the most famous replacement firmware (and which we have covered extensively). In fact, it is a lot like DD-WRT, at least in purpose and function. But, just as some people prefer the Mac over the PC, Tomato has a different flavor than DD-WRT, and that is a taste you might like.

Hardware requirements

Like DD-WRT, the Tomato firmware can be installed on a variety of wireless routers. Tomato supports the Linksys WRT54G family, which also includes the WRT54GS, WRT54GL, and WRTSL54GS. Note that Tomato will not work with WRT54G routers later than version 4, since these do not run Linux. The WRT54GL model is always a safe bet—the "L" stands for Linux!

Besides Linksys routers, Tomato supports many popular Broadcom-based routers from Buffalo and Asus. Check the compatibility list before making a purchase or attempting to flash Tomato on an incompatible router (which could result in a dead router).

Picking the Tomato

Unlike DD-WRT, which is available in numerous versions for different routers and with different feature sets, there is only one primary version of Tomato. There is also one alternate version compiled specifically for the Buffalo WHR-G125 router.

The latest Tomato release is distributed as a 7z file, an open source compression format that you may need to download a supported utility to open.

Inside the archive you will find several .bin files. Each of these is the compiled firmware for the router model specified in the file name. You'll want to identify the .bin file that matches your model router.

You will also find a readme.htm file. I know, I know—readme files are like the yellow traffic lights of computing: permission to ignore. If you want to do this Tomato thing right—and by "right" I mean, not turn your router into a doorstop—you want to read this file.

But don't be scared. Flashing Tomato to most routers is no more difficult than flashing DD-WRT, if you've ever been down that road, and in some cases even easier. There are caveats, though, depending on whether you are flashing to a Linksys, Buffalo, or other brand router; whether you are flashing from stock firmware or DD-WRT; and other considerations.

linksys_firmware.jpg

Flashing firmware to a stock Linksys router.

 

As a general rule, you'll want to note these basic steps to flashing your wireless router to Tomato:

1.      Reset your router to factory defaults. Whether your router is currently running stock firmware or an alternative like DD-WRT, set it back to defaults either through the administration menu (on Linksys, Administration/Factory Defaults), or pressing and holding the recessed reset button on the back for 30 seconds.

2.      Connect to your router with a wired connection, via one of its LAN ports. Never flash your router's firmware over a wireless link. Doom awaits!

3.      Disable any firewall or wireless adapters on your PC, so that they don't interfere with your wired connection to the router.

4.      Be sure to use a modern browser like Firefox, IE6+, Opera 9, or Safari. The Tomato firmware uses lots of fancy modern Javascript, which your browser needs to support.

5.      Log in to your router's administration page. For Linksys routers this is usually http://192.168.1.1 — other models may vary. Click through to the administration page, which usually has an area for upgrading your firmware. The exact menu names vary by model—for Linksys firmware, it is usually Administration/Firmware Upgrade.

6.      Click to choose a firmware upgrade file, and navigate to the correct .bin file for your router model from the Tomato archive.

7.      During the upgrade process, leave your computer and the router to mate in peace. You don't want to do anything that might interrupt the flashing and potentially damage your router, so just leave it alone for a couple of minutes. When flashing is complete, the router will reboot and you will need to reconnect your browser to it. Tomato's default address is http://192.168.1.1.

When the router reboots with Tomato installed, the default login will be root/admin. Note to users upgrading from DD-WRT V23+, you won't be able to log in to Tomato using these credentials until you perform another hardware reset on the router by pressing the reset button. (All this and more is covered in the handy readme file you were encouraged to read earlier.) Users with Buffalo-brand routers must consult the readme file, because there may be extra steps needed, particularly if you are flashing from Buffalo stock firmware.

First look

While DD-WRT presents a veritable geek's paradise of menus and options, the Tomato interface is sleek almost to the point of minimalism. While form does not necessarily equal function, the aesthetic difference between Tomato and DD-WRT is representative of the differing philosophies of these two firmware: whereas DD-WRT packs in nearly every configuration option under the sun, Tomato is slimmed down and accessible, although still highly functional. 

Like all router firmware, Tomato covers the basics—support for Internet access via DHCP/PPPoE/Static/PPTP/L2TP. You can configure wireless with security using WEP/WPA/WPA2 and Radius. Wireless mode supports 14 channels, although it should be noted that using channels higher than 11 may run afoul of regulations in some countries.

Tomato's wireless mode supports WDS, letting you connect it to additional wireless routers to increase your range. You can also flip the wireless radio into client mode to create a wireless client or bridge, in which case the router is not broadcasting wireless but receiving it, letting you attach cabled devices to another access point wirelessly.

Like some other firmware, Tomato supports dynamic DNS (DDNS) services. Most home broadband users do not enjoy a static IP address for external access to their LAN. Web services like No-IP and DynDNS let you create a public domain (like "joespc.dyndns.org") and update it with your current IP address. Tomato supports an extensive list of DDNS services.

Again, users of DD-WRT will find all this familiar. For Tomato enthusiasts, two major features that really set it apart are its bandwidth monitoring and Quality of Service (QoS) management.

tomato_qos.jpg

Tomato displays QoS traffic usage in pie chart form.

Tomato tracks all incoming and outgoing traffic and, using SVG (scalable vector graphics), generates a live map of bandwidth usage. You can view real-time bandwidth activity, or summaries from the past 24 hours, days, weeks, or months. The bandwidth monitor is both visually slick and easy to interpret. Why should you care? Increasingly, broadband providers are introducing transfer limits (or "caps") on customers. For many of us, it will soon be in our best interests to track our own usage, both to avoid incurring overage charges, and perhaps to contest potentially inaccurate tallies provided by the ISP.

Managing bandwidth goes beyond traffic totals. The fact is, some kinds of network traffic are more important than others—your VoIP calls and gaming action need to get through faster than, say, bittorrent transfers. QoS, or Quality of Service, is a system for classifying and discriminating traffic inside your own LAN for maximum performance.

Tomato offers a very comprehensive set of QoS tools, allowing you to define a large range of inbound and outbound classes, and assigning types of traffic to these classes. Although you can describe network traffic by parameters like port and protocol, Tomato also includes an extensive list of canned traffic, from Skype to World of Warcraft, for easy classification. Like overall bandwidth, QoS traffic can be viewed in graph form.

DD-WRT, too, offers QoS management. Tomato's version is, to some, easier to manage. And, although these reports are anecdotal, user sentiment suggests that Tomato's QoS may work better and more efficiently than that found in DD-WRT. No doubt there are happy DD-WRT users who will disagree, but since both firmware are free, if you have had difficulties wrangling DD-WRT's QoS then Tomato may be worth a try.

The Tomato interface can be customized through the choice of several templates ("Tomato," "Pumpkin," "Olive," etc.), or you can supply your own custom CSS file. But beyond mere looks, the neat thing about Tomato is that it relies on AJAX for most configuration changes, meaning that you hardly ever need to reboot the router after changing settings. Fact is, the same cannot be said of DD-WRT.

Getting advanced

It is easy to get the impression that Tomato is "dumbed down" compared to DD-WRT or other firmware, such as OpenWRT. Certainly, Tomato presents the most accessible face to sophisticated router management. But it's no slouch in the advanced configuration department, either.

For wireless performance, you will find controls for Afterburner support, manual selection of RX/TX antennas, and transmit power up to 251mW.

Advanced administration controls let you customize the behavior of the hardware reset button for intervals ranging from 0 to 12+ seconds, and you can even trigger custom scripts. A built-in CIFS client lets you share the router's internal file system across your LAN. You can schedule reboots or custom scripts to run on a configurable time/day basis.

Built-in network tools let you run pings, traceroutes, and wireless surveys from the router. You can also trigger wake-on-lan (WOL) packets from the router to specified PC's, causing them to resume from sleep.

Tomato vs. DD-WRT

One cannot help but compare the two, considering how they occupy such similar territory. Each has its supporters and there is no clear answer that one is intrinsically better than the other. Still, there are differences to consider.

DD-WRT supports a much wider range of router models. It is also available in several feature sets, from minimal to comprehensive, allowing for routers with differing amounts of flash memory. Tomato is available in one feature set, and so cannot be flashed onto routers with minimal amounts of memory.

DD-WRT is more thoroughly documented than Tomato and also enjoys an active support forum. Tomato also has a documentation wiki, but it is still in an early stage of maturity.

Tomato is light, efficient, and offers powerful features wrapped in friendly packaging, making it a very accessible firmware for both novices and most typical home networking scenarios. DD-WRT involves a higher learning curve.

Although there is no clear winner between Tomato and DD-WRT, it is easy to imagine that many users will find Tomato an attractive step up from stock firmware.

Aaron Weiss is a freelance writer, editor, and Wi-Fi enthusiast based in upstate New York. In addition to tutorials, Aaron writes a monthly Q&A column. To submit your questions, simply click on Aaron's byline (above) and put "Wi-Fi Guru" in the subject line. Click here to read a recent column. 



Comment and Contribute
(Maximum characters: 1200). You have
characters left.