Archer C7

I work from home full time and as such require multiple Internet connections to ensure high-availability in spite of consumer-grade uplinks. Most of the time, when my primary connection craps out, I switch wifi networks over to the router on the secondary connection and continue on with my life. Ideally, I’d like to use a single router or maybe even a mesh so my work terminal doesn’t even notice when one or the other connection drops as long as at least one is working. Being somewhat familiar with OpenWRT’s abilities from other projects, I figure setting up multi-wan routing on OpenWRT is the way to go. Reading through the mwan3 docs it appears that the ar71xx target is the way to go.

Poking around Amazon, I settled on the TP-LINK Archer C7. Reading through the Q&A, it looked like a crapshoot which version would show up, but I figured anything beyond V1 would work so I had a 75% chance of not having to return whatever I got. I was of course hoping for a V4, which TP-LINK ships with OpenWRT source, but a V2.0 showed up. Good enough. Now, to get OpenWRT running on the thing.

If you don’t care about the journey and just want the result, you can skip ahead to the path that works.

Things that Didn’t Work

I figured I would start with OpenWRT’s table of hardware.

table of hardware

According to the table, lede-17.01.4-ar71xx-generic-archer-c7-v2-squashfs-factory.bin is available to install OpenWRT from OEM.

upgrade firmware

It would have been super cool if that worked. Of course, if it were that straightforward, you wouldn’t be here reading this post.

Error code: 18005

Error code 18005

Upgrade unsuccessfully because the version of the upgraded file was incorrect.  Please check the file name.

That’s not the most useful error message in the world, but it does get the point across that it didn’t work. I read somewhere that TP-LINK’s OEM firmware doesn’t like long filenames for the upgrade procedure, so I tried renaming it to something shorter.

shorter name

Unfortunately, I got the same error. Apparently the long filename was not the problem. Looking at the OEM Firmware Upgrade tool, we can see that the router was running OEM firmware 3.15.1 Build 160719 Rel.57530n with hardware version Archer C7 V2 00000000. Looking on the TP-LINK download site, we find this fun disclosure:

3. The US firmware was specialized for FCC certification and can't be downgraded to other version, please click [here](http://www.tp-link.com/us/choose-your-location.html) for choosing your region and selecting the most suitable firmware version to upgrade.

Archer C7(US)_V2_160719

Conveniently, there’s also no versions older than 160719 available on the US download page, so I thought I’d have a little fun and try Archer C7_V2_150427 from the UK download page.

UK firmware

Of course that didn’t work either (same error). Who’d-a-thunk that TP-LINK actually prevented downgrade when they say they do?

I really didn’t want to have to flash dd-wrt in order to get over to OpenWRT, but alas it was more important to me to Get This Done than to enforce my opinion that the path to OpenWRT should not have to go through dd-wrt. As such, here’s…

The Path That Works

Download factory-to-ddwrt-US.bin from r28598 from dd-wrt. (While the r28598 US version worked on my router, some folks have reported the 18005 error when trying to flash this version, but had success with the unlocalized firmware from r35874.)

Download ArcherC7v2_webrevert.rar from this dd-wrt forum thread. You have to be logged in to the forum to see the download links.

Unrar ArcherC7v2_webrevert.rar so you’ve got ArcherC7v2_webrevert.bin.

Connect your computer to the router with an ethernet cable. There are multiple steps coming up that will not work over wifi.

Flash your C7v2 to dd-wrt using that firmware image.

flash

it works

Up until now, you’ve had your browser pointed at 192.168.0.1, the IP TP-LINK assigns the router by default. DD-WRT on the other hand, uses 192.168.1.1, so we now need to point our browser over there.

DD-WRT will force you to set an admin user and password. These don’t matter much since they’re only going exist long enough to flash the router back to OEM firmware.

set password

Now, from dd-wrt, flash the router with ArcherC7v2_webrevert.bin that you extracted earlier.

flash revert image

Flashing…

flashing

Rebooting…

rebooting

We’re back to TP-LINK OEM firmware, so point your browser back at 192.168.0.1, but now we’re running the relatively ancient 3.13.34 Build 131217 Rel.60903n which came out before all the firmware version signing nonsense was added. At this point, we can finally flash the router with lede-17.01.4-ar71xx-generic-archer-c7-v2-squashfs-factory.bin.

flashing lede

Flashing…

progress

Rebooting…

rebooting

Like dd-wrt, OpenWRT/LEDE use 192.168.1.1, so point your browser back over there.

lede login

Log into OpenWRT/LEDE and enable your wireless interfaces.

setup wifi

That’s it. From here, you can configure OpenWRT/LEDE however you like and go on your merry way.