OpenWrt 25.12.4 - Service Release

Hi,

The OpenWrt community is proud to announce the fourth service release of the OpenWrt 25.12 stable series.

Download firmware images using the OpenWrt Firmware Selector:

Download firmware images directly from our download servers:

Main changes between OpenWrt 25.12.3 and OpenWrt 25.12.4

Only the main changes are listed below. See the full changelog for details.

Security fixes

  • dnsmasq: backport six upstream CVE-fix patches to dnsmasq 2.91:
    • CVE-2026-2291: heap buffer overflow in DNS domain-name handling.
    • CVE-2026-4890 / CVE-2026-4891: DNSSEC crashes via crafted NSEC bitmaps / RRSIG packets.
    • CVE-2026-4892: buffer overflow on large DHCPv6 CLIDs (only with --dhcp-script).
    • CVE-2026-4893: broken EDNS Client Subnet validation.
    • CVE-2026-5172: buffer overflow in extract_addresses() on crafted resource records.
  • Linux kernel: CVE-2026-43284 ("Dirty Frag") β€” local privilege escalation via the IPsec ESP path. Only relevant on devices with kmod-ipsec / esp4/esp6 loaded. Fixed via the 6.12.87 kernel update.

Device support

New devices supported in 25.12.4:

  • ath79: MikroTik RouterBOARD 960PGS (hEX PoE / PowerBox Pro)
  • mediatek: filogic: Cudy WR3000E v1: add ubootmod variant
  • mediatek: filogic: Cudy WR3000H v1: add ubootmod variant
  • mediatek: filogic: Cudy WR3000P v1: add ubootmod variant
  • mediatek: filogic: Cudy WR3000S v1: add ubootmod variant

Device fixes:

  • ath79: Sitecom WLR-7100 (X7 AC1200): fix MAC address assignment, wire up 5 GHz WLAN LED, and move to the tiny target to free ~800 KiB of flash
  • ipq40xx: Pakedge WR-1: restore lost band label on the WLAN LEDs
  • mediatek: filogic: Cudy WR3000E/H/P/S v1 and WBR3000UAX v1 (ubootmod NAND builds): disable NMBM, which was mistakenly enabled and prevented the NAND from being used correctly
  • microchipsw: fix LAN8814 QSGMII soft reset

WiFi fixes and improvements

  • wifi-scripts: fix basic_rate mapping in the wpa_supplicant ucode generator
  • mac80211: update backports package to 6.18.26 (general stability improvements)

Core component updates

  • Linux kernel: update from 6.12.85 to 6.12.87
  • mac80211: update from 6.18.7 to 6.18.26

Upgrading to 25.12.4

Upgrading from 24.10 to 25.12 should be transparent on most devices, as most configuration data has either remained the same or will be translated correctly on first boot by the package init scripts.
For upgrades within the OpenWrt 25.12 stable series, Attended Sysupgrade is also supported, which allows preserving the installed packages.

  • Sysupgrade from 23.05 or earlier to 25.12 is not officially supported.

  • Cron log level was fixed in busybox. system.@system[0].cronloglevel should be set to 7 for normal logging. 7 is the default now. If this option is not set, the default is used and no manual action is needed. https://github.com/openwrt/openwrt/commit/fc0c518a88e68d3deef04bec73b33d35186d6546

  • Bananapi BPI-R4: Interface eth1 was renamed to sfp-lan or lan4, and interface eth2 was renamed to sfp-wan to match the labels. You have to upgrade without saving the configuration. https://github.com/openwrt/openwrt/commit/cd8dcfef378044a1687adfa3738f01f9a9622baf

  • TP-Link RE355 v1, RE450 v1 and RE450 v2: The partition layout and block size changed in this release to fix configuration loss on sysupgrade. Users upgrading from OpenWrt 25.12.0 or earlier must use sysupgrade -F to force the upgrade. The image must not exceed 5.875 MB (6016 KiB).

  • Meraki MX60: Direct sysupgrade to 25.12.4 is not possible without manual preparation β€” meraki_loadaddr must be changed before upgrading, as the default value is insufficient to boot OpenWrt 25.12+. See the device wiki page for instructions.

Known issues


Full release notes and upgrade instructions are available at
https://openwrt.org/releases/25.12/notes-25.12.4

In particular, make sure to read the known issues before upgrading:
https://openwrt.org/releases/25.12/notes-25.12.4#known_issues

For a detailed list of all changes, refer to
https://openwrt.org/releases/25.12/changelog-25.12.4

To download the 25.12.4 images, navigate to:
https://downloads.openwrt.org/releases/25.12.4/targets/
Use OpenWrt Firmware Selector to download:
https://firmware-selector.openwrt.org?version=25.12.4

As always, a big thank you goes to all our active package maintainers, testers, documenters and supporters.

