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.
First, download the image of OpenWRT for the N750 router (TL-WDR4300).
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
/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"
-vv is enabled logs can be viewed with
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
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
(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
download it, install it and then reboot.
Now, you can reach OpenWRT at
192.168.1.1 again. Hooray!