TP-Link Archer C7 with OpenWRT

I bought myself a TP-Link Archer C7 because the 2.4Ghz congestion in my apartment has become so terrible that my good old TP-Link WR1043ND (no 5Ghz radios) is no longer adequate, and the C7 was very well spoken of among reasonably-priced 802.11ac routers. It also has some nice perks like two on-board USB ports, so I can use it as a print server (with p910nd) and have USB storage for logs (vnstat & co.) and such attached without a separate hub. I wasn’t feeling quite motivated enough to buy and set up one of the NUC-like cheap SFF Intel boxes as a router like Ars Technica and Jeff Atwood have recently noted is an increasingly good plan, based largely on the dearth of ac WiFi cards that work reliably in host mode.

Some notes that may be of use to others, particularly about firmware replacement on recent models and throughput:

Flashing OpenWRT

As usual with routers, one of the first bits of business is replacing the untrustworthy vendor firmware with an reputable open-source offering like OpenWRT. The recent TP-Link firmwares refuse to load unsigned firmware as updates (Thanks FCC!), so you have to do the TFTP thing. Since I have to look up this ritual with the current Linux tools every goddamn time, a list of steps follows. I think I could do it right from memory on a vaguely-modern BSD, even though I don’t use them often, because they improve their core utils instead of periodically replacing them with uglier ones that implement a larger (but not proper super-) set of features.

The router expects a file named “ArcherC7v2_tp_recovery.bin” (Wiki says it may want other names depending on version details) via TFTP from (NOT .1.66 as some sources say) attached to LAN port 1, and will make its request from I know this in unnecessary detail because I had to go several rounds and break out Wireshark to make everything happy.

  • Grab a worthwhile TFTP server, I used tftp-hpa, which installs as in.tftpd on ArchLinux to avoid conflict with the near-worthless iputils tftpd binary.
  • Physically plug an Ethernet cable from your machine to LAN1 on the router.
  • Attach your host at the appropriate address ip addr add dev enp3s0f1
  • Make sure the interface is alive: ip link set dev enp3s0f1 up
  • Plop the file where your tftp server is looking, mv ~/Downloads/openwrt-15.05-ar71xx-generic-archer-c7-v2-squashfs-factory.bin /srv/tftp/ArcherC7v2_tp_recovery.bin or so.
  • Start the TFTP server: in.tftpd -L --address -s /srv/tftp/
  • Reboot the router while holding the WPS/Reset button.
  • Watch it do its thing for a while.
  • Disconnect and reconnect to get a lease in the 192.168.1.x range, find LUCI at

LAN/WAN Throughput

A note in the OpenWRT wiki and this thread suggest it will take a non-trivial LAN-WAN throughput hit when switching to OpenWRT, because the stock firmware has a customized 2.6.31 kernel that can do NAT/Fragment/Defragment/csum with hardware acceleration, and OpenWRT can not.