Have fun!

The OpenWrt Community


To stay informed of new OpenWrt releases and security advisories, there
are new channels available:

22 Likes

The 25.12.4 build went about a smoothly as possible, all ASU client tests ran first try without issue.

If you encounter issues with ASU upgrades, please report them on the respective client threads:

9 Likes

OWUT worked perfectly on Linksys MR7350 from 25.12-SNAPSHOT with same kernel. i will upgrade the Gl-MT6000 over the weekend.

Dev's thanks for all the double time work with the releases. You are all appreciated.

5 Likes

Well, I could update one of my two Belkin RT3200s to 25.12.4 but now I get this message trying to update the second:

Build failed in  26s total =   0s in queue +  26s to build:
ASU server stderr =
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: wget: exited with error 8
ERROR: openwrt-keyring-2025.12.10~f0670054-r1: unexpected end of file
ERROR: wget: exited with error 8
ERROR: libnetfilter-cthelper0-1.0.0-r2: unexpected end of file
make[2]: *** [Makefile:254: package_install] Error 2
make[1]: *** [Makefile:193: _call_manifest] Error 2
make: *** [Makefile:369: manifest] Error 2

Traceback (most recent call last):
  File "/app/.venv/lib/python3.14/site-packages/rq/worker/base.py", line 1522, in perform_job
    return_value = job.perform()
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1342, in perform
    self._result = self._execute()
                   ~~~~~~~~~~~~~^^
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1402, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/app/asu/build.py", line 494, in build
    result = _build(build_request, job)
  File "/app/asu/build.py", line 302, in _build
    report_error(job, check_package_errors(job.meta["stderr"]))
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/asu/util.py", line 338, in report_error
    raise RuntimeError(msg)
RuntimeError: Impossible package selection

ERROR: Build failed with status 500 (--version-to 25.12.4 --device mediatek/mt7622:linksys_e8450-ubi:squashfs)
The above errors are often due to the upgrade server lagging behind the
build server, first suggestion is to wait a while and try again.

The ASU server has issues again?

1 Like

I am also getting errors when trying to upgrade with ASU.

1 Like

Not the ASU server, I think it's the downloads server. That's a 404 (or maybe a 500) from when apk runs wget to get a package from the downloads server.

1 Like

The weird part is that I can build the image for the other RT3200 just fine.

I managed to solve it by removing the htop package that was on the problematic RT3200 and now I could upgrade just fine.

1 Like

GL-MT6000 sysupgrade no issue, everything running great. Thanks devs!

2 Likes

And I'll bet if you apk add htop, it will work fine, too. I have not experienced any of these wget 8 errors myself, only seen them reported by ASU users, across all of the clients. If you dig through all the ASU client support threads and various github repo's issues, you'll find like 50 of them by now...

1 Like

Linksys EA8300 upgraded via owut and all good with the smooth upgrade process.

Thanks as always dev and community!

2 Likes

I'm also getting an error

Status:   Error: Impossible package selection
Progress:   0s total =   0s in queue +   0s in build

Build failed in   0s total =   0s in queue +   0s to build:
ASU server stderr =
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: wget: exited with error 8
ERROR: nftables-json-1.1.6-r1: unexpected end of file
make[2]: *** [Makefile:254: package_install] Error 1
make[1]: *** [Makefile:193: _call_manifest] Error 2
make: *** [Makefile:369: manifest] Error 2

Traceback (most recent call last):
  File "/app/.venv/lib/python3.14/site-packages/rq/worker/base.py", line 1522, in perform_job
    return_value = job.perform()
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1342, in perform
    self._result = self._execute()
                   ~~~~~~~~~~~~~^^
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1402, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/app/asu/build.py", line 494, in build
    result = _build(build_request, job)
  File "/app/asu/build.py", line 302, in _build
    report_error(job, check_package_errors(job.meta["stderr"]))
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/asu/util.py", line 338, in report_error
    raise RuntimeError(msg)
RuntimeError: Impossible package selection

ERROR: Build failed with status 500 (--version-to 25.12.4 --device mediatek/filogic:glinet_gl-mt6000:squashfs)
The above errors are often due to the upgrade server lagging behind the
build server, first suggestion is to wait a while and try again.

I also ran into the wget error 8 just now. As per the wget manual it indeed is a server error. Nothing to be done to that at client side.

However there's a bug report in ASU github, in which the reporter suggests not caching wget error 8 responses (unclear to me where it's actually cached) so that the client could try again right away.

Hi all, happy to confirm that Ansible community.openwrt is now testing with OpenWrt 25.12.4 and checks are green.

2 Likes

@efahl @aparcar
seeing the wget error as well for the mediathek/filogic target only.
firmware-selector.openwrt.org also reports the build error due to wget errors.

