Support for Cudy WR3000

I've had three opses during last 24 hours. None of them led to crash, however i had two reboots yesterday prior to that.

I am running this router inside a fairly loaded network, with real traffic between 200-600 Mbps being routed between interfaces and cpu load up to 60%. The oopses/crashes seem not to be directly related to load though.

I have rebooted the router and will be watching it further.

I've had several wireless slowdowns/reboots but no system crashes. I just updated to RC3 hopefully it helps. So my question to the group - has anyone successfully installed WireGuard? I tried following a guide and it crashed, killing my internet connection and requiring a new firmware flash. Anyone have luck installing a VPN? if so, which guide did you follow and which binaries were installed? Thanks

The problem seems to go away after disabling offloads in the driver:

ethtool -K eth0 tso off gso off gro off rx off tx off txvlan off hw-tc-offload off

This seems to be a general filogic based issue rather than specific to this board, the above workaround has been found in another thread about another filogic based device.

Mmm, slowdowns is indeed something that i noticed now and then. It solves itself after a while, but maybe something to try.



Is that command one time change until reboot? Or fixed?

One time until reboot.

I have on these wifi routers and I found the files at:

I have read this thread but do not know what the current status is. What do I do with the files at the link? I am a long time OpenWRT user so I would expect to use the file


if the Cudy software is installed and if I already had a recent version of OpenWRT installed, I would use


I don't see any docs and this thread is not that clear on what the current status is.

Help appreciated.

you first flash intermediary firmware from Cudy web page:

and then you go with sysupgrade from there as usual.

Status is, it works.

1 Like

I have two WR3000 units about 2 weeks old. Both have been flashed to OpenWRT.

The first one went without problem and works well.

The second one appeared to go well, but couldn't initialise the wifi. After much investigation I found that the firmware was not being read, and adding the file


to /lib/firmware/mediatek/ made it work. This file can be found in the OpenWRT intermediate flash file, as well as Mediatek firmware repositories.

All this lead me to believe that the mtd factory partition was not healthy. I have done a number of tftpd recoveries in an attempt to regenerate the partition, but nothing changed (tftpd works fine).
I have used hexdump to compare the factory partition of the good unit, the bad unit and the firmware file. The good unit and the firmware file are very, very similar. The bad unit is clearly garbage.

So, I know why it's not loading from the partition.

Where to from here? Can I get the unit to regenerate the partion? Should I copy (mtd write) the good unit onto the bad unit or, is there calibration data to consider?

Before all that I recommend reverse back to OEM OpenWrt or OEM 1.16.2 firmware and confirm that everything works there.
There is no point for fixing if not broken there.
Also no need to flash firmware partition from working unit where you might extract it to file mt7981_eeprom_mt7976_dbdc.bin and place it on bad unit /lib/firmware/mediatek/

Thanks for the reply.

Yes, OEM 1.16.2 and OEM OpenWRT both work. The OEM OpenWRT only works because the file mt7981_eeprom_mt7976_dbdc.bin is present (log file). Can't see if this is in the OEM 1.16.2, because ssh is blocked & I didn't check the log file.

Putting the good firmware into the file is good - and safe - idea to test it.

I have noted that when OEM 1.16.2 first boots, it seems to do radio calibration (log file)? I am guessing that this goes into the factory mtd? Hence the motivation to get factory mtd into a sane state.

I'm having trouble with my Cudy WR3000 running OpenWrt. I am running out of disk space. I was wondering If I might have to many packages installed or not needed packages as I am only running the Cudy WR3000 as an AP. Pleaes let me know, Thanks.

I can't post the other pages I have right now of all of my packages (143) I'm rate limited.

How many packages did you installed?

Please use OpenWrt Firmware Selector and build one You like. It will save some storage.
For AP operation clean 23.05.0 is sufficient. You might add bridger and WO firmware mentioned here to enable WED

So I made a mistake on my first installation it seems. I was running on a fork I believe from Cudy so I did a SSH and flashed correct sysupgrade this time and now i have the disk space available. Anyway all my configurations got reset. I was going to ask now if there is a configuration settings save you can do on OpenWRT? Also I'm trying to remember some of my other settings but one of them is with Encryption for my wireless. I have to it set to mixed WPA2/WPA3 PSK, SAE (CCMP). I believe I had before new flash sysupgrade set to just WPA3. Does this mixed Encryption help with older devices that don't use WPA3 possibly?

The Cudy firmware does not support channels 120, 124 and 128 which seems to indicate they are using very old information (US). Can anyone using OpenWRT confirm that those channels work and are you able to use channel 100 with 160 MHz channel width?

I'm just trying to write a review before I move to OpenWRT on this device.

mt7981_eeprom_mt7976_dbdc.bin should get extracted from the factory flash partition and copied to /lib/firmware/mediatek/ automatically at boot time.

That's wrong statement. mt76 use mtd5: 00f10000 00010000 "firmware" partition on boot and fall back to /lib/firmware/mediatek/mt7981_eeprom_mt7976_dbdc.bin only if there is something wrong with partition. You need to add this file manually ofc

1 Like

Hi. I made myself a little script to update my fleet of WR3000. So maybe this is helpful for someone:

download_filename=$(basename $firmware_download_location)

if [ ! -z "$1" ]
    echo "Argument given, using ${1} for router_ip"

echo Downloading $download_filename from $firmware_download_location
curl "${firmware_download_location}" --output $download_location/$download_filename

echo Extract $firmware_filename to $download_location
tar -zxvf $download_location/$download_filename --directory $download_location $firmware_filename 

echo "scp $download_location/$firmware_filename ${ssh_connect}:${firmware_destination}"
scp $download_location/$firmware_filename ${ssh_connect}:${firmware_destination}

echo Add "options mt7915e wed_enable=Y" to /etc/modules.conf on $router_ip
ssh ${ssh_connect} 'if ! $(grep -xq "options mt7915e wed_enable=Y" /etc/modules.conf); then echo "options mt7915e wed_enable=Y" >> /etc/modules.conf;else echo "nothing to do"; fi'
ssh ${ssh_connect} 'reboot'
echo "finished"

Also after adding

/lib/firmware/mediatek/mt7981_wo.bin >> /etc/sysupgrade.conf

It will survive firmware upgrade