Because of this, I felt the need to make a rough test of throughput before and after rejecting their firmware and substituting my own. The test was performed using two laptops with gigabit NICs, one acting as the “WAN” by running dnsmasq leasing in the, and one on the LAN side, I forwarded the port 5001 to the client (leased, ran an iperf server there, then hit the router with iperf from the “WAN” to get a shitty quick estimate. This guarantees it had to actually manipulate the packets, but is only a single connection.

So, TP-Link Archer C7, LAN-WAN throughput, through forwarded port:

Stock firmware, as shipped 2016-01

[pappp@Talaiot ~ $]iperf -s -B
Server listening on TCP port 5001
Binding to local address
TCP window size: 85.3 KByte (default)
[ 4] local port 5001 connected with port 50382
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 1.01 GBytes 869 Mbits/sec

OpenWrt Chaos Calmer 15.05 / LuCI (git-15.248.30277-3836b45)

[pappp@Talaiot ~ $]iperf -s -B
Server listening on TCP port 5001
Binding to local address
TCP window size: 85.3 KByte (default)
[ 4] local port 5001 connected with port 52068
[ ID] Interval Transfer Bandwidth
[ 4] 0.0-10.0 sec 593 MBytes 497 Mbits/sec

So yes, the OpenWRT Wiki’s note about going from 800-900Mbits/sec to around 500Mbits/sec is still consistent with reality, and still largely irrelevant because โ‰ฅ500Mbit uplinks are rare.


OpenWRT is still great, TP-Link still makes great hardware. While I was moving my configs (which in OpenWRT are just easily-parsed text files in /etc/config, not emulated NVRAM variables or other madness), I thought I found a deficiency in OpenWRT’s static lease handling, but then realized it was [silently] protecting me from my own stupidity – I forgot to open up the netmask to cover my static range.
The important thing is I can now do 5Ghz ac and get 20-30Mbit/sec wireless throughput in my apartment, instead of around 2Mbit/sec like on the 2.4Ghz band.

This entry was posted in Computers, Electronics, General, Objects. Bookmark the permalink.

14 Responses to TP-Link Archer C7 with OpenWRT

  1. AA says:

    I don’t normally leave comments, but this informed my decision to buy one. Thanks!

  2. jd says:

    this no longer works on my recent tp-link wdr4300 purchase. theyve beefed up file checking. im returning mine.

  3. Ariel says:

    Do you know if I can use this to replace a us firmware with a stock non-us firmware?

    • pappp says:

      Amazon is giving me a “You purchased this on….” banner on the link, so barring any undocumented changes in the supply line, yes.

  4. Bruce says:

    Thank you! I’ve heard OpenWRT is had stability problems on this model & was going to go for the WDR3600, but I think I may go for this after all.

  5. Heniro says:

    Thanks for the clear, comprehensive guide.

    I got the Archer C7 only a month ago (US version) and got stuck after TFTP-loading the OPENWRT image to it (openwrt-15.05.1-ar71xx-generic-archer-c7-v2-squashfs-factory.bin renamed to ArcherC7v2_tp_recovery.bin, as per your instructions).

    Probably the piece I got (later to the market than yours) has some embedded factory showstopper. Bad luck. I did manage to install DD-WRT on same router though.

    Any insights?

    • pappp says:

      Hm, no idea, I don’t think there are any official revisions since, and if DD will load you clearly don’t have anything that effectively prevents loading of third party firmware.

      Did it [appear to] actually download the file via tftp? They could have changed the automatically queried name or address again.

  6. Holger says:

    Thanks, that was really, really helpful. The router took some time to process the file so I thought I’d had bricked it. But after a minute or so I could log into the Archer C7.

    And thanks a lot for writing the hints in your blog instead of making a 20 minutes video as many people would do ๐Ÿ™‚

  7. ovrlndr says:

    US version 2 Archer C7, delivered Jan 2017 from
    OpenWRT install was blocked.
    Flashed to Gargoyle 1.91 – here’s how…

    1. Flash with DD-WRT 3rd party software. It’s a specific beta version, made to get around this US version issue:

    2. Flash again with a unique revert firmware made to take back to TP-Lilnk factory from DD-WRT. In this case, it take me back to FW version 3.13.34 Build 131217 Rel 60903n.
    Note: you need to create an account on to see the files.

    3. NOW, the Archer was able to flash to Gargoyle 1.9 using the factory bin.

    • Rob says:

      I have the TP-Link Archer C7 V2. My router already has version 3.13.34 Build 131217 Rel 60903n on it.

      My purpose for wanting to put different firmware on my router is that I want to be able to track data use per device (MAC/IP) to coincide with my ISP monthly billing cycle. TP-Link software won’t do it. My freaking kids are using too much data and of course they all deny it is them so I need to be able to make DHCP reservations for each device IP and then track down the culprit(s). ๐Ÿ˜‰

      Based on what I read, Gargoyle has the capability to track my data per device.


      1. It appears based on your comment I can simply flash Gargoyle 1.9 firmware using my existing TP-Link firmware version?

      2. Are you having any issues with radios/speeds with Gargoyle 1.9?


  8. Jim says:

    I have had the same result as Heniro. I purchased an Archer C7 just before Christmas, and it has the later serial number.

    I was initially able to get dd-wrt installed, but wanted openwrt. Per ovrlndr’s advice I went back to an earlier factory firmware version. An attempt to install openwrt 15.05.1 bricked the router. I was never able to recover with 15.05.1, but I was able to get Designated Driver installed.

    So, if you want bleeding edge that changes every day, you might try ‘snapshots’ if you’re having trouble with 15.05.1.

    • oldunixguy says:

      I was just getting ready to purchase a C7…. I have used OpenWrt for a long time and much prefer it to ddwrt. Can you offer a little more details about the C7 bricking with OpenWrt? For example, which C7 hardware version did you have? What method did you use that bricked it? Did you attempt any of the un-bricking methods? Did you ever get it un-bricked? leads us to believe that ver 1 and 2 should work but shows ? for the ver 3 and 4.

      I REALLY want to use this router and with OpenWrt so any insight would help me and the rest of OpenWrt followers.


Leave a Reply

Your email address will not be published. Required fields are marked *