Today, while playing around with the zones and firewalls in my OpenWRT router, I accidentally bricked it. It would not accept any traffic from WAN anymore. It did not respond to HTTP requests, nor to SSH, nor to ping.

Luckily, the TP-Link router supports a recovery flash mode with TFTP. Since the tutorials I found and used seem to have been based on other distributions I want to write down my notes for Arch Linux.

Now, install tftp-hpa - I hope you still have internet connection in some way. On Arch Linux all files for TFTP are stored in /srv/tftp (some other tutorials use /tftpdata or /var/lib/tftp). The configuration file is located at /etc/conf.d/tftpd on Arch Linux (/etc/default/tftpd in some tutorials). I used the following configuration:

TFTPD_ARGS="-vv --secure /srv/tftp"


If -vv is enabled logs can be viewed with journalctl:

journalctl -f -u tftpd


Now, let’s startup the server:

systemctl start tftpd


You can test your setup if you copy any file to /srv/tftp and then try to request it with a TFTP client:

mv myfile.txt /srv/tftp/
tftp localhost
tftp> get myfile.txt


You should now have myfile.txt in your working directory again even though it was moved away before. In the systemd logs you should see a request for the file (RRQ from ::1 filename myfile.txt). I had to send my file request a few times until a saw the log output once.

Now that we know TFTPd works, copy the OpenWRT image to /srv/tftp/wdr4300v1_tp_recovery.bin.

Connect your computer to the TP-Link router with a cable. Some tutorials say it must be LAN 1 port, some others don’t mention it; I used LAN 1. Startup your network connection with a static IP address of 192.168.0.66 (I set gateway and DNS to 192.168.0.86 because this is the IP of the router in recovery boot, but I don’t think it really matters).

Now, shutdown the TP-Link router, hold down the reset button and then start it again. It should boot into recovery mode (an “Update” lamp with two arrows should light up). After some time it will request the file wdr4300v1_tp_recovery.bin, download it, install it and then reboot.

Now, you can reach OpenWRT at 192.168.1.1 again. Hooray!

I do not maintain a comments section. If you have any questions or comments regarding my posts, please do not hesitate to send me an e-mail to stefan@eliteinformatiker.de.