TP-Link TL-WR940N(EU) v6.1 - is it supported?

I have used for years a good number of TP-Link TL-WR841N routers with OpenWRT and I've been very happy with them. Recently I bought a batch which turned out to be v13, which has a number of pending issues with OpenWRT - so I can't really use them at the moment.

I ordered a TL-WRN940N - seeing as it is supported by OpenWRT. As luck would have it, when it arrived, it turns out that it is v6.1. This is not even mentioned anywhere on the OpenWRT website, and I can't figure out if it is supported. I tried flashing it through the OEM interface with 18.06.1 and with a current snapshot - but I get:

"Error code: 18005
Upgrade unsuccessfully because the version of the upgraded file was incorrect. Please check the file name."

I've tried flashing it with TFTP as well, but nothing appears to be happening - at least it doesn't seem to be requesting any file from the tftp server on the computer. It is a bit hard to tell what is going on, as this router only has one multicolour LED on the front.

Has anybody encountered this router yet, and do you know if it is the same as v6, and if it is supported?

Many thanks for any info.

At least according to https://wikidevi.com/wiki/TP-LINK_TL-WR940N_v6.x it is a "4/32" device, and as such, is subject to the https://openwrt.org/supported_devices/432_warning and is not recommended for use.

If you can still return it, I'd suggest reading the thread on inexpensive devices and selecting one that has sufficient resources for current and future use. Suitable devices can be obtained for around US$20

I followed the very same path, WR-841N v13 was not working. However, things are better now and
last images (building from master branch) look as being almost there, So you could give them a try.

WR-940N v6 has been working perfectly since some three months for two of our members, but firmware is custom-build and got many things removed, see my diff file:

CONFIG_TARGET_ar71xx=y
CONFIG_TARGET_ar71xx_tiny=y
CONFIG_TARGET_ar71xx_tiny_DEVICE_tl-wr940n-v6=y
CONFIG_BUSYBOX_CUSTOM=y
CONFIG_BUSYBOX_CONFIG_ADDGROUP=y
CONFIG_BUSYBOX_CONFIG_ADDUSER=y
CONFIG_BUSYBOX_CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_ADDUSER_LONG_OPTIONS=y
CONFIG_BUSYBOX_CONFIG_FEATURE_ADDUSER_TO_GROUP=y
CONFIG_BUSYBOX_CONFIG_FEATURE_CHECK_NAMES=y
# CONFIG_BUSYBOX_CONFIG_FEATURE_IPV6 is not set
CONFIG_BUSYBOX_CONFIG_FIRST_SYSTEM_ID=0
CONFIG_BUSYBOX_CONFIG_LAST_ID=0
CONFIG_BUSYBOX_CONFIG_LAST_SYSTEM_ID=0
CONFIG_BUSYBOX_DEFAULT_PIE=y
CONFIG_CLEAN_IPKG=y
# CONFIG_FEED_luci is not set
#CONFIG_FEED_telephony is not set
CONFIG_IMAGEOPT=y
# CONFIG_IPV6 is not set
# CONFIG_KERNEL_CRASHLOG is not set
# CONFIG_KERNEL_DEBUG_FS is not set
# CONFIG_KERNEL_DEBUG_INFO is not set
# CONFIG_KERNEL_DEBUG_KERNEL is not set
# CONFIG_KERNEL_ELF_CORE is not set
# CONFIG_KERNEL_IPV6 is not set
# CONFIG_KERNEL_MAGIC_SYSRQ is not set
# CONFIG_KERNEL_SWAP is not set
# CONFIG_PACKAGE_MAC80211_DEBUGFS is not set
# CONFIG_PACKAGE_MAC80211_MESH is not set
CONFIG_PACKAGE_iptables-mod-conntrack-extra=y
CONFIG_PACKAGE_iptables-mod-ipopt=y
CONFIG_PACKAGE_kmod-ifb=y
CONFIG_PACKAGE_kmod-ipt-conntrack-extra=y
CONFIG_PACKAGE_kmod-ipt-ipopt=y
# CONFIG_PACKAGE_kmod-nf-ipt6 is not set
CONFIG_PACKAGE_kmod-nls-base=y
CONFIG_PACKAGE_kmod-nls-utf8=y
# CONFIG_PACKAGE_kmod-ppp is not set
CONFIG_PACKAGE_kmod-sched-cake=y
CONFIG_PACKAGE_kmod-sched-core=y
# CONFIG_PACKAGE_libip6tc is not set
CONFIG_PACKAGE_libnetsnmp=y
# CONFIG_PACKAGE_odhcpd-ipv6only is not set
# CONFIG_PACKAGE_openwrt-keyring is not set
# CONFIG_PACKAGE_opkg is not set
# CONFIG_PACKAGE_ppp is not set
CONFIG_PACKAGE_snmpd=y
CONFIG_PACKAGE_sqm-scripts=y
CONFIG_PACKAGE_sqm-scripts-extra=y
CONFIG_PACKAGE_sudo=y
CONFIG_PACKAGE_tc=y
# CONFIG_PACKAGE_uboot-envtools is not set
# CONFIG_PACKAGE_uclient-fetch is not set
# CONFIG_PACKAGE_usign is not set
CONFIG_PKG_ASLR_PIE=y
# CONFIG_POSTFIX_CDB is not set
# CONFIG_POSTFIX_LDAP is not set
# CONFIG_POSTFIX_PCRE is not set
# CONFIG_POSTFIX_SASL is not set
# CONFIG_POSTFIX_SQLITE is not set
# CONFIG_POSTFIX_TLS is not set
# CONFIG_SIGNED_PACKAGES is not set
CONFIG_STRIP_KERNEL_EXPORTS=y
CONFIG_USE_MKLIBS=y
# CONFIG_BUSYBOX_CONFIG_PIE is not set
CONFIG_PACKAGE_kmod-lib-crc-ccitt=y
CONFIG_PACKAGE_libpthread=y
CONFIG_PACKAGE_libuclient=y

