TP-Link MR200 v4 custom firmware

I've just bought a new tp-link archer MR200 V4 the only problem it has is that it's from an ISP so it runs a custom firmware. I've seen several posts from other users in this subforum but most of them without a reliable solution (remember that mine is V4 not V1).

I know a guy compiled a version for my router (https://github.com/Lochnair/openwrt/tree/mr200v4) by @Lochnair but i cant use it because my router uses a custom bootloader (Orange/Amena España) and i cant extract it. So my only solution for now is a dump, I've found one for the v1 version in this forum but the link is down TP-Link MR200 firmware update - #79 by jmpcarceles

Does anyone know a work around or have a copy of the dump from @jmpcarceles router?

I think that user @gurangax can help me out because it was the most active user in other posts about this same router.

Thank you all <3

custom bootloader or firmware ?

Im running a custom firmware from my ISP but i want the official TPLink firmware. The problem is that as far as i know i'll need the custom bootloader that my ISP uses to be able to switch to the normal firmware.

The boot loader usually don't do any "syntax" checks on the FW you're trying to UL/flash.
Hence the common recommendation to flash using TFTP.

If you've already tried TFTP, the next step would be to attach a serial cable to the unit.

According to Adding OpenWrt support for TP-Link Archer MR200 V4? TFTP could work.

get the bootloader from your ISP update firmware file. download the full firmware and extract the bootloader the same way as you would with the official TP-Link firmware. If you have problem extracting it, just send the link to download and i will help with the extraction.

I probably should make a gui program in windows that would be able to extract the bootloader, router firmware, and modem firmware from this TP-Link model. There are many wanting help regarding bootloader extractions.

Just out of curiosity, what then ?

You extract the boot loader of the locked down fw, and replace the one in the official unlocked fw, to have the unit accept the image ?

or the other way around, insert unlocked boot loader into locked fw ?

I found out from past members results that using the official tp-link bootloader for amena/orange (probably others too) will cause problem for tftp. Their LAN would not come up from boot and so it wont be able to accept firmware upgrades from tftp. using the original bootloader from their ISP will fix it. I only have the official version of MR200V1 so I am only able to make this conclusion from other members results.

That's the main problem, the custom bootloader/firmware was designed by the ISP to block a lot of functions like TFTP so the only solution is to get a bootloader copy, add it to the openwrt image and directly flash the chip.

As I only need OpenWRT to be able to use the wireguard VPN that I need for work. I have ended up buying this router https://www.gl-inet.com/products/gl-mt300n-v2/ that comes with OpenWRT preinstaled so I dont need to worry about anything more. The only problem is that I have to carry 2 routers everywhere.

So, have you done it yet? Or is it still not working? Not sure what differences V4 has. Most probably some circuit redesign, and maybe a different modem.

Yes, 4G modem is different but i didn't check the mobo design. Im not willing to flash anything on it for now because I solved my problem and the ISP blocked TFTP so to do it I'd need to desold and reflash the chip and I can't do it for now.

just use bootloader from orange/amena depending on isp. it will work. If you want to flash using external programmer, you must make firmware dump of original first. the last 3 partition is important.

1 Like

Hi gurangax

Is it possible to get help with extract the bootloader and merge it with OpenWrt to the MR200 v4?

I have https://www.tp-link.com/se/support/download/archer-mr200/v4/#Firmware Archer MR200(EU)_V4_210201 installed.
TFTP is OK. The router is using 192.168.0.2 and is asking 192.168.0.225 about tp_recovery.bin.

Or have you finalized your Windows program? :wink:

Thanks in advance

Are you sure that you want to use MR200 V1 openwrt firmware on a MR200 V4 device? If you are willing to try and error let me know. I will make the windows program when I am free.

I tried the bin file from pepo73_ORANGE.zip in thread OpenWrt installation on MR200 flybox orange, but it didn´t worked. The good thing is that the tftp is still OK.

Output from the serial interface. It´s stops at [ 14.894853] random: crng init done

[03080D0B][03080D09][88890000][24254849][00242548]
DU Setting Cal Done


U-Boot 1.1.3 (Feb  1 2021 - 18:08:24)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000

cpuType 00000000.
cpuType 00000000.
gpiomode1 55154404.
gpiomode2 05550555.
######GPIO CTRL 0 for GPIO 0~31 OUTPUT tmp(0x00000030)#####
######GPIO CTRL 1 for GPIO 32~64 OUTPUT tmp(0x00000f80)#####
######GPIO CTRL 1 for GPIO 32~64 INPUT tmp(0x00000f80)#####
flash manufacture id: ef, device id 40 17
find flash: W25Q64BV
RALINK_GPIOMODE_REG_1(0xb0000060) old=0x55154404 new=0x55154404
RALINK_GPIO_CTRL_32_63(0xb0000604) old=0xf80 new=0xf90
RALINK_GPIO_DATA_32_63(0xb0000624) old=0x6f1f new=0x6f0f
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Feb  1 2021  Time:18:08:24
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!..................................................
starting recovery...
TODO, Read MAC Address from Flash


 netboot_common, argc= 3

 NetTxPacket = 0x83FE4200

 KSEG1ADDR(NetTxPacket) = 0xA3FE4200

 NetLoop,call eth_halt !

 NetLoop,call eth_init !
Trying Eth0 (10/100-M)

 Waitting for RX_DMA_BUSY status Start... done


 ETH_STATE_ACTIVE!!
TFTP from server 192.168.0.225; our IP address is 192.168.0.2
Filename 'tp_recovery.bin'.

 TIMEOUT_COUNT=10,Load address: 0x80060000
Loading: checksum bad
checksum bad
Got ARP REPLY, set server/gtwy eth addr (00:0a:cd:13:46:06)
Got it
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ###############################################checksum bad
#########checksum bad
#########
         #################################################################
         #################################################################
         #checksum bad
################################################################
         #################################################################
         ########################
done
Bytes transferred = 5112072 (4e0108 hex)
NetBootFileXferSize= 004e0108

 Erase flash !!
From 0x20000 length 0x7A0000
..........................................................................................................................

 Copy 0x80080000 to 0x00020000, count 0x7A0000....
..........................................................................................................................

[03080D0B][03080D09][88890000][24244748][00242447]
DU Setting Cal Done


U-Boot 1.1.3 (Feb  1 2021 - 18:08:24)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000
******************************
Software System Reset Occurred
******************************

cpuType 00000000.
cpuType 00000000.
gpiomode1 55154404.
gpiomode2 05550555.
######GPIO CTRL 0 for GPIO 0~31 OUTPUT tmp(0x00000030)#####
######GPIO CTRL 1 for GPIO 32~64 OUTPUT tmp(0x00000f80)#####
######GPIO CTRL 1 for GPIO 32~64 INPUT tmp(0x00000f80)#####
flash manufacture id: ef, device id 40 17
find flash: W25Q64BV
RALINK_GPIOMODE_REG_1(0xb0000060) old=0x55154404 new=0x55154404
RALINK_GPIO_CTRL_32_63(0xb0000604) old=0xf80 new=0xf90
RALINK_GPIO_DATA_32_63(0xb0000624) old=0x6f5f new=0x6f4f
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Feb  1 2021  Time:18:08:24
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!
continue to starting system.                                                                                     0
disable switch phyport...

3: System Boot system code via Flash.(0xbc020000)
do_bootm:argc=2, addr=0xbc020000
## Booting image at bc020000 ...
   Uncompressing Kernel Image ... OK
No initrd
## Transferring control to Linux (at address 80000000) ...
## Giving linux memsize in MB, 64

Starting kernel ...

[    0.000000] Linux version 4.14.241 (builder@buildhost) (gcc version 7.5.0 (OpenWrt GCC 7.5.0 r11364-ef56c85848)) #0 Thu Jul 29 19:50:28 2021
[    0.000000] Board has DDR2
[    0.000000] Analog PMU set to hw control
[    0.000000] Digital PMU set to hw control
[    0.000000] SoC Type: MediaTek MT7628AN ver:1 eco:2
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019655 (MIPS 24KEc)
[    0.000000] MIPS: machine is TP-Link Archer MR200
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 04000000 @ 00000000 (usable)
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
[    0.000000] Primary data cache 32kB, 4-way, PIPT, no aliases, linesize 32 bytes
[    0.000000] Zone ranges:
[    0.000000]   Normal   [mem 0x0000000000000000-0x0000000003ffffff]
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000003ffffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000003ffffff]
[    0.000000] random: get_random_bytes called from 0x80485740 with crng_init=0
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 16256
[    0.000000] Kernel command line: console=ttyS0,115200 rootfstype=squashfs,jffs2
[    0.000000] PID hash table entries: 256 (order: -2, 1024 bytes)
[    0.000000] Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
[    0.000000] Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
[    0.000000] Writing ErrCtl register=0003af70
[    0.000000] Readback ErrCtl register=0003af70
[    0.000000] Memory: 58804K/65536K available (3930K kernel code, 185K rwdata, 504K rodata, 1196K init, 215K bss, 6732K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1
[    0.000000] NR_IRQS: 256
[    0.000000] CPU Clock: 580MHz
[    0.000000] clocksource: systick: mask: 0xffff max_cycles: 0xffff, max_idle_ns: 583261500 ns
[    0.000000] systick: enable autosleep mode
[    0.000000] systick: running - mult: 214748, shift: 32
[    0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 6590553264 ns
[    0.000010] sched_clock: 32 bits at 290MHz, resolution 3ns, wraps every 7405115902ns
[    0.007524] Calibrating delay loop...
[   14.803351] random: fast init done
[   14.894853] random: crng init done

I will try to get a working firmware for you

1 Like

BTW, are you using the official TP-Link MR200V4 or is it for some particular ISP? From you serial log, it's clearly known why it didn't work. MR200V1 is using MT7620 while your MR200V4 is MT7628. So the version does matters.

Also your version of bootloader (MT7628) does not replace the current bootloader compared to previous versions of MR200, so that explains why TFTP still works.

I read the topic here Adding OpenWrt support for TP-Link Archer MR200 V4? and found out that there was a problem with starting the android modem. So unless there is a 100% working openwrt firmware for your modem, I don't think this will work for you. In any case, you should be able to revert back to the original firmware by TFTP still.

Hi
I´m not using any ISP specific firmware. I used Archer MR200(EU)_V4_210201.
When I try to re-install that firmware it fails. But, I think I need to find a TP-Link forum and ask for help.

So you don´t think it´s possible to get an OpenWrt firmware to MR200 v4?

[03080D0B][03080D09][88890000][24254849][00242548]
DU Setting Cal Done


U-Boot 1.1.3 (Feb  1 2021 - 18:08:24)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000

cpuType 00000000.
cpuType 00000000.
gpiomode1 55154404.
gpiomode2 05550555.
######GPIO CTRL 0 for GPIO 0~31 OUTPUT tmp(0x00000030)#####
######GPIO CTRL 1 for GPIO 32~64 OUTPUT tmp(0x00000f80)#####
######GPIO CTRL 1 for GPIO 32~64 INPUT tmp(0x00000f80)#####
flash manufacture id: ef, device id 40 17
find flash: W25Q64BV
RALINK_GPIOMODE_REG_1(0xb0000060) old=0x55154404 new=0x55154404
RALINK_GPIO_CTRL_32_63(0xb0000604) old=0xf80 new=0xf90
RALINK_GPIO_DATA_32_63(0xb0000624) old=0x6f1f new=0x6f0f
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Feb  1 2021  Time:18:08:24
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!..................................................
starting recovery...
TODO, Read MAC Address from Flash


 netboot_common, argc= 3

 NetTxPacket = 0x83FE4200

 KSEG1ADDR(NetTxPacket) = 0xA3FE4200

 NetLoop,call eth_halt !

 NetLoop,call eth_init !
Trying Eth0 (10/100-M)

 Waitting for RX_DMA_BUSY status Start... done


 ETH_STATE_ACTIVE!!
TFTP from server 192.168.0.225; our IP address is 192.168.0.2
Filename 'tp_recovery.bin'.

 TIMEOUT_COUNT=10,Load address: 0x80060000
Loading: checksum bad
checksum bad
Got ARP REPLY, set server/gtwy eth addr (00:0a:cd:13:46:06)
Got it
#################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ##checksum bad
###########checksum bad
####################################################
         #################################################################
         ########checksum bad
#########################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############Got ARP REQUEST, return our IP
####################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         ######################################################
         32 MB reveived
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #################################################################
         #############################################################
done
Bytes transferred = 54831502 (344a98e hex)
NetBootFileXferSize= 0344a98e

 Erase flash !!
From 0x20000 length 0x7A0000
..........................................................................................................................

 Copy 0x80080000 to 0x00020000, count 0x7A0000....
..........................................................................................................................

[03080D0B][03080D09][88890000][24254849][00242548]
DU Setting Cal Done


U-Boot 1.1.3 (Feb  1 2021 - 18:08:24)

Board: Ralink APSoC DRAM:  64 MB
relocate_code Pointer at: 83fb4000
******************************
Software System Reset Occurred
******************************

cpuType 00000000.
cpuType 00000000.
gpiomode1 55154404.
gpiomode2 05550555.
######GPIO CTRL 0 for GPIO 0~31 OUTPUT tmp(0x00000030)#####
######GPIO CTRL 1 for GPIO 32~64 OUTPUT tmp(0x00000f80)#####
######GPIO CTRL 1 for GPIO 32~64 INPUT tmp(0x00000f80)#####
flash manufacture id: ef, device id 40 17
find flash: W25Q64BV
RALINK_GPIOMODE_REG_1(0xb0000060) old=0x55154404 new=0x55154404
RALINK_GPIO_CTRL_32_63(0xb0000604) old=0xf80 new=0xf90
RALINK_GPIO_DATA_32_63(0xb0000624) old=0x6f5f new=0x6f4f
============================================
Ralink UBoot Version: 4.3.0.0
--------------------------------------------
ASIC 7628_MP (Port5<->None)
DRAM component: 512 Mbits DDR, width 16
DRAM bus: 16 bit
Total memory: 64 MBytes
Flash component: SPI Flash
Date:Feb  1 2021  Time:18:08:24
============================================
icache: sets:512, ways:4, linesz:32 ,total:65536
dcache: sets:256, ways:4, linesz:32 ,total:32768

 ##### The CPU freq = 580 MHZ ####
 estimate memory size =64 Mbytes
RESET MT7628 PHY!!!!!!
continue to starting system.                                                                                                                      0
disable switch phyport...

3: System Boot system code via Flash.(0xbc020000)
do_bootm:argc=2, addr=0xbc020000
## Booting image at bc020000 ...
   Uncompressing Kernel Image ... LZMA ERROR 1 - must RESET board to recover

You need to create tp_recovery.bin file from tplink firmware. Cut first 0x200 bytes. Then cut everything after 0x7d0000 bytes. This will revert to tplink firmware.
An openwrt firmware for mr200v4 has been done before but its not complete. It will start but according to what I read the modem loading has problem. So I dont know if this is what you need.
There is another option of replacing the mini pci modem with a different model like me909s (i am using this) since it can be loaded directly in openwrt. Or you can wait until a developer comes with a fix.

1 Like

Can I get some help with the dd command for the file cutting? :wink:

The LTE modem is not a mPCI modem. The modem is soldered to the board.

I´m still interested to get an OpenWrt firmware to the MR200 v4. This is a spare router so I can do some testing.