If you own an ASUS router and you brick it while trying to upgrade the firmware or some other action, you'll probably find documentation saying you need to run a Windows-only firmware restoration program to undo this damage.
While this is apparently the only officially supported method for restoring firmware (the alternative being to ship the router to ASUS for repair, a 10+ day process), I found with some exploring that the Windows program is likely just a glorified tftp client, and that you can restore firmware using some more standard, non-Windows tools.
I'm listing below the steps I had to use today after trying to upgrade my RT-AC66U device from firmware version 184.108.40.206.266 to 220.127.116.11.270. (The release notes for the latter indicate a fix for a "live update related bug" which is what I suspect I encountered when I first tried to do the upgrade via the web GUI.)
I'm a Mac user, but these steps should work for other non-Windows operating systems such as Linux. It hopefully goes without saying that you should follow these steps at your own risk, and I make no claims or warranty about the outcome; you could end up worse off than you are now. You could set your router on fire. You could end up killing another version of yourself living in an alternate universe. Be careful.
1. Make sure your router is indeed in need of an emergency recovery firmware restore. On the ASUS unit I have, this is indicated by a slowly flashing power light and a clear lack of Internet connectivity. Make sure the other usual methods - power off, hold down the reset button, hold down the reset button as you power on, etc. - don't fix things.
2. Find a way to get a known good ASUS firmware image file onto your system. This is probably a file that ends in ".trx" such as "RT-AC66U_18.104.22.168_270.trx".
3. Unplug all other network devices from the unit, and connect your Mac or other system to the ASUS unit with an Ethernet cable plugged in to port #1 on the router.
4. Setup your network configuration so that you have a static IP address on the 192.168.1.0/24 network block. I used 192.168.1.10 with a netmask of 255.255.255.0 and a gateway of 192.168.1.0.
5. Open a Terminal window and make sure you can ping 192.168.1.1., the probably IP address of the ASUS router. If you can't ping the router, the rest of these steps probably won't work.
6. CD into the directory where the firmware image ending in .trx exists (see step #2 above).
7. Run these commands from the terminal prompt, using the correct firmware image filename in the "put" command:
$ tftp tftp> connect (to) 192.168.1.1 tftp> binary tftp> put RT-AC66U_22.214.171.124_266.trx Sent 22765568 bytes in 76.5 seconds tftp> quit
8. Give the router about 5 minutes to process the firmware image you've just sent it. I had to then manually turn the unit off and back on to get it to reboot into a working state. Once it came back up, I could again ping it and I could again access the admin GUI via the web.
If that doesn't work, it wouldn't hurt to repeat the steps again and give it another try. If that still doesn't work, you'll probably want to call ASUS for an RMA case (that's 812-282-2787 in the US and Canada).
I would have hoped that a company manufacturing devices for the modern age would not hobble their customers` ability to self-troubleshoot by limiting the recovery process to only users running Windows. Even if the above method is unsupported, they could at least publish it in some form so that they don't use up their time and their customers` time with unnecessary interactions with Windows users, or worse, mailing units in for repair that could instead be repaired where they sit.
I hope these steps are helpful to someone else. Let me know if you find other techniques that might help in similar situations. (If this post really got you out of a jam and you're feeling super thankful, consider donating Bitcoins.)