Hope this helps

Thank you very much for the tips tatel. Is there a ready built firmware somewhere to download for the WR-940N with the config you mention - or does it have to be built from scratch?

Development snapshots come without luci, and this alone saves quite a bit of weight.
You could see how much the snapshot for WR940 weights, if less than 4 MB I guess it will be fine.

If not, you'll need to build it from scratch.

Also, development snapshots for WR841 are reported to be working much better than before.

Best wishes

Thank you. I never really use luci anyway, so that's good. I'll take a look at those snapshots and see if I can get it working.

I have to install the OpenWRT firmware over tftp, as the OEM interface doesn't accept the OpenWRT image file (because of the error message I enclosed in my first post at the top of this thread). However, I've struggled with the standard instructions, as the router doesn't seem to be looking for 192.168.0.66. Do you happen to know if WR-940N v6.1 still looks for the tftp server at 192.168.0.66 by any chance?

I think that original TP-LINK firmware installed in your device is checking firmware update version number, I have got bitten by that sometimes maybe two years ago... It was a matter of simply changing the naming of openwrt image to something following TP-LINK naming convention.,

This is surprising since my WR940's (three) loaded openwrt image fine; in fact, my tftp directory still doesn't have any wr940 image. So all I can say is I don't know if tftp is working on this router, but I think it should work.

Of course I guess you double checked connections between router and computer?

Using wireshark or tcpdump should let you see the ARP packets from the boot loader to help confirm what address it is looking for. Once you're on that address with a TFTP server running,if the TFTP server's logs/diagnostics don't show the filename requested, wireshark/tcpdump will let you "see" the request made.

And you could watch syslog messages by issuing as root

tail -f /var/log/syslog

after starting tftp server and before resetting the router. You should see something like "Sent image $IMAGE_NAME to 192,168.0.2", then you can release "reset" button

