Recover bricked TL-MR3020 Wireless N Router


Prerequisite
- Tftpd32: A free tftp and dhcp server for windows, freeware tftp server. Very efficient for booting over LAN.
- PuTTY: SSH and telnet client, free and open-source terminal emulator, serial console and network file transfer application.
- USB to UART converter support 3.3V
As shown in figure below is my USB-UART converter which come with 6 ways header pin for interfacing. The voltage selector must set to 3.3V since the TL-MR3020 router have its I/O pins working at 3.3V. Plug in the USB-UART converter to computer, I get about 3.6V measure by poking at VCC and GND

Opening the case
Pry it open with a thin but very stable blade tool. Start above the mini USB power port where the case is not glued.

Connection Diagram
Do not connect the router VCC to USB-UART VCC, it may break your adapter or your router
TL-MR3020 | USB-UART |
GND | GND |
RX | TXD |
TX | RXD |


Setting up network IP address

Install OpenWRT from the U-Boot console


- Run Putty as show in figure below
- I'm using COM4 since my USB-UART driver detected as COM4
- Speed 9600 is not work for me even though USB-UART driver shows 9600, I must use 115200

Using default environment
In: serial
Out: serial
Err: serial
Net: ag7240_enet_initialize...
No valid address in Flash. Using fixed address
No valid address in Flash. Using fixed address
: cfg1 0x5 cfg2 0x7114
eth0: 00:03:7f:09:0b:ad
ag7240_phy_setup
eth0 up
: cfg1 0xf cfg2 0x7214
eth1: 00:03:7f:09:0b:ad
athrs26_reg_init_lan
ATHRS26: resetting s26
ATHRS26: s26 reset done
ag7240_phy_setup
eth1 up
eth0, eth1
Autobooting in 1 seconds
hornet> setenv ipaddr 192.168.1.1
hornet> setenv serverip 192.168.1.2
hornet> tftpboot 0x80000000 openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin
eth1 link down
dup 1 speed 100
Using eth0 device
TFTP from server 192.168.1.2; our IP address is 192.168.1.1
Filename 'openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin'.
Load address: 0x80000000
Loading: #################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
#################################################################
######################################################
done
Bytes transferred = 3932160 (3c0000 hex)
hornet> erase 0x9f020000 +0x3c0000
First 0x2 last 0x3d sector size 0x10000 61
Erased 60 sectors
hornet> cp.b 0x80000000 0x9f020000 0x3c0000
Copy to Flash... write addr: 9f020000
done
hornet> bootm 9f020000