TP-Link Archer C2 AC750

Install OpenWrt (generic explanation)

The following procedure works only on the V1 model. Please, don't try this on any other revision. You can check which version your C2 is by looking at the bottom of it or, in the router's web interface, Status page, Hardware Version information, if you are using stock firmware.

As per the instructions in the git commit adding support for the Archer C2 AC750 v1, you need an OpenWrt image with integrated bootloader when flashing through TFTP (TP-Link pretty much always has the bootloader integrated in their firmwares). OpenWrt 19.07.1 can be flashed via TFTP using an unofficial recovery image provided here; however, if you are familiar with the command line and have access to a Linux box, it's recommended you build such an image yourself, as you'll be able to use the latest OpenWrt stable release. See instructions below.

The following instructions might break your router. Use only the provided recovery image if you don't understand what is going on.

Avoid renaming any arbitrary image to ArcherC2V1_tp_recovery.bin. Providing an image without proper bootloader to TFTP recovery bricks your router and needs flashing with a SPI programmer.

If you feel uncomfortable doing this, grab the prepped 19.07.1 image linked to above and skip this section.

The C2v1 TFTP recovery overwrites the uboot partition, hence it must be included in a recovery.bin An official stock TPLink firmware file has a 512 byte header, which needs to be stripped for TFTP. You need access to a Linux box for this procedure (Windows Subsystem for Linux ('WSL') might work as well). Instructions below are taken from the git commit that added support into OpenWrt.

1. Download a stock TP-Link Firmware file from the TP-Link homepage.

2. Extract u-boot from the binary file:

$ dd if=c2v1_stock_firmware.bin of=c2v1_uboot.bin bs=1 skip=512 count=131072

3. Now merge the OpenWrt sysupgrade image and the u-boot into one binary:

$ cat c2v1_uboot.bin openwrt-squashfs-sysupgrade.bin > ArcherC2V1_tp_recovery.bin

  • Set your computer's IP to a static address (subnet mask and default gateway to
  • To flash the recovery image, start a TFTP server from IP address and serve the recovery image named 'ArcherC2V1_tp_recovery.bin'.
  • Connect your device to the LAN port, then press the WPS/Reset button and power it up. Keep pressing the WPS/Reset button for 10 seconds
  • The device will try to download the recovery image and flash it. This might take up to 20-25 minutes to finish. When done, the router will reboot itself.
  • After reboot, you can access OpenWrt at From here on out, you can simply use sysupgrade with the vanilla OpenWrt images to upgrade.

Remember to allow access to your TFTP server program in firewall settings. (In case of Windows Firewall, it prompts you in first run.)

If you encounter timeouts, you might want to put a switch between your router and client to facilitate the flashing process. The tips below might not be needed after that.

A few users reported that flashing via TFTP server was only possible when the option “Use anticipation window of” with 1000 bytes was enabled in TFTPD32 for Windows. So, if your flashing process hang at some point, restart the process with this option enabled.

Also, you might have to lower your ethernet link to 10 Mbps Half Duplex in order to finish the process.

Similar instructions can be found as posted by OpenWrt forum member yoq here. Old recovery image can be downloaded here.

[    0.936462] spi spi0.0: force spi mode3
[    0.941229] m25p80 spi0.0: mx25l6405d (8192 Kbytes)
[    0.946265] 6 fixed-partitions partitions found on MTD device spi0.0
[    0.952808] Creating 6 MTD partitions on "spi0.0":
[    0.957723] 0x000000000000-0x000000020000 : "u-boot"
[    0.963720] 0x000000020000-0x0000007c0000 : "firmware"
[    0.972293] 2 tplink-fw partitions found on MTD device firmware
[    0.978345] Creating 2 MTD partitions on "firmware":
[    0.983480] 0x000000000000-0x00000017e689 : "kernel"
[    0.989452] 0x00000017e68c-0x0000007a0000 : "rootfs"
[    0.995363] mtd: device 3 (rootfs) set to be root filesystem
[    1.002731] 1 squashfs-split partitions found on MTD device rootfs
[    1.009063] 0x0000003ee000-0x0000007a0000 : "rootfs_data"
[    1.015544] 0x0000007c0000-0x0000007d0000 : "config"
[    1.021534] 0x0000007d0000-0x0000007e0000 : "rom"
[    1.027187] 0x0000007e0000-0x0000007f0000 : "romfile"
[    1.033262] 0x0000007f0000-0x000000800000 : "radio"

uboot tftp code shows...
  starting recovery...
  set serverip
  tftp 0x80060000 ArcherC2V1_tp_recovery.bin;erase tplink 0x00000 0x7c0000;cp.b 0x80060000 0x00000 0x7c0000

See the hardware details tab at the top of the page.

The case is a bit hard to open, start with the two screws. Then start prying the lid from the bottom of the case, starting at the side with the ethernet connectors, There are 11 notches all around keeping the lid in place. They come loose by pushing the bottom part of the case outward.

Serial port: TTL voltage, 115200 bps, 8N1.

At least one user has reported 3.3 V logic levels, not TTL (5 V) levels

The Serial connector is labeled 'J2', and is wired as follows:

  Ethernet side of PCB
     VCC  ... not used.
     GND  -------------- GND of Serial adapter
     RX   <-- input  <-- Tx of Serial adapter
     TX   --> output --> Rx of Serial adapter
  Led side of PCB

Where 'RX' connects to the output of your serial adapter, and TX, connects to the input of your serial adapter. You can verify this, by using a volt meter to check that 'TX' pin is at Vcc level, and the RX pin is at GND level.

The GND pin may be a bit hard to solder, i needed to scratch away some paint from the PCB to make a large enough connection.

On some versions you need to solder 2 bridges to get serial port working. You need good soldering experiences for that!

The bootloader of the stock firmware can be interrupted by pressing a digit from 1 .. 7, press '4' for the u-boot prompt.

From the serial console, you can login to the running linux of a stock firmware with: username 'admin' and password '1234'.

The C2 uses a external GBit switch, connected by MDIO bus. Network traffic to the CPU is passed through the internal switch of the MT7620A SoC:

             |  MT7620A CPU  |
|           MT7620A          |
|       embedded switch      |
  unused              5 (RGMII)
  5x FastEth PHY      |
                      6 (RGMII)
|         RTL8367RB          |
|    switch & 5x GBit PHY    |
  0     1     2     3     4
  |     |     |     |     |

Version: 1.1.3 (Dec 4 2013) Ralink UBoot Version

MT7620 # bdinfo
boot_params = 0x83F4FFB0
memstart    = 0x80000000
memsize     = 0x04000000
flashstart  = 0x00000000
flashsize   = 0x00800000
flashoffset = 0x00000000
ethaddr     = xx:xx:xx:xx:xx:xx
ip_addr     =
baudrate    = 115200 bps

Push '4' to enter UBoot

Color Name GPIO Polarity
Green LAN 1 Active low
Green USB 11 Active low

The following forum threads have been used to discuss the C2:

Thanks to everyone that contribute to make this possible.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2020/11/04 22:20
  • by albiej