I found a way to patch and use uclited -u
to upgrade the EAP245v1
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@192.168.0.254 "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@192.168.0.254 "dd of=/tmp/uclited-patched" < uclited-patched
Step 4: Flash upgrade
Copy the firmware upgrade file to /tmp/upgrade.bin:
$ ssh admin@192.168.0.254 "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...
######################################################################
###########################
Done.
Firmware upgrade successfully! Please reboot manually.
# reboot
And that should (finally!) give you OpenWrt on your EAP245v1 (and EAP225v1/v2, most likely).