Support for D-Link COVR-P2500

Awesome! I've always considered to host a collection of manually-built images somewhere, but updating this with every new version would be quite a hassle... Amazing how much of this can be automated by building directly on github, and even including all the factory encryption, backwards-compatible sysupgrade and even automatic plc firmware extraction :sweat_smile: Thanks @jwmullally and @jokujossai!

I wonder if sysupgrade-openwrt1806 could be flashed automatically by adding the device model to SUPPORTED_DEVICES += and incrementing compat-version, but I guess the latter would also affect all devices already running the new ath79 firmware... Also there's probably not much demand for that case :wink:

For the moment, the only thing I'd be missing would be a way for downstream projects (e.g. gluon) to use this, but we might as well throw the same patches to the gluon build dir, since binary compatibility is not so much of an issue there.

In the long term, I wonder if subtargets like ath79-generic etc. could become feeds one day, so that device support could come from unofficial sources, without requiring review by core system maintainers for every single newly-added device, yet allowing users to easily build and customize their images using the official repos.

Great! After its been tested enough, I think it would be OK to update the OpenWrt techdata wiki page to point to those images (as they are actively maintained, are open source and have clean patches mostly ready for upstreaming), and create a proper device wiki page.

The best way of course would be getting all the patches slowly upstreamed, but I understand some of the tools are tricky to include.

The Github repo README.md (or Github issues) could contain a section listing out each patch with summary and links to the upstreaming efforts, or explanation of why it cant be upstreamed. It will be the first question new users have.

Yeah something like that would be nice. The Imagebuilder isn't too far off that, it just needs to include the kernel instead of all the firmware images, and provide some extra high-level commands/hooks for building external images (DTB, firmware etc). To not break external images, it would need to be a documented unchanging interface. It might also require duplicate definitions for the Network, LED and Wifi firmware scripts, which the external image would have to maintain.

Right now OpenWrt does benefit heavily from all the devices definitions being in a monorepo side-by-side, e.g. slowly extracting out common functionality that comes from shared SoC designs and reference boards, bulk DTS changes can all be done together instead of updating seperate repos, and its easy to keep all images up to date. Similar to Linux kernel modules.

Hi,
Firsrt, thanks for your job :ok_hand:
Just a rookie question, can I launch sysupgrade -n -F *sysupgrade-openwrt1806.bin from /tmp ?

Upgrade files must be placed in /tmp and you can launch sysupgrade from /tmp. More information: Upgrading OpenWrt firmware using CLI. Sysupgrade process closes active SSH connections so just wait long enough for upgrade to finish after running command.

Thanks ! It works :slight_smile:
Wifi unable !

I'm stuck on plc activation :

