Recently, I’ve flashed my MR3020 in attempt to make my own Wifi Pineapple. But.. You know. Shit happen. :p
In other word, i screwed up my MR3020 and bricked it. All the LED is keep on blinking, some is on and not blinking, and the network is getting connected and disconnected randomly. Guess that’s a sign you’ve mess up with the device. XD
But I’m lucky because you still can recover the device via serial console and tftpd32 method. (yeay!)
Bear in mind that this method will VOID your warranty. So, don’t do this unless you willing to sacrifice for the sake of knowledge. 🙂
Things that you need:
- 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 (3.3V). I’m using this converter that I bought at Cytron Technologies.
- A 10K resistor
- Female to Female OR Female to Male Jumper Wires
So, as you can see, my USB-UART converter 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.
Connection Diagram
* Do not connect the router VCC to USB-UART VCC, it may break your adapter or your router
TL-MR3020 | USB-UART | COLOR
------------|---------------|-----------
GND | GND | BLACK
RX | TXD | GREEN
TX | RXD | YELLOW
For the picture of the connection diagram, refer to first picture above.
So, in my case, my MR3020 is version 1.9. As you can see picture above, mine doesn’t have any serial port to connect to using female jump wire. So I use female (attach to USB-UART) to male (attach to MR3020) as picture below:
Take note that I only put the resistor and jumper wire without soldering. You can do a soldering to your jump wire and resistor to the port with in this tutorial, I skip with that. :p
After you have all things in place, you can start installing the UC00B (USB-UART) driver to your computer. After finished, restart your computer, and check your Device Manager. You should see something like this:
which indicated that the driver and the converter is detected by computer and the driver is properly installed.
Setting up network IP address
Assign a static IP address to the computer, using IP address 192.168.1.2 since the router IP address is 192.168.1.1. No need for Internet connection in this process.
REMEMBER! Ensure that you have disable you windows firewall. Or else, the next step will might not work.
Install OpenWRT from the U-Boot console
Download the latest OpenWRT firmware and save it to C:\Program Files\Tftpd32 (Tftpd32 default installation folder) as shown in figure below:
You also can click the “Show Dir” button and check if the file is there or not.
Run Putty, select Serial option, on Serial Line, I’m using COM3 since my USB-UART driver detected as COM3, for Speed option, I use 115200. Then click Open. Example like picture below:
After that, power up your MR3020. On Putty console, you should see something like this:
U-Boot 1.1.4 (Aug 17 2012 - 15:21:03) . AP121 (ar9330) U-boot . DRAM: 32 MB led turning on for 1s... id read 0x100000ff flash size 4194304, sector count = 64 Flash: 4 MB 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
The moment after you see “Autobooting in 1 seconds“, type in word “tpl” immediately.
tpl hornet>
If everything is correct, you should see “hornet>” in your console. if you missed it, close and open back your Putty, follow the instruction above until you see the word “hornet>“
Now you are in U-Boot-console, as it shows “hornet>” on your console. Now enter the following commands:
setenv ipaddr is the MR3020 IP address,
setenv serverip is the computer IP address,
hornet> setenv ipaddr 192.168.1.1 hornet> setenv serverip 192.168.1.2
Then enter this command to download openwrt .bin file:
tftpboot 0x80000000 openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin
you should see something like this:
hornet> tftpboot 0x80000000 openwrt-ar71xx-generic-tl-mr3020-v1-squashfs-factory.bin Using eth1 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)
Then enter this command to erase old firmware:
erase 0x9f020000 +0x3c0000
The output must be like this:
hornet> erase 0x9f020000 +0x3c0000 . First 0x2 last 0x3d sector size 0x10000 61 Erased 60 sectors
Then enter this command to start flashing:
cp.b 0x80000000 0x9f020000 0x3c0000
And the output is:
hornet> cp.b 0x80000000 0x9f020000 0x3c0000 Copy to Flash... write addr: 9f020000 done
After that, lets try to boot to the new firmware:
bootm 9f020000
And the result is:
hornet> bootm 9f020000 ## Booting image at 9f020000 ... Uncompressing Kernel Image ... OK . Starting kernel ... ### snip ###
And.. Thats it. You’ve recover you almost-dead MR3020 to life! 🙂
The device new IP is at 192.168.1.1. Happy hacking!
Credit to this blog for this tutorial!
Hello,
can i flash an original firmware from tp-link site to my bricked router?
Thanx…
Hi,
Maybe. You can try to follow this link for reference:
http://ediy.com.my/index.php/blog/item/51-tp-link-tl-mr3020-restore-from-openwrt-to-original-firmware
If tftpboot only Show “T T T T …….”, try to deactivate the Windows-Firewall temporarily!! This works for me!
Ah. I totally forgot about that. I’ve already disable the firewall at the first place. Thanks for pointing that out! 🙂
My firewall is disabled. I’ve confirmed the ftp server is working correctly, but I’m getting T T T before it says it has exceeded tries. Please help
Hi,
Maybe you can read here for solution. I guess.
http://www.denx.de/wiki/view/DULG/TFTPTimeout
i make all the steps, but when i power the mr3020 dont show anything :C the chip is broken? or what?
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?
Salam… Saya gagal utk type TPL sbb dia cepat sangat booting image… Ada tip?
Tpl tu kena tekan enter sekali ke?
Thanks
Salam
Ada cara tak utk key in TPL tu… Cepat sangat x sempat.
Dia terus auto reboot….
Mcm keyboard x berfungsi atau ada masalah lain pun x tau.
[…] 参考: 使用 PL2303 HXD USB 轉 TTL 傳輸線,從序列埠登入到 Raspberry Pi B+ 用TTL线在CFE环境下拯救半砖wrt54g路由器 Recover bricked TL-MR3020 via serial console […]
When I try to type in tpl, nothing happens. It’s like it does not accepty any input. I tried on Windows like described above and with linux and gtkterm – no input possible. What can be wrong?
hi. i bricked my mr3020. very happy to find your post. i need to know can i not use 10k resistor? what is it function? i dont have now.
Yes You Can I have did it today with 10k resistor
Could you please explain why the 10k resistor is mandatory ? is there any way to do without it ?
Hi Friend, I bricked my MR3020 when I disconnected it from power supply when flashing to turning into a PirateBox, y follow all the steps listed but when I powered up while connected to putty it only show me rare characters. I don’t count with an adapter like yours, instead I used a CH340.
Is there anything more I can prove to make things done?
Thanks a lot in advance
stuck here…please help
[ 0.495893] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[ 0.505783] ar933x-uart: ttyATH0 at MMIO 0x18020000 (irq = 11, base_bau▒`@@“^uacvcg▒`▒▒▒▒▒▒▒@▒▒▒▒mucxuy▒“▒pp“p“p“p`]p▒`p“p“r“p`@zuyeveg▒@▒`@@`a^rmduyc▒@ppba▒z@x`bnq
do we need an ethernet cable for this process? because you mentioned we need to assign a static ip address in the step: ‘Setting up network IP address’ . So we need to assign it to ethernet interface after connecting the rj45 cable? (i’m on macbook air, I’ll need to get a ethernet to usb adapter too)
thanks!
I did the following to retrieve my mr3020.
Followed all the instructions as per the tutorial. But communication was not happending It was reading “T…T… timed out. Retrying..” etc. After lot of trials, I have sorted out as follows:
1. Uninstalled the VPN running in my laptop. Disabled the tunnel adapter under network settings.
2. I took the laptop in airplane mode.
3. Used “Mobaxterm” instead Putty. Mobaxterm is more user friendly,
4. Kept the ethernet cable connected with my laptop and router. Without this, bin file was not getting loaded.
5. Used USB UART adatper.
Once the above done, the bin was getting loaded etc., Router is working now.
My laptop runs on Win 10.