A Tale of DD-WRT, Routers, Bricks, TFTP, and ARP

So, we’ve been having problems with our Buffalo WZR-HP-G300NH Rev 1 running the last beta firmware (V24-SP2 build 19484 beta) from 8/9/12.  It’s been showing signs of problems lately, specifically with WiFi dropping out seemingly at random and preventing clients from reconnecting until we reboot the box.  A very frustrating problem to have, to say the least.

The plan was to go ahead and upgrade, since the router is out of warranty as of 2 months ago.  I had a couple in mind, specifically two Asus ones (RT-AC66R and RT-AC68R).  They look pretty awesome, both support DD-WRT, and are pretty full featured (even without DD-WRT).  However, I figured that instead of buying a new one I would at least try factory resetting the current one and then reprogramming it.  I wanted to give it a go, so after work I sat down to get it done.

While I was copying down settings and information, I stumbled upon a thread ( Link ) from July of 2013 that basically had the same issues.   The end user had grand results upgrading to standard DD-WRT (“And I am pleased to report that, near as I can tell, not only is my Buffalo router working, but it is working MUCH BETTER (no more dropped wifi connections) than before the upgrade. Yippee!”).  I was confused though, because the latest version of DD-WRT for my router was listed as DD-WRT v24 preSP2 Beta 14896 from 2010.  That was confusing.  Reading more into the thread, he found that there was a sneaky place that BrainSlayer was putting the firmwares and that the website wasn’t fully updated ( Link ).  Looking at the folder structure I determined that I could navigate my way to a more recent version than the 5/27/13 revision that was linked into the forums.  I found my way to a build from 2/19/14 (Rev 23598) which is located here: Link.  I downloaded both, even though from reading I would only need the Buffalo to DD-WRT one.

So I set upon flashing my Buffalo router.  I did a factory reset first, as I always do.  I then uploaded the firmware and waited.  And waited.  And waited.  10 minutes later, it was still blinking red.  I waited another 10 minutes.  Still blinking red.  I unplugged the router, waited 30 seconds, and plugged it back in.  The worst thing I could have hoped for: Solid Green Power, Solid Red Diagnostic lights.  Every 45 seconds, all lights would flash and the thing would reset.  A dreaded ‘brick’.  Brick is in air quotes of course, because I don’t like the parlance of brick being misused.  Brick to me means a device which is unworking and unrecoverable – basically a fancy paper weight.  I severely borked my router though, because there was still a way to recover it.  Thankfully I had a spare router handy, and plugged it in, and got the apartment back up and running.  Time for dinner first.

So after eating (yummy lentils soup!) I sat down at my desk and reviewed the instructions for getting a bricked router back up and running.  The steps and guides were fairly incomplete and didn’t work for me at first.  Here’s the steps I had to take:

  1. Get your router’s MAC address.
    1. Look on the side of your router for the SSID sticker.  The SSID is your MAC address.
    2. It will be in the format ************ (12 hex characters, A-F and 0-9).
  2. Make sure you have a router firmware available.  Anyone should do.  I used the DD-WRT upgrade firmware instead of the DD-WRT from Buffalo firmware nor the Buffalo firmware directly.
  3. Unplug your router and all cables.
  4. Setup a static IP address on your computer
    1. IP: 192.168.11.2
    2. Netmask: 255.255.255.0
    3. Gateway & DNS: 192.168.11.1
  5. Setup a static route to the router (I did this in Windows, steps will likely be different in Mac/Unix environments)
    1. Method 1: ARP
      1. Open up an admin command prompt
      2. Type in “arp -s 192.168.11.1 **-**-**-**-**-**”
      3. The *’s should be filled with your MAC address from step 1.
    2. Method 2: netsh
      1. Open up an admin command prompt
      2. Type in “route print” and look for the interface list.  Find your primary device.
      3. Interfaces
      4. Type in “netsh interface ipv4 add neighbors xx 192.168.11.1 **-**-**-**-**-**”
      5. The xx should be your interface number from above, and the *’s should be filled with your MAC address from Step 1.
    3. Method 1 was hit or miss for me.  Method 2 worked every time.
  6. Get ready.
    1. Plug ONLY your computer back into the router.
    2. In your admin command prompt, type “tftp -i 192.168.11.1 put ” but do not press enter yet.
      1. You may need to install the Windows TFTP tool or find one on the internet.
    3. Plug the power back into your router.
    4. WAIT 10 seconds (1 Mississippi, 2 Mississippi, …. 10 Mississippi).
    5. Press enter to initiate the TFTP.
    6. Hope for success.  If you don’t get a success message, go back and disconnect everything and start again with this process.  If you get a success message WALK AWAY FOR 15 MINUTES.
    7. After 15 minutes go and look at your router.  If you’re lucky (as I was) you’ll see blinking lights indicating that there’s traffic and activity.  Hurray! You’ve unbricked it.

Huzzah!  I now have DD-WRT running on my router!  Everything is going smoothly finally.  Time to wait a few weeks and see if everything will cooperate.  I really would like to avoid paying for a new router if I can at all.

Leave a Reply