Submit Hint Search The Forums LinksStatsPollsHeadlinesRSS
14,000 hints and counting!

Installation guide for Tomato firmware on a Buffalo router Install
Tomato is a free, open-source, Linux-based firmware for some wireless routers. The major focus areas for Tomato are stability, speed, and efficiency. It is maintained by Jonathan Zarate. The firmware is notable for its web-based user interface that includes several types of bandwidth usage charts, advanced QoS/access restriction features, raised connection limits which enables P2P networking, and support for 125 High Speed Mode. There are lots of guides on getting the firmware to work with Linksys Routers, but not a clear one for Buffalo routers. Flashing the Buffalo is a bit trickier, but it's worth it because it is cheap and plentiful (check out newegg). Here is a step-by-step guide.

First, you need to determine which router you have. Buffalo doesn't display the exact model number on the box. Unbox the router, and check the back side, where it has info like username, password, router address, and more. You'll find the router model ID code there. This guide applies specifically to the WHR-G54S, but you can also flash the WHR-HP-G54, WZR-HP-G54, and WZR-RS-G54, from what I can find on the web.

Next download the Tomato firmware from the above-linked site. Extract the contents. (You may need to search for a program to extract the 7zip file format; The Unarchiver freeware for the Mac is what I used.) Now look through the folders for a trx folder. Inside that folder is a file named code.trx; that is the new firmware.

Plug the router in, and get the ethernet cable out. Plug one end of the ethernet cable into the LAN ports (be sure it's the LAN port, not the WAN port; this is where I got stuck). Plug the other end of the ethernet cable into your Mac's ethernet port.

Now change the settings on your Mac. First disable AirPort if you already have a wireless router. Then go to System Preferences » Network, click on Show and select Built-in Ethernet. Click on the TCP/IP tab to display TCP/IP settings. Now set Configure IPv4 to Manually, and for the IP Address, put in For Subnet Mask, use, and for Router, set it to You can now test to see if your computer sees the router. Open up a Terminal window and type ping; you should see something like this:
64 bytes from icmp_seq=663 ttl=64 time=0.867 ms
64 bytes from icmp_seq=664 ttl=64 time=0.900 ms
64 bytes from icmp_seq=671 ttl=100 time=2.351 ms
This means the router is communicating with the computer. If you do not see similar results, then recheck the first couple of steps and try again. Leave this window up and running. It should continue to keep pinging. Now open up a second terminal window. cd to the directory where the code.trx file is located.

Once you are in the right directory, type tftp This command enters tftp mode; the next command lines will be proceeded by tftp>. Now type these commands:
rexmt 1
Now type put code.trx. However, do not press Enter yet. Just leave this window open for now.

Next, unplug the power from the router. Then hold down the INIT button on the bottom of the router (you'll need a pen tip, or some sharp object to do this). Keeping the INIT button pushed down, plug the router back in. Your router should still be connected to your computer via the ethernet port at this time.

Turn your attention back to your first Terminal window, where you entered the ping command. When you disconnected the power to the router, notice that the pings failed and did not bounce back. After you plug the power back into the router, let go of the INIT button. When you see the first ping return, go immediately to the other Terminal window and press Enter to send the command put code.trx. A whole bunch of lines should flash through with some code. This is the transfer; it should take about 10 seconds or less. You'll see something like this in the beginning:
tftp> put code.trx
sent WRQ <file=code.trx, mode=octet>
received ACK <block=0>
sent DATA <block=1, 512 bytes>
received ACK <block=1>.....
And then it will end with transmission completed (or something of that nature telling you the transfer finished). If you don't see this, start over with changing the settings on your Mac. After the transmission is completed, do not interrupt the power supply for about two minutes -- if you do, you could destroy your router. The router should be rebooting during this time. If you look at your ping window, you'll know the router is ready when the pings start bouncing back again.

Once the router is rebooted, go back to System Preferences » Network » Built in Ethernet. Click on the TCP/IP tab to display TCP/IP settings. Set the Configure IPv4 setting to Using DHCP (if that's what you use; otherwise fill in your network info). Now open a browser window and type in to login to the router. Login name is root, password is admin. You can read the Wiki Guide to figure out what to do with your new features.
  • Currently 2.14 / 5
  You rated: 4 / 5 (7 votes cast)

Installation guide for Tomato firmware on a Buffalo router | 6 comments | Create New Account
Click here to return to the 'Installation guide for Tomato firmware on a Buffalo router' hint
The following comments are owned by whoever posted them. This site is not responsible for what they say.
Installation guide for Tomato firmware on a Buffalo router
Authored by: nmerriam on Apr 06, '07 11:06:15AM

I just wanted to comment that Tomato firmware for my Linksys router has been FANTASTIC and I highly recommend anyoen with a compatible router upgrading to it. I was using WW-DRT before I heard about Tomato, and I can't believe how quickly Tomato has gotten better than everything else available.

[ Reply to This | # ]
Installation guide for Tomato firmware on a Buffalo router
Authored by: Slinkwyde on Apr 06, '07 11:24:54AM

I second that. I just upgraded from the stock Linksys firmware on my WRT54G v2.0 a few days ago, and it's amazing. Nice UI and functionality. Very highly recommended.

[ Reply to This | # ]
Installation guide for Tomato firmware on a Buffalo router
Authored by: superg on Apr 06, '07 03:28:42PM

Has anyone used DD-WRT and moved to Tomato? What do you like better in Tomato? From looking at the screenshots, other than the graphs, I don't see anything that Tomato can do that DD-WRT can't.

[ Reply to This | # ]
Installation guide for Tomato firmware on a Buffalo router
Authored by: maggard on Apr 06, '07 08:31:41PM

What can Tomato do the DDWRT doesn’t?

Really really well designed interface. Seriously. I regularly discover how thoughtfully it is put together to make common tasks frictionless.

The live SVG-based graphs are more useful then I thought they’d be. They give immediate useful feedback about changes I’ve made to the router and how it is affecting traffic. (Note you need to be using Firefox or a beta of Safari to see all of ‘em)

Beyond that, it’s lean so it’s fast. The QOS is almost intuitive to configure and comes with 5 of the most universal and useful settings.

But bullet-item features? Nope. Tomato isn’t a kitchen sink of firmwares. For most folks needs that puts it, and it’s emphasis on usability and manageability, light-years ahead of the more feature laden (ridden?) alternatives.

(Am I over-the-top about Tomato? Sorta. After daily dealing with router firmwares & the like for 3 years this is the first in the iPod/TiVo/it-works-the-way-it-should class.)

[ Reply to This | # ]
Installation guide for Tomato firmware on a Buffalo router
Authored by: on Apr 15, '07 01:33:36PM
note the IP address of the router given might be

Sorry for the typo. Try both before giving up :)

[ Reply to This | # ]
Installation guide for Tomato firmware on a Buffalo router
Authored by: houlia on Oct 19, '09 03:14:20PM

I just used this, a couple notes: by "use the LAN port" I believe he means the port marked "1" on the router - I was using 4 without any luck. Also, with the Buffalo routers, make sure you hold the init button (the one you need a pen to press) down until the red light flashes on, otherwise the router goes into some sort of different boot mode. You can tell you're doing it right if the pings work for a quick period of about 5 seconds, then stop working again.

[ Reply to This | # ]