Unbrick an OpenWRT TP-Link N750 with Arch Linux
Today, while playing around with the zones and firewalls in my OpenWRT router, I accidentally bricked it. It would not accept any traffic from LAN 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).
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!