I've been using OpenWRT for several years now, and have been quite pleased. It was easy to use, functional enough for my needs, and very stable. I know some folks report stability problems with OpenWRT, but I never had any problems. My installation was so stable that I hadn't flashed a newer version for several years: it Just Worked.
Until this week, that is. The router -- a Linksys WRT54G version 2.2 -- locked up the other night. No big deal: power cycle it, wait a bit, and we're back in action. Then it locked up again last night. I do not want to get into the habit of daily power cycles, and I had a growing interest in limiting my neighbor's use of my router, so I thought I'd upgrade to a different firmware. I'd heard good things about tomato, so decided to give that a shot.
I was unable to flash the tomato firmware onto my router using the OpenWRT web interface: OpenWRT complained that the firmware I uploaded was not a supported format. After a couple of tries, I finally got the TFTP transfer to work. Moments later I was logged into the tomato configuration screen and setting up my network.
Wow! The tomato interface is great: easy access to all the things I'll want to tweak, and then some. The bandwidth monitoring is interesting, and I was frankly surprised that my little router would be able to produce such great information. I quickly set up static DHCP addresses for the various devices in our house, defined the necessary port forwarding so that I can access internal machines from the outside world, and set up DNS-O-Matic and OpenDNS dynamic DNS updates. All in all, it took me less than 30 minutes to get everything (and more!) set up as I had it with OpenWRT. For comparison, configuring OpenWRT was a process that took considerably more effort, spread out over a couple of days.
Since I got my first wireless router, I've run open networks. I don't like to bother with WEP or WPA when I'm at home, and I don't mind providing WiFi access to neighbors in a pinch. So far, no one has really abused this: I've never had a bandwidth shortage as a result of a neighbor leeching my signal, and I've never received calls from law enforcement about illegal downloads from my IP addresses. The latter is something about which I don't worry at all, but the former is something of a concern. With OpenWRT, I had no easy way to ensure that I got first dibs on all my bandwidth, and any nearby guests got enough signal to be able to access the Internet without getting so much signal as to live off of it forever.
I don't want to require static assignments for all clients, because I want friends and family visiting to be able to easily use my WiFi from their smartphones or laptops or netbooks without me having to record their MAC addresses.
The tomato firmware has fairly simple QoS controls, so hopefully I can configure the network to prioritize all of my static DHCP clients, and give (much) lower priority to all dynamic DHCP clients. I don't want to become a QoS expert, and the tomato controls are nice, but not great, so this may be a work in progress. In the worst case scenario, I'm no worse off than I was with OpenWRT, so I can't really complain too much.
All in all, I'm very impressed with tomato. I don't know why I waited so long to upgrade!