What is the most compelling reason to flash your router to the Tomato firmware?
Things I like about it:
- Very stable
- Very easy to install on Linksys WRT54G routers
- Allows you to increase your wifi signal strength!
- UI is simpler and faster than the stock Linksys UI
- bandwidth monitor helps me to see how much bandwidth others are using on my network, so I know why hulu is skipping, etc
- The wireless survey is a nice, easy way to see what channels your neighbors are using, so you can set your wifi to a clear channel
- Simple access restriction
The signal boost was the clincher for me. The stock firmware on the earlier WRT54G routers wouldn't let me adjust the signal strength, but Tomato lets me do that. Before I upgraded to Tomato, I couldn't get a clear signal in the back room in my house. Now, it's as clear as any other room.
Tomato is pretty much "fire and forget". The bandwidth graphs are nice, and it's really quite easy to configure. It lets you ssh in, if you want to fiddle with low level settings, but ever since I set it up, I don't think I've ever went back into the UI.
It just works, and works well.
It supports wireless bridging (WDS) if you want to set up more than one router to cover a large space.
But the biggest thing is that it's very stable. I don't ever have to reboot the router because of a freeze or a problem.
I think most people run one of the alternate WRT firmwares (like Tomato, OpenWRT, DD-WRT, Packet Protector, etc) just for the geeky fun of it.
However, there are some extra features that these firmwares have that are not available in the stock firmware. For example, others here have mentioned the ability to increase your radio output power beyond what's allowed with the vendor firmware.
The big one for me was that the stock Linksys firmware on my WRT54GL wouldn't allow me to setup a static NAT such that a service was available on the outside (internet) on a different port than it was actually running on the internal server. Specifically, I wanted to allow SSH access to one of my home boxes on several alternate ports (long story), but I didn't want to have to setup SSH on my home box to run on those ports. The default Linksys firmware would allow that, but Tomato does.
Some of the other alternate WRT firmwares offer even more features. I'm considering upgrading my router from Tomato to OpenWRT because I'd like to run OpenWRT will let me setup my WRT54GL as an OpenVPN server.
So the shortened answer would be two reasons to run Tomato or otherwise reflash your router: 1) if you want to use features that are in Tomato (or another alternate WRT firmware) that aren't in the vendors stock firmware 2) just for kicks! :-)
I think the biggest one for me is the Quality of Service support. Sure, you can do it on the Linksys firmware, but it's extremely limited.
With Tomato, you can set your BitTorrent traffic to Lowest priority, your HTTP browsing to High and your Skype to Highest. That means that your HTTP and VOIP traffic will always be serviced before BT, which is nice if you have a lot of downloaders in your house.
I found that, before I switched to Tomato, whenever people used BitTorrent the network would slow to crawl (and be pretty much unusable). Now with Tomato, the network is smooth as silk.
Lots and lots of usage statistics :)
Nice real-time tracking of traffic as seen at http://www.polarcloud.com/img/ssbwm100.png
Stability and ease of configuration were my two big reasons when comparing it to other open sourced firmware releases but the real gem was a relatively easy to configure qos implementation.
I was easily able to configure several routers in a secure bridge and they're as stable as can be... to my knowledge they've never had to be rebooted.
Lots of additional features to customize. My favorite is iptables. You can filter ports and protocols specificly and not be dependent on the vendor's firmware having exposed a 'checkbox'. Bandwidth monitoring is also a plus.
Control. Tomato gives you a lot of control over your router that you don't (usually) get with the standard firmware. To give a few examples:
I mapped IPs to MAC addresses, so my each interface on my network will always have the same local IP.
I enabled passwordless SSH on my router. Then is used an alias in my .bashrc so I just type "router" and I'm logged into my router via SSH.