Thank you for those suggestions. The main stumbling block so far seems to be that I can't place the router in recovery mode. This version only has one small circular LED on the top towards the front, which seems to have multicolour blue/orange capabilities. I've tried starting the router with the RESET button down and waiting until it starts flashing slowly, then releasing it. I've tried the same with the Wi-Fi/WPS button. The router seems to always go through the same light sequence during boot, regardless of which buttons I press or hold:

  1. blue - less than 1 second.
  2. orange - 12 seconds.
  3. pause - 3 seconds
  4. orange - 5 seconds
  5. orange flashing slowing - 7 times
  6. pause - 2 seconds
  7. orange flashing - 1 time
  8. orange steady.

I am guessing either this router doesn't have a recovery mode, or there must be a different way of getting into it.

Sorry, not at home for some days so I can't check my last WR940. So I'm just guessing.

Two suggestions:

  1. try to load image by using tp-link gui way, if you have installed say tplink-firmware.v10 rename snapshot to tplink-firmware.v11, this worked for me when bited by that "feature" Note that I didn't have that problem on this router, as said on previous post, so YMMV, do at your own risk.

  2. When doing tftp recovery y usually do (using GNU/Linux):
    a) stop network-manager
    b) stop firewall (if there is any)
    c) set ip on pc to 192.168.0.66/24
    d) router connected to pc by cable from an orange port, not the blue one
    e) tail -f /var/log/syslog
    f) Start router with reset button pressed
    g) Wait until syslog shows "Sent blah blah blah to 192.168.0.2", then release reset button
    h) Wait until router restarts

If it doesn't work, I wonder what could be the reason.

Thank you for the detailed instructions. That is exactly how I tried to upgrade the firmware, and I tried it again. I checked that the tftpd server is listening on all interfaces - both IPv4 and IPv6. I've stopped the firewall. I started tftpd with the -vvv extra verbose command line option, and in foreground to see any messages. I started the router with the reset button pressed - and held it in for over a minute, long after the LED went steady and stayed like that. There is no sign of activity, either on the command line, or in the syslog on the computer.

I have installed OpenWRT on probably 30 routers over the years. I hope it isn't something silly I am doing.

I am inclined to think that the problem is with this new v6.1 version somehow. Based on what the LED is doing, I don't think the router is ever entering recovery mode. I think TP-Link have changed something with this version.

I've also tried to upgrade through the OEM interface - but no matter what name I give to the file, it is still rejected. I think this is the other problem, already flagged in some other threads, where the router expects a signed firmware - and the standard OpenWRT image is not accepted because of that.

Hi, back at home, Now I can see my last WR940N is v6.0, not 6.1

So I think it could be said that v6.1 is not supported

Sorry, man

Thank you for double-checking. I guess there is a chance 6.1 is supported, only if someone can figure out how to put it in recovery mode (assuming it has recovery mode). I failed to figure it out so far. Thank you again for all the suggestions.

Since I'm trying to build for this router as small as posible a image, I checked TP-Link site.

They don't list any 6.x version, just 6. Last firmware update is https://static.tp-link.com/2018/201802/20180228/TL-WR940N(EU)_V6_180119.zip

It contains wr940nv6_eu_3_19_1_up_boot(180119).bin

Perhaps you could name your fimware exactly the same and try to load it via TP-Link WebGUI?

see also:

may be it helps

HI, I have tplink tl-wr940n(eu) v6.1 too and curious that you say v6.1 cannot put it in recovery mode.
I try using Tftpd64, set lan to 192.168.0.66, power off the router, hold the reset button and press power button and then relese reset buton about 3 second after power on.
After a few second the Tftpd64 log show that the router request file name "wr940nv6_tp_recovery.bin" :slightly_smiling_face:

That suggests the OEM bootloader rejects the factory image, probably because of different hw IDs in its header or different region codes.