Looks like a few packages get the EoF error

  Version 25.12.4 r32933-4ccb782af7 (kernel 6.12.87)
Request hash:
  9922abbb223c7faf1f1e348c7dd8a63d28a1dead1261ffcfd495c3be935cb354
--
Status:   Error: Impossible package selection
Progress:   0s total =   0s in queue +   0s in build

Build failed in   0s total =   0s in queue +   0s to build:
ASU server stderr =
Generate local signing keys...
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
WARNING: can't open config file: /builder/shared-workdir/build/staging_dir/host/etc/ssl/openssl.cnf
read EC key
writing EC key
WARNING: opening /builder/packages/packages.adb: No such file or directory
Package list missing or not up-to-date, generating it.

Building package index...
ERROR: wget: exited with error 8
ERROR: uhttpd-mod-ubus-2025.10.03~ebb92e6b-r1: unexpected end of file
ERROR: wget: exited with error 8
ERROR: tc-tiny-6.18.0-r2: unexpected end of file
make[2]: *** [Makefile:254: package_install] Error 2
make[1]: *** [Makefile:193: _call_manifest] Error 2
make: *** [Makefile:369: manifest] Error 2

Traceback (most recent call last):
  File "/app/.venv/lib/python3.14/site-packages/rq/worker/base.py", line 1522, in perform_job
    return_value = job.perform()
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1342, in perform
    self._result = self._execute()
                   ~~~~~~~~~~~~~^^
  File "/app/.venv/lib/python3.14/site-packages/rq/job.py", line 1402, in _execute
    result = self.func(*self.args, **self.kwargs)
  File "/app/asu/build.py", line 494, in build
    result = _build(build_request, job)
  File "/app/asu/build.py", line 302, in _build
    report_error(job, check_package_errors(job.meta["stderr"]))
    ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/asu/util.py", line 338, in report_error
    raise RuntimeError(msg)
RuntimeError: Impossible package selection

ERROR: Build failed with status 500 (--version-to 25.12.4 --device ramips/mt7621:asus_rt-ax53u:squashfs)
The above errors are often due to the upgrade server lagging behind the
build server, first suggestion is to wait a while and try again. ```

Interesting, I added wget-ssl and then the build was successful

owut upgrade -v -a wget-ssl


luci-theme-bootstrap         26.129.30102~e7fd22b           26.133.20346~e9ebca7
  wget-ssl                     not-installed                  1.25.0-r2
88 packages are out-of-date

Default package analysis:
  Default                      Provided-by
  nftables                     nftables-json

There are currently package build failures for 25.12.4 mipsel_24kc:
  Feed: packages
    6 unshown
  Feed: telephony
    2 unshown
  Feed: video
    10 unshown
18 package build failures don't affect this device, details at
  https://downloads.openwrt.org/releases/faillogs-25.12/mipsel_24kc/

Request:
  Version 25.12.4 r32933-4ccb782af7 (kernel 6.12.87)
Request hash:
  1237f995fb39b850eb59094696153c44cf4605db52196d0a158d6ced9fbd80a1
--
Status:   queued - 0 ahead of you
Progress:   0s total =   0s in queue +   0s in build
--
Status:   init
Progress:   1s total =   0s in queue +   1s in build
--
Status:   validate_manifest
Progress:  18s total =   0s in queue +  18s in build
--
Status:   building_image
Progress:  44s total =   0s in queue +  44s in build
--
Status:   done
Progress:  47s total =   0s in queue +  47s in build

Build succeeded in  47s total =   0s in queue +  47s to build:
  version_number = 25.12.4
  version_code   = r32933-4ccb782af7 (requested r32933-4ccb782af7)
  kernel_version = 6.12.87
  rootfs_size_mb = default
  init-script    = no-init-script

Image source: https://sysupgrade.openwrt.org/store/1237f995fb39b850eb59094696153c44cf4605db52196d0a158d6ced9fbd80a1/openwrt-25.12.4-3b44c938501a-ramips-mt7621-asus_rt-ax53u-squashfs-sysupgrade.bin
Image saved : /tmp/firmware.bin
Manifest    : /tmp/firmware-manifest.json
Verifying   : /tmp/firmware.bin (12524064 bytes) against /tmp/firmware.sha256sums
  Saved sha256 matches
  (null)
Checks complete, image is valid.
Installing /tmp/firmware.bin and rebooting...
root@OpenWrt:~# Connection to openwrt closed by remote host.
Connection to openwrt closed.

Cudy M3000 v2 with Motorcomm YT8821 just Upgrade to 25.12.4

I haven't had any problems so far.
Thank you so much, developers!

AX3200, x86, TP-Link C6 v3.20 - no problems so far.

Updated to 25.12.4 with success, use owut,

Can't get Dynamic DNS Version 2.8.3-4 to work. Curl is fine