I found myself in the position last year to get a new router. I have a principle router I run, it’s an Atom D525 box running pFsense 2.3.3 p1, but I needed something to use upstairs at my home with nice wireless, I was sick of N band wireless, it’s pretty fast, but wasn’t fast enough for me. This brought me to start checking out AC band routers. I was looking for something I could run DD-WRT, OPENWRT, Tomato, or some other alternative firmware on. I initially purchased a Netgear Nighthawk. I admit, I didn’t do enough research before making the purchase. I don’t recall the exact model, but I got the Netgear home and found out that I could not, at that time, flash it with a stable version of DD-WRT. This was an enormous disappointment, I boxed the router up, and headed back to Best Buy to find an alternative. I settled on an Asus RT-AC87U. I have an Asus WL-500GP, I bought it years ago, but it still works well, and has always been great at running DD-WRT, I expected the same type of experience with the RT-AC87U. Sadly, this was not the case.
Let me throw out some specs for the router:
- Wireless Type: 802.11 ac/n/g/a/b.
- Wireless Speed: Up to 2400 Mbps.
- Wireless Frequency: Dual-band (2.4 & Dual 5 GHz).
- Wired Connectivity: 4x LAN, 1x WAN gigabit Ethernet ports.
- USB Port(s): 1x USB 3.0, 1x USB 2.0.
The primary SoC for device is Broadcom BCM4709 (ARM Cortex-A9 DualCore @1GHz). The 2.4GHz radio is implemented with BCM4360, connected via PCIe to BCM4709. The 5GHz radio is contained within independent Quantenna chipset (QT3840BC+QT2518B), (QSR1000, ARC 700 core), which is connected in some fashion (via RGMII) to BCM4709.
So, the specs are great, unfortunately, this router has always caused problems for me. I do have to say that I am now running AsusWRT-Merlin build 380.65_4 and it has ran well for me much longer than any of the DD-WRT builds I’ve tried.
One of the most annoying problems occurs when going from DD-WRT firmware to official Asus firmware, this always results in a non-booting router for me. The symptoms are an attempt to boot with an immediate reboot ~1 minute after powering on. So, of course this brings about the need to unbrick the router. The process for getting the router to restore from a bricked state is pretty painful, so I thought I’d write up a tutorial to hopefully make the process a little pain-free. The process goes something like this, we disconnect everything from the router, then you plug into port 4 on the router with the router powered off. I’m doing this on a mac, so you open network preferences, set your computers IP address to 192.168.1.12 and the default gateway to 192.168.1.1, then power on the router and wait for it to bring up the interface, then we add a static route. Once we have the static route added, we launch tftp via comand line in osx, then we then power on the router again and bring it into recovery mode, then issue the tftp command to flash the firmware. That’s an outline, now, lets do it!
What we need:
- Bricked Asus RT-AC87 router
- A TFTP client, we will be using the OSX command line
- The MAC address of your Asus router, this can be found on a sticker on the bottom of the router, here’s an example:
You will want to start the process by bringing up Network Preferences, you can access this by right clicking the apple icon at the top left of your screen and selecting System Preferences>Network, or, if you’re using wifi you may see the wifi indicator at the top right of your screen, you can also right click here and select “Open Network Preferences…”. Go ahead and disable your wifi, it will only cause problems with this whole process. Once you have your wifi disabled and the Network Preferences applet is opened, select your ethernet adapter on the left side and select the dropdown on the right that says DHCP, this is where we will be setting the network adapter to use a static address instead of a dynamically allocated one. Configure your network adapter as follows:
After you have those values entered, be sure to hit the “Apply” button at the bottom right of the applet before proceeding. Now, we need to connect between the router and your mac, so go ahead and plug the ethernet cable in. Since the router is in a “bricked” state, you will notice that the ethernet interface only becomes “live” for a brief period of time before the router reboots, we will need to catch the router within that window in order to apply our next configuration changes. Be sure to have your router’s MAC address, this can be found on the label on the bottom of your router, as discussed previously. Looking at the ethernet adapter in the Network configuration applet you will notice that it says “Not Connected”, signifying that we are, obviously, not connected, there is also a red dot net to the adapter, which turns green when connected. Now, you need to open terminal, and ready the following command, you will need your routers MAC address for this step, for this article, I will use the fake MAC 74:00:00:00:00:00:
sudo arp -s 192.168.1.12 74:00:00:00:00:00
Once you have the terminal open with that command readied, do not hit enter, instead, we are going to watch the Network configuration applet until we see the connection indicator light next to the Ethernet adapter go from red to green, then we will hit enter on the terminal. If you have entered the command successfully, you will simply be returned to the command prompt, if the network adapter is not live, meaning you have not timed it right, you will receive the following error:
cannot intuit interface index and type for 192.168.1.12
If this happens, re-queue the command in terminal, unplug power from your router, plug it back in and time again, there really is a fairly large window timing wise, you shouldn’t have a problem hitting it. What we have done is set a static route to our router, insuring that the interface is up in time to be able to issue the TFTP command we need to restore the firmware on our router.
Now that we have a static route, we are going to do a 30-30-30 reset on the router, this may not be necessary, but it clears NVRAM on the router and I feel like it’s a good general practice when doing this type of restore. What you are going to do is, with your router plugged in, press and hold the reset button on the back of the router, continue holding this button for 30 seconds, then, while continuing to hold reset, unplug power from the router and leave it unplugged for 30 seconds. Finally, while continuing to hold reset, plug power back into the router and hold for another 30 seconds, then, release reset.
Now, let’s ready TFTP for transferring our firmware image back to our router, thus restoring it. Again at the command line enter the following command:
tftp> connect 192.168.1.1
tftp> put <NameOfYourFirmwareImage>.trx
After typing tftp and pressing enter, you will be inside of the command line tftp client, this will allow you to restore the firmware image directly to your router.We then type the command to connect to the router, followed by a command to set the file transfer mode to binary, then we tpye in the command to “put” our firmware image back on the router. Once you have that final put command typed out, DO NOT HIT ENTER YET! First we need to put the router into recovery mode. Do that by following these steps:
- Unplug everything from the router
- Power off the router using the switch on the back
- Hold the reset button the back of the router, then power on the router
- Release the reset button on the back of the router when the power led on the front of the router begins to blink slowly
Congratulations, you’re now in recovery mode, we’re pretty much done, now, what you’re going to do is plug into port 4 on the router using our ethernet cable, then, as soon as you see that the connection indicator inside of the Network Preferences applet has turned from red to green, press enter on the terminal window, thus sending the tftp put command. If everything goes well, you should receive a “Success” message, if it does not, press the up arrow on your keyboard and try again. With the router being in recovery mode, there is no need to reset the router, just try the put command again. Once you have the “Success” message, you MUST WAIT 10-15 MINUTES! I can’t stress this enough, and I think this is where a lot of people make the mistake of not waiting long enough. When the firmware upgrade is complete your router will reboot, and you should be unbricked!