My Profile Photo


I'm Jason, a web applications developer in the San Francisco Bay area.

Unbricking TP-Link TL-WDR4300

I tried to flash the TP-Link TL-WDR4300 router with a custom OpenWRT image recently, and after doing so I was unable to connect to the device like I expected.

Here is how you can recover / un-brick the device.

Install tftpd

I’m using an Ubuntu machine. There are instructions for installing tftpd and xinetd, but these don’t seem to work with Ubuntu 14.04. If you’re using Windows, then I recommend this video.

I found instructions on a forum that worked for me.

Install tftpd-hpa and tftp client

sudo apt-get install tftpd-hpa tftp

Edit the TFTPd Configuration File

Edit /etc/default/tftpd-hpa to use the following configuration

$ sudo vi /etc/default/tftpd-hpa
TFTP_OPTIONS="-s -c -l -vv"

The -vv will cause the TFTP server to log out to /var/log/syslog

Create the TFTP Directory

The server will serve files from the /tftpboot directory. You need to create it and give it the proper permissions.

sudo mkdir /tftpboot
sudo chmod -R 777 /tftpboot 
sudo chown -R nobody /tftpboot

Restart the service

sudo service tftpd-hpa restart

Test the TFTP Daemon

Create a file in the directory

echo "this is a test" > /tftpboot/test.txt

Download the file via tftp to your home directory. If it downloads fine, your tftp server is running.

$ cd ~
$ tftp localhost
tftp> get test.txt
Received 16 bytes in 0.1 seconds
tftp> quit
$ cat test.txt
this is a test

Download the Latest Firmware

Download the firmware from the tp-link official support page to the /tmp directory and unzip the file.

cd /tmp

Copy the binary image file to /tftpboot named as ``.

cp wdr4300v1_en_us_3_14_3_up_boot\(151104\).bin /tftpboot/wdr4300v1_tp_recovery.bin

Configure your Machine

Change your machines IP address to The router will try to connect to this address and download the image from it in a future step. This requires a subnet setting of, with a gateway of

Enable TFTP Recovery Mode

Taken from OpenWRT - TP-Link TL-WDR4300 - Flashing via TFTP:

Power up the TL-WDR4300 and as soon as the asterisk/star symbol to the right of the power/IO image starts to flash, hold down the WPS/Reset button that is on the back of the device for about 10 seconds. The asterisk symbol should begin to flash much faster than before. Let the device continue to fit and do this until it reboots.

Wait for the firmware transfer (about 20s), firmware flash (about 90s) and subsequent reboot (about 30s).

You can tail the syslog to see if the router is actually interfacing with the TFTPd server.

tail -F /var/log/syslog