Tomato Firmware is software that is embedded into a piece of hardware. Think of firmware as “software for your router.” Devices like optical drives, network cards, routers, and printers all have software that is programmed into special memory contained within the hardware itself.
Your router is shipped from the manufacturer with default factory firmware. Factory router firmware is fine if you just want to access the Internet with one or two computers. But if you want a better experience with more control, you might consider upgrading your router with Tomato firmware. After all, that’s what cool people do. 🙂
Since firmware needs a place to exist, it is installed over the Common Firmware Environment (CFE) on Broadcom-based routers. For those of you unfamiliar with Broadcom, they build computer chips for communication devices such as wireless routers.
The relationship of the hardware to firmware environment is similar to how your computer is designed. Your computer has a BIOS hardware chip with BIOS software stored to CMOS (memory). The Operating system (Windows, Linux, etc.) is installed above the BIOS level. But on a router, its layered something like this:
What are the benefits of running Tomato firmware?
Tomato firmware can enhance the capabilities of your router and increase control over your network including: remote access, security and monitoring capabilities. Depending on which version you install, here are just some of the things you can do with Tomato:
- Media Server DNLA
- Block IP Addresses
- Set hours of operation
- Built-in support for USB (for file sharing)
- Block websites and filter traffic
- Setup a wireless bridge/repeater.
- Create VLAN’s and ‘guest’ networks
- Configure a VPN (Virtual Private Network) for remote access when you’re away.
- Set MAC address filtering to block devices not authorized to connect to your network.
You should know that not all routers are compatible with open-source firmware so you’ll need to verify compatibility before attempting to flash (install) it. Most open-source firmware is designed to work with Broadcom chips. The other big players are ‘Atheros’ and ‘Qualcomm’. If you have a router with ‘Atheros’ or Qualcomm’ chip, do not try to flash your router with Tomato firmware or you will most certainly ruin the device. Use Broadcom routers only!
What is the difference between flashing a router and installing firmware?
Essentially, they mean the same thing. Since routers don’t have hard drives like computers, they use small chips called flash memory. The term “flashing” is derived from the method if installing software to the routers flash memory chip.
How is firmware flashed to the router?
Firmware can be flashed two different ways: (1) by upgrading the firmware from inside of the routers administration panel, or (2) using a client software application to upload the firmware to the router. In this case, the software communicates with the router directly from your computer. See my tutorial on how to flash a router with Tomato firmware for more detailed instructions.
Method #1 is typically used for factory firmware upgrades or upgrades from the same type of firmware. When changing to a different type of firmware, method #2 is the preferred option.
Method #2 uses a technology known as Trivial File Transfer Protocol (TFTP). What a mouthful! Huh? Don’t lose heart, my friend. This will all make sense in a moment. In short, here’s what the TFTP process looks like:
What is TFTP client software?
If you break down the long name of this little gadget, it makes a lot more sense. “Trivial File Transfer Protocol” means it uses a special protocol to, you guessed it, . . .transfer a file!
TFTP is based on client/server architecture. For this reason, technically, it is called “client software” because it is installed on the client computer and communicates with a server. In this case, the server is the router. TFTP software allows you to push firmware from your computer to the router.
Below is a screenshot image of a Windows TFTP client installed on my computer. The software must know the routers IP address in order to connect and upload the firmware.
In some cases, you can use a free TFTP client found on the web. DD-WRT has a list of TFTP utilities.
http://www.dd-wrt.com/wiki/index.php/TFTP_flash#TFTP_tools
In other cases, the router manufacturer may offer their own TFTP client designed for a specific router or product line. Here is a screenshot of an ASUS factory TFTP client software (a.k.a., recovery software). If you are using an ASUS router, you can download it here:
You may immediately notice that the factory software does not have a place for the IP address. This is simply because the factory software is designed to locate the router on the network. It’s less hassle and makes flashing your router that much easier.
Prior to flashing your router with custom firmware for the first time, it’s a good idea to first, upgrade the most recent factory default firmware. This can be done using method #1 which is accomplished from within the administration panel. This is covered in the next chapter. In the meantime, indulge me for a moment while I explain the importance of upgrading your factory firmware first.
Why should I upgrade the factory firmware first?
Stock firmware from the manufacturer can also upgrade the NVRAM (Non-Volatile Random Access Memory); whereas, custom 3rd party firmware does not.
What is NVRAM and how does it work?
NVRAM is the first piece of code that runs when the unit is powered on. It initializes the hardware first, then transfers control to the Linux kernel which boots the actual firmware. It also allows recovery.
NVRAM is where the router settings are stored. If you clear the NVRAM, you clear your settings. If you don’t have enough space for those settings, or you run out of space in the future, your router will crash and require a factory reset.
Therefore, if you upload 64KB firmware to a router with only 32KB of NVRAM, the router will attempt to boot up expecting to see 64KB, only to find 32KB and ultimately crash before it boots or simply wipe out your settings.
In my case, my router (ASUS RT-N66U) has 128KB of NVRAM. Until recently, the stock firmware only accessed the first 32KB. ASUS released a stock firmware update that updated the NVRAM to access 64KB of memory.
Now, I can upload 64KB versions of 3rd party firmware. If I had not performed the stock firmware upgrade first, and then attempted to upload a 64KB version of some 3rd party firmware, I’d be in trouble.
Recently, more manufactured units come pre-loaded with the 64K CFE. But since most custom firmware builds were designed for 32K, some new routers are not compatible with many “standard” firmware builds.
So, first, upgrade your router with the most recent stock firmware available. If you’re unable to locate the NVRAM size within the admin panel, search the support forums or call the manufacturer and ask them just to be sure.
Typically, 32KB firmware filenames are “standard” and will not have anything special distinguishing them. If it’s 64KB, it should say so in the filename.
Where does custom router firmware come from?
The most popular firmware is free and built by various volunteer developers in the open-source community who volunteer their time to improve these projects. These individuals sacrifice their time for the greater good of the project.
I encourage people to donate whenever possible. This helps them continue their work and shows appreciation for what they do. If a few thousand people donated just a few dollars each, it would make a huge difference for them. It is not required to give anything, but if you feel it on your heart to do so, I’m sure that they would appreciate it.
Where can I download open-source firmware?
Wikipedia has a nice list of firmware projects that can be found here:
http://en.wikipedia.org/wiki/List_of_wireless_router_firmware_projects
There are several projects with active support communities but the ones with the most widespread use are:
- OpenWRT https://openwrt.org/
- DD-WRT (popular) http://www.dd-wrt.com/
- Tomato (several places to download, see links below)
OpenWRT is better for advanced users. The interface is designed for those who really know what they’re doing. But hey, if you’re into programming and you want to build a highly-customized application, OpenWRT offers that type of flexibility. It’s definitely not something I’d recommend for a beginner.
DD-WRT has a larger community, but it is also an older community. Those who use it, swear by it. It offers an intermediate-level user interface with options for both beginners and advanced users. The focus of DD-WRT morphed into a project that focuses heavily on features. Although it is rich in features, those features sometimes come at the expense of stability.
DD-WRT distributes their firmware from one central location. They have a router database so you can quickly check your routers firmware compatibility directly from their website.
I must admit when it comes to firmware, I do have a preference. In my tests, Tomato is rock solid. It also has a clean user interface and offers a lot of options without losing focus on the people who use it. Another one of Tomato’s major strengths lies in it’s monitoring capabilities. I just love those pie charts!
Tomato has pie charts that make it easy to see which device is hogging the bandwidth. From there, you are only one click away from controlling the bandwidth for that device. Tomato is currently being developed by a few different builders. You can learn about the various versions here:
http://en.wikipedia.org/wiki/Tomato_(firmware)
These versions are called “mods”. This can be confusing to those new to open source communities. For example: if you Google search “tomato firmware” you’ll eventually end up reading about various mods that have been enhanced by developers. They use screen names such as:
- Shibby – http://tomato.groov.pl/
- Teaman – https://code.google.com/p/tomato-sdhc-vlan/
- Toastman – http://toastmanfirmware.yolasite.com/
- Victek – http://www.victek.is-a-geek.com/
As of this writing, these are the most active authors for the Tomato firmware. Each author has their own website and delivers firmware updates by build number. Sometimes, they borrow features from another developer to enhance their own mods. For this reason, you’ll find that many of the features tend to overlap from one developer to the next.
What are the risks of installing custom firmware?
Do I have your attention? Great! All joking aside for a moment (as boring as that might be) we need to have a serious talk (I’m starting to sound like my wife!).
Flashing custom firmware to your router offers great benefits. But those benefits come with the possibility of a cost. That cost is that you could “brick” your router. “Bricking” your router is a term geeks use to say,… “It’s broke beyond repair and now it’s a high-dollar paperweight.”
Although it is rare, it can happen if you try to flash the wrong version to your router, or you do something silly like unplug the power source in the middle of an upgrade. You get the idea.
The manufacturers are aware of this problem and have begun to ship routers with features like “recovery mode” that makes recovering a snap. You might want to think about those features the next time you buy a router. When you need it, you really need it!
How do I check for router firmware compatibility?
DD-WRT has a router database. Simply enter your router model and you’ll quickly know whether or not it is supported. Tomato, in my opinion, is a superior firmware; although, it takes a little more digging to find out if your router is supported. Nonetheless, with a little searching online, you can quickly find out if your device is supported or not.
If you plan to use Tomato, simply search the firmware name, followed by your routers model number. For example: “Tomato Firmware ASUS RT-N66U”. Or “DD-WRT Linksys E4200”. I also recommend visiting the author websites above. Shibby has a simple description of supported devices on his download page.
http://tomato.groov.pl/?page_id=164
If you need further help, be sure to watch the video on “Router Compatibility” in the members area.