Sunday, 09 June 2013 15:11

Recover bricked TL-MR3020 Wireless N Router

After flashing the latest OpenWRT image file (openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory dated 03-Jun-2013), my TL-MR3020 is bricked. All the LED is keep on blinking (about 3 seconds once) except power LED, and the network is getting connected and disconnected every 3 seconds. Very lucky that the problem was fiexed by using serial console and Tftpd32 method.
 
Note:
Using serial console method require to open the case cover (void warranty) from TL-MR3020 router, and solder a10K resistor and 4 ways header pin to it as shown in figure below.
Solder a 10K resistor and 4 ways header pin to PCB
 
 

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

USB to UART converter
 
 
 

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.

Opening case
 
 
 

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
USB-UART converter and TL-MR3020 router connection diagram 
 
Finally, connect an ethernet cable from TL-MR3020 network (do not worry about network, it is not working at the moment) to the computer and plug in the USB-UART converter to computer. 
Device manager 
 
 

Setting up network IP address

Assign a static IP address to the computer, it is configured to 192.168.1.2 since the router IP address is 192.168.1.1 (even though it is not working).
Computer IP address
 
 
 

Install OpenWRT from the U-Boot console 

Download the latest Attitude Adjustment RC1 snapshot and save it to C:\Program Files\Tftpd32 (Tftpd32 default installation folder) as shown in figure below
Tftpd32 installation folder
 
Run Tftpd32 as shown in figure below, where Server interface is your computer IP address, it should detected automatically
Tftpd32
 
 
  • 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
PuTTY configuration
 
 
Click on Open button, the PuTTY screen should look like this

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

After a 1-2 seconds it shows Autobooting in 1 seconds, when displaying this enter tpl immediately.
 
You will get a U-Boot-console, it shows as hornet>, and you must enter the following commands:
Where setenv ipaddr is the router IP,  setenv serverip is the computer IP, openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin is the OpenWRT image file

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

Note:
It is necessary to unplug the USB-UART everytime a new PuTTY instance started
Read 81841 times Last modified on Sunday, 12 June 2016 10:38

35 comments

  • Comment Link Izo Wednesday, 19 April 2017 04:29 posted by Izo

    Thanks you saved my mr3020 :)

  • Comment Link admin Sunday, 09 April 2017 12:14 posted by admin

    I'm not sure your USB-Serial adapter require resistor or not, just solder a resistor to your router, it won't harm your router .

  • Comment Link John Saturday, 08 April 2017 16:26 posted by John

    I'm using Silab uart CP2102 ( searching google for detail). When I connect 3 pins to 3 pins like you (I doesn't have resistor) nothing happened. I try to use Micro A to power up it, all the leds blink and blink...

  • Comment Link admin Saturday, 08 April 2017 13:12 posted by admin

    Hi, Duy:
    It depends on your USB-Serial adapter. Certain USB-Serial adapter built-in with pull-up resistor & hence does not require resistor.
    Please refer to previous comment on how to power the router & USB-Serial adapter.

  • Comment Link admin Saturday, 08 April 2017 12:45 posted by admin

    Hi, John
    The router is power with 5V, but the router GPIO uses 3.3V. So you need a 3.3V USB-serial adater to connect to your router, otherwise you need to connect a Logic Level Converter between router & USB-serial adapter.

    For my case, my router is power with 5V, my USB-serial is connected directly to the router with only three cable (Rx, Tx & ground) since my USB-Serial adapter supported 3.3V GPIO

  • Comment Link Duy Friday, 07 April 2017 10:24 posted by Duy

    Does it really need a resistor? My usb uart is silab cp2102, comes with 6 pins: 5.5V, TXD, RXD, VND, 3.3V, VCC.How do I connect them to my router? Using the 5V, 1A adapter to power up the mr3020? Or power up it by using 3.3V to VCC (MR3020)

  • Comment Link John Friday, 07 April 2017 10:08 posted by John

    I'm using silab USB to UART 2102. How do I power up the mr 3020

  • Comment Link admin Thursday, 26 January 2017 21:08 posted by admin

    It is not possible to use the Raspberry Pi as a USB-serial converter.

  • Comment Link Francesco Thursday, 26 January 2017 02:05 posted by Francesco

    I have a Raspberry pi. You think can I use it to transfer the MR3020 firmware to router without using usb to UART converter?

  • Comment Link admin Thursday, 12 January 2017 09:43 posted by admin

    Please use lower case tpl.

  • Comment Link muhackl666 Thursday, 12 January 2017 03:42 posted by muhackl666

    When I try to type in tpl, nothing happens. It’s like it does not accept any input. I tried on Windows like described above and with Linux and gtkterm – no input possible. What can be wrong?

  • Comment Link muhackl666 Thursday, 12 January 2017 03:41 posted by muhackl666

    When I try to type in tpl, nothing happens. It’s like it does not accept any input. I tried on Windows like described above and with Linux and gtkterm – no input possible. What can be wrong?

  • Comment Link coderew Wednesday, 04 January 2017 15:15 posted by coderew

    Hi Juan,
    Try using an Arduino board( If you've one lying around like me ) or a 5v USB-to-TTL converter off of ebay. I bricked mine(TL-MR3220) once trying to install OpenWRT on it. I've a detailed blog post on it check that out if you like.
    https://goo.gl/4E4SMq

    Hope that helps
    :)

  • Comment Link admin Friday, 30 September 2016 18:21 posted by admin

    How to verify it is successful recovered? You should see many ######### characters after Load address: 0x80000000.
    After successful writing the image to the router, you must restart the router by power it OFF & ON.

  • Comment Link Valentin Tuesday, 27 September 2016 20:33 posted by Valentin

    I did everything like in tutorial and it worked ok, but now the router no longer boots Linux, and I can not connect to the serial.
    What can be the reason?

  • Comment Link admin Friday, 12 August 2016 20:29 posted by admin

    Can you telnet into the router? Please visit this link if you are uable to telnet into router.
    http://ediy.com.my/tutorials/item/119-recover-bricked-tl-mr3020

  • Comment Link Joyel Thursday, 11 August 2016 18:37 posted by Joyel

    After Recovery i removed the "TTL UART Module Converter Adapter" then connected to my PC, but unable to login... why?...
    After recovery how to setup configuration of WDS Connection with Usage Limitation.....

  • Comment Link admin Thursday, 23 June 2016 16:35 posted by admin

    It should work. Please read here
    https://wiki.openwrt.org/toh/tp-link/tl-mr3420#using_a_serial_line

  • Comment Link Dad Wednesday, 22 June 2016 04:18 posted by Dad

    Mine is 3220 can this procedure works as well?

  • Comment Link admin Saturday, 07 May 2016 18:18 posted by admin

    Did you select the correct speed in the Putty configuration? It is 115200.

Leave a comment

Back to Top