Adding OpenWrt support for TP-Link EAP245

Thinks friend, it has worked! Just found out, it had something running like DHCP in the beginning, so i had issues with my network. Now it runs fine, thanks.
With your permission, and permission of j-d-r i'd like to give a little tutorial on my blog about this special device.

Fine by me. Always nice to have people document their endeavours to help others. :slight_smile:
Bonus points if you can find a way still to flash OpenWrt without opening up the device!

The default OpenWrt mode is to act like router, so that includes a DHCP server. Best to configure a new device with a direct link and static addresses.

Yeah, but now i'm quite happy!
Btw. does this device support meshing? Because having multiple SSIDs is quite disgustig. I got 3 of the EAP245v1 here.

I run my access points with the same SSID and use 802.11r and a wired backhaul. This works well for roaming, but it's not technically meshing (802.11s). I believe the selected ath10k-ct driver doesn't support 802.11s (correct me if I'm wrong).

Oh can you tell me how to do so?
I think it's quite OT but i'd be happy to know.
Is there any benefit about using meshing? I've found some meshing driver for the ath10k-ct.

I found a way to patch and use uclited -u to upgrade the EAP245v1 :partying_face:

You will need to upgrade to the latest FW v1.4.0 (or figure out how to apply this patch yourself).

First, follow my previous procedure right up to step 3.

Step 3: Patch uclited
Copy the uclited programme to your PC:
$ ssh admin@ "dd if=/usr/bin/uclited" > uclited

Then you apply the binary patch to uclited. If the checksums don't match for you, look at the details below to find the eight bytes you need to replace.

$ cp uclited uclited-patched
$ echo "000d2264: 24020000 00000000" | xxd -r - uclited-patched
$ sha256sum uclited*
b46a1c506b5364fcf891a8d41bd9278548e0a43df374423538a82f22d2d2ac3f  uclited
880ef6b090e75dfe1cb650e76c7b32bbd00b1530051a0e7ea8ae2da11971a94c  uclited-patched
Patch details

The original uclited debug mode upgrade calls a verification function after loading the factory image, but passes a bad pointer(?), causing it to crash. The patch below removes the call to this function, and instead just loads the desired return value into the v0 (return value) register.

$ xxd -g4 -l8 -s860772 uclited
000d2264: 0c1345e0 27a70018                      ..E.'...
$ xxd -g4 -l8 -s860772 uclited-patched 
000d2264: 24020000 00000000                      $.......

Finish this step by copying back the patched binary:

ssh admin@ "dd of=/tmp/uclited-patched" < uclited-patched

Step 4: Flash upgrade
Copy the firmware upgrade file to /tmp/upgrade.bin:

$ ssh admin@ "dd of=/tmp/upgrade.bin" < openwrt-...-squashsf-factory.bin

Flash by running uclited -u and reboot:

# ./uclited-patched -u

Begin Debug Mode Fireware Upgrade
Upgrade fireware size is 6061385 bytes
Upgrade fireware md5 checksum is correct!
Now upgrade fireware...

Firmware upgrade successfully! Please reboot manually.
# reboot

And that should (finally!) give you OpenWrt on your EAP245v1 (and EAP225v1/v2, most likely).


The question is if you actually need 802.11s support. It uses a wireles connection between the access points to transfer data between them, so this chews into your available bandwidth.

If you (can) have a wired connection to every AP, I would strongly suggest to just use the same SSID and password on all your APs. Your wireless devices will figure out that they need to switch to the one with the stronger signal by themselves. If you want smoother roaming, you can look into 802.11r (easily configured nowadays).

1 Like

This is great work!

Sorry, I've been off the last month studying for an exam this week. Once that's over, I intend on helping out a bit more with this :slight_smile:

Is there a way to get a new BSSID? Haha unfortunately i took the image from 1st AP, and flashed it to the 2nd AP. Didn't think about the MAC address stuff, now i got 2 APs having the same MAC lol.

Check out the partition lay-out in tplink-safeloader.c from my pull request (post #62). The "default-mac" partition contains the same mac address as written on the device, at an offset of 8 bytes. Take the mac address from your device's label and fill it in where the dots are.

$ xxd -s +0x30000 -l16 eap245v1.rom
00030000: 0000 0006 0000 0000 路路路路 路路路路 路路路路 ffff

Thank you so much, you have saved me heh. It was quite a funny behaviour, having 2 APs with same SSID.
I've solved it a minute before of your answer, searching for the MAC of the one AP and replacing it by the other. Thanks so much for gathering all these information for the community!!! They are really important.
I'll set up a little script in order to build the custom image, having a new mac.

Btw. did some one take a look on this here? Something which may work on OpenWRT as well?

Maybe you should open a topic in #general:network-and-wireless-configuration to discuss meshing on the QCA9880. People not interested in the EAP245 probably won't check this topic, but there's likely plenty of other users other with a QCA988x radio that have more knowledge on this topic.


I think the EAP245 is a big deal now with OpenWRT. A huge amount of functions, and it's quite cheap on eBay. For around 30$ you get a v1 one. Support beamforming and everything else, i think they are quite awesome now.

No worries. Good luck with the exam if your still need to take it, hope it went well otherwise :slight_smile:

I think I've got the patches mostly ironed out by now. Could you maybe still check what the EAP245v3 does when you hold down the reset button on power-up? If that brings up the built-in http server or tftp client, that means you can do solder-less debricking. That would be something (a good thing) I could put into the commit message.


Is there a way to upgrade/update a system, running this image?
Or is it even necessary?

You mean OpenWrt upgrade?

When a new version of OpenWrt comes out, you might want to upgrade, yes. However, as long as the device support isn't committed upstream, you/I/someone will have to maintain the patches out-of-tree and build images.

1 Like

Alright! What's missing on this device in order to be comitted to upstream?

A review, likely quite some polish on the patches, and patience.

1 Like

Thanks brother, but it's quite ot , but i'd like to share.
I have used your dd method, in order to get an EAP 120 running with OpenWRT. Read out the original firmware, took the sysupgrade and dd'ed using the same offsets, worked absolutely well!!