EAP245 V3 CA version, Bad File when installing


I realised EAP245V3 image is now official, so I wanted to install it. I tried and identified I was getting the error that seems to come from the Canadian firmware of the access point.

I was following the steps in this post (now closed here ) and I have some issues running the python script. I do understand that the script might be un supported, but since I cannot revive the post, I would like to start a continuity to it.

Here is what I get when running python script

Traceback (most recent call last):
  File "C:\temp\openwrt\patch-safeloader.py", line 145, in <module>
    factory = SafeloaderFirmware.from_file(args.factory)
  File "C:\temp\openwrt\patch-safeloader.py", line 100, in from_file
    (fw_size,) = struct.unpack('>I', input_file.read(4))
AttributeError: 'NoneType' object has no attribute 'read'

and here is the command line

patch-safeloader.py --factory openwrt.bin --input EAP245v3_ca_5.0.5_[20220323-rel68784]_up_signed.bin --patch product-info --output factory-ca.bin



Is the pyhton script able to be executed by the user used?
Are all attributes of the python script correctly set? (read?)

Anyway, any problem with that script should be addressed to https://gist.github.com/svanheule
I think this is not OpenWrt related.


The only way I can reproduce this issue (args.factory being None), is by not providing the -f/--factory option for the script.

I've updated the script to require all arguments, maybe that will help with finding the issue.

I run the script on Win10. I am the administrator on my laptop, so I don't see why I would get read/write issue.

I can see why this is not considered Openwrt, as I mentioned in my post, but it still can be seen as an installation issue. Maybe a starting point generic install for Canadian firmware EAP245 could be made and then user could start updating the access point to the latest available versoin. My 2 cents, but I don't know the backscene work at the same time.


I went to GitHub and took the script. Now I get this

usage: patch-safeloader.py [-h] -f FACTORY -i INPUT -p PATCH -o OUTPUT
patch-safeloader.py: error: the following arguments are required: -f/--factory, -i/--input, -p/--patch, -o/--output

Still, this is the command I type

patch-safeloader.py -f openwrt.bin -i EAP245v3_ca.bin -p product-info -o factory-ca.bin

In the same folder, I have a file named openwrt.bin, which is the official install (not update) of OpenWRT for EAP245V3, EAP245v3_ca.bin which is the latest Canadian firmware from TPLink website and that is it. Is there something too obvious I missed in the execution?

Also, I have Python 3.10 installed.


The error message seems to suggest the script isn't getting any of the arguments passed on.

Do these threads help?

No comments...

Need to type py in front of the script. Looking at the posts, it seems like windows was able to run it when Python was installed.

Can we zap this post to keep my reputation intact. :slight_smile:

Thanks, got it to compile, will see later if it worked.

I tried to flash and now, instead of "Bad File", I get "Failed to check for new update".

I tried with the latest version of the script and the previous. Any idea?

Hello there. I have the same problem just now with the Canadian version as well. Did you ever get this figured out? I just keep getting "Bad File".



Hey, unfortunately not... Have not got any feedback since. At the time, I was looking at plan A: Openwrt across the board and plan B: TPLink Omada. I have gone Plan B since, and will probably leave Openwrt completely since my main router is in limbo for now (WRT3200 ACM).

A question that comes to my mind, have you got your EAP245 from an internet reseller? I did and realized at some point that the access point I had seemed to be a US one but only noticed it after I made firmware update to CAN firmware. Could be one of those limit case.

Any how, good luck