If like me you read Jeff's post, bought an Asus RT-N16 intending to run Tomato, realized that the way Jeff upgraded his firmware was by using the Windows-only manufacturer-supplied utility, and you only have a Mac handy—then this post is for you. Below are instructions for upgrading the router's firmware from the terminal, assembled from a few existing articles, and personally validated by me.
Pre-requisites: some comfort at the command line, some familiarity with firmware upgrades.
First of all:
- Download the appropriate Tomato USB firmware. You'll need a "Kernel 2.6 for MIPSR2 Routers" version; I used Ext build 54, and I've read that the VPN build works too. Either way you're going to end up with a file like tomato-K26USB-1.28.9054MIPSR2-beta-Ext.trx.
- From the menu bar icon, turn off the Wi-Fi on your Mac. We'll not be using that interface.
- Connect your Mac via ethernet cable to LAN Port 1 on the router.
- Turn the router on.
Now, to perform the upgrade, open Terminal.app or your preferred terminal.
1. Turn off your Mac's ethernet interface:
Isaacs-MacBook-Air:~ isaac$ sudo ipconfig set en0 NONE
Password:
Isaacs-MacBook-Air:~ isaac$
2. Reset the router's NVRAM: hold down the WPS button on the back of the router for 30 seconds. Still holding the button, unplug the router and wait for 30 more seconds. With the button still held down, plug in the router and wait 30 more seconds. Now release the button.
3. Now put the router in recovery mode: unplug it, and then plug back in again while holding the "Recovery" button.
4. Bring your Mac's ethernet interface up with a manually-configured address
Isaacs-MacBook-Air:~ isaac$ sudo ipconfig set en0 MANUAL 192.168.1.2
Isaacs-MacBook-Air:~ isaac$
5. Confirm that you can ping the router at 192.168.1.1:
Isaacs-MacBook-Air:~ isaac$ ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1): 56 data bytes
64 bytes from 192.168.1.1: icmp_seq=0 ttl=64 time=0.053 ms
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.217 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=0.080 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=0.093 ms
^C
--- 192.168.1.1 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.053/0.111/0.217/0.063 ms
Isaacs-MacBook-Air:~ isaac$
6. Upload the new firmware using tftp, and wait 90 seconds:
Isaacs-MacBook-Air:~ isaac$ tftp 192.168.1.1
> binary
> put tomato-K26USB-1.28.9054MIPSR2-beta-Ext.trx
6284824 bytes, 2.8 seconds
> q
Isaacs-MacBook-Air:~ isaac$ sleep 90
Isaacs-MacBook-Air:~ isaac$
(update 8/31/2014: some folks have reported their routers to take much longer than 90 seconds to install the newly uploaded firmware. If in doubt, or having problems, you may want to wait up to an hour or two)7. Unplug the router, and plug it back in again with the WPS button held down. Hold for 30 seconds as the router boots up.
8. Swtich your Mac's ethernet to DHCP:
Isaacs-MacBook-Air:~ isaac$ sudo ipconfig set en0 DHCP
Password:
Isaacs-MacBook-Air:~ isaac$
9. Open the configuration page at http://192.198.1.1/ (username admin, password admin) and change the admin password.
10. Enjoy Tomato!