root@OpenWrt:~# /etc/init.d/plc setup
Downloading 'http://pmdap.dlink.com.tw/PMD/GetAgileFile?itemNumber=FIR1800225&fileName=COVRP2500A1_FW101b08_decrypted.bin&fileSize=1.5990457E7;1.5992229E7;65141.0;'
Failed to send request: Operation not permitted
Could not open COVRP2500A1_FW101b08_decrypted.bin, because No such file or directory
cp: can't stat 'squashfs-root/lib/plc/*': No such file or directory
rm: can't remove 'COVRP2500A1_FW101b08_decrypted.bin': No such file or directory
1) /etc/plc/COVRP2500*.pib
Select PibPath [1-1]:

I try to copy it on /lib/plc with no success

Try manually wgetting the dlink file.

I try, I copy it into /lib/plc with no success.
--> File is too big, I'll try on /tmp

Sorry for my english, I'm French :sweat_smile:

Yeah, but Failed to send request: indicates something else.

It seems to work but maybe missing something (thanks for your help)

root@OpenWrt:/lib/plc# unsquashfs /tmp/COVRP2500A1_FW101b08_decrypted.bin /lib/p
lc
Parallel unsquashfs: Using 1 processor
4 inodes (6 blocks) to write

[===================================================================\] 6/6 100%

created 4 files
created 3 directories
created 0 symlinks
created 0 devices
created 0 fifos
created 0 sockets
root@OpenWrt:/lib/plc# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/root                 4096      4096         0 100% /rom
tmpfs                    61696     15848     45848  26% /tmp
/dev/mtdblock9            9984       924      9060   9% /overlay
overlayfs:/overlay        9984       924      9060   9% /
tmpfs                      512         0       512   0% /dev
root@OpenWrt:/lib/plc# /etc/init.d/plc setup
Downloading 'http://pmdap.dlink.com.tw/PMD/GetAgileFile?itemNumber=FIR1800225&fileName=COVRP2500A1_FW101b08_decrypted.bin&fileSize=1.5990457E7;1.5992229E7;65141.0;'
Failed to send request: Operation not permitted
Parallel unsquashfs: Using 1 processor
4 inodes (6 blocks) to write

[===================================================================|] 6/6 100%

created 4 files
created 3 directories
created 0 symlinks
created 0 devices
created 0 fifos
created 0 sockets
1) /etc/plc/COVRP2500AVA1_PIB100EU_WM.pib
2) /etc/plc/COVRP2500AVA1_PIB100NA_WM.pib
3) /etc/plc/COVRP2500AVA1_PIB100SG_WM.pib
Select PibPath [1-3]: 1
NetworkPasswd (leave empty to use default plc_networkpwd):
Enable plc [0-1]: 1
Automatically add to br-lan bridge [0-1]: 1
root@OpenWrt:/lib/plc#
cd /tmp
FW="COVRP2500A1_FW101b08_decrypted.bin"
wget -O "$FW" "http://pmdap.dlink.com.tw/PMD/GetAgileFile?itemNumber=FIR1800225&fileName=COVRP2500A1_FW101b08_decrypted.bin&fileSize=1.5990457E7;1.5992229E7;65141.0;"

That's what the script is doing.

The wget error could indicate there's an issue with your network setup.

That's why I wanted you to manually do the wget.

1 Like

You're right :

root@OpenWrt:/tmp# wget -O test "http://pmdap.dlink.com.tw/PMD/GetAgileFile?item
Number=FIR1800225&fileName=COVRP2500A1_FW101b08_decrypted.bin&fileSize=1.5990457
E7;1.5992229E7;65141.0;"
Downloading 'http://pmdap.dlink.com.tw/PMD/GetAgileFile?itemNumber=FIR1800225&fileName=COVRP2500A1_FW101b08_decrypted.bin&fileSize=1.5990457E7;1.5992229E7;65141.0;'
Failed to send request: Operation not permitted
root@OpenWrt:/tmp#

I copy it from a raspberry to make it work

Solved. It was a gateway issue. Thanks

Hi, I create issues directly on Github to let this thread clean.

After 10 days tests, only PLC is issuing.
I replaced 2.2 firmware by 2.10 and no more issues.

I noticed lower speeds in download than upload but wifi is stable.

Thanks a lot for your job !! :slightly_smiling_face:

1 Like

Hi,

New release v22.03.0 : https://github.com/jokujossai/openwrt_covr_p2500/releases
Someone tried it ?
Update possible via openWRT ?

Haven't tested yet, but awesome to see this upgraded, thanks @jokujossai!

Also great to know that there is an append-loader-okli-uimage recipe that can be used, making append-file redundant.

Updating should be possible without issues, there was not much change since the last release (except for the updated ath10k firmware maybe).
The migration to DSA will probably be within one of next releases, this might require some more testing then.

1 Like

Hi thanks @jokujossai
Can you confirm that I can update using this form ?

Thanks in advance

Update done :+1:
Wifi is more stable :grin: Thanks @jokujossai

Finally I had time to debrick one of the two devices and test the new release.

Plc service was not working correctly and left bridge control script running on background after stopping service. Release v22.03.2-plcfix constains plc script fix and also adds /lib/upgrade/keep.d/plc file to preserve PLC firmware files on systemupgrade.

The readme has also been updated with plc setup example: https://github.com/jokujossai/openwrt_covr_p2500#setup-example

3 Likes

I am grateful for your efforts but that README is really confusing.

There's a very simple "OEM Web UI" section and after that a number of things some are marked with "not working" (so why is it there?) Are these necessary or are these optional? If optional maybe move them into an optional "RECOVERY.md" to be used only in case recovery is needed? Then under PLC there's an optional download step with "wget ???/QCA75XX-2.10.0.0032_modules_5-6_stripped.nvm" -- if it's optional why or why not would I want it and what are those question marks? Then we have "NOTE! plctool does not work with bridge" what does that mean? Is there functionality loss here? I mean, PLC in itself is not much useful if it can't talk to the other network ports.