OpenWrt 25.12.0 - Stable Release

Hi,

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

Download firmware images using the OpenWrt Firmware Selector:

Download firmware images directly from our download servers:

Highlights in OpenWrt 25.12

OpenWrt 25.12.0 incorporates over 4700 commits since branching the previous OpenWrt 24.10 release and has been under development for over one year.

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

Honoring Dave Täht

OpenWrt 25.12 is named Dave's Guitar to honor Dave Täht, who sadly passed away on April 1, 2025.

Dave played a key role in reducing bufferbloat and improving network latency in OpenWrt and across the wider internet. His work made networks faster, more responsive, and more reliable for millions of users.

This release is dedicated to his memory and lasting impact on the networking community.

General changes

The hardware requirements did not change significantly. Most devices supported by OpenWrt 24.10 are also supported in OpenWrt 25.12.

Switch package manager from opkg to apk

OpenWrt has transitioned from the traditional opkg package manager to apk (Alpine Package Keeper).

This change brings several advantages:

  • apk is still maintained; the OpenWrt opkg fork is no longer maintained.

apk supports most features of opkg. Only very few package names changed. The command line arguments of apk are different from the command line arguments of opkg.

For users migrating existing systems, an official opkg to apk cheatsheet is available to ease the transition and map common workflows.

Integration of attended sysupgrade

The attended sysupgrade LuCI application is now installed by default.
owut is included by default in images for devices with larger flash storage.

ASU allows devices to:

  • Upgrade to new OpenWrt firmware versions
  • Automatically rebuild firmware images with all currently installed packages
  • Preserve system configuration during upgrades
  • ASU allows integrating additional installed packages directly into the SquashFS filesystem, which stores packages more efficiently than the overlay filesystem.

This dramatically simplifies upgrades: with just a few clicks in LuCI and a short wait, a custom firmware image is built and installed without manual intervention.

Shell history is preserved

Shell command history is now preserved across sessions by storing it in a RAM-backed filesystem.

Benefits:

  • Command history is no longer lost between logins
  • No unnecessary writes to flash storage by default

For users who prefer persistent history storage, this behavior can be changed by editing: ''/etc/profile.d/busybox-history-file.sh''

:warning: Note: Storing history on flash will increase write cycles and may impact flash endurance over time.

Integration of video feed

The OpenWrt video feed with Qt5 and UI applications is integrated by default.

Wi-Fi scripts in ucode

The Wi-Fi scripts were rewritten in ucode.
This is part of the rewrite of the management scripts from shell scripts to ucode.

uCode is used for system scripts because it is faster and safer than shell scripts, and integrates directly with ubus and UCI.

Wi-Fi and network management scripts rewritten in uCode run faster, have fewer errors, and are easier to maintain.

Target changes

  • Extend the realtek target with support for more switch SoCs like 10G Ethernet switches.
  • Extend the qualcommax target with support for ipq50xx and ipq60xx SoCs.
  • Added the siflower target for Siflower SF21A6826/SF21H8898 SoCs
  • Added the sunxi/arm926ejs subtarget for Allwinner F1C100/200s SoCs
  • Added the microchipsw/lan969x target with support for Microchip LAN969x switches.

Many new devices added

OpenWrt 25.12 supports over 2200 devices. Support for over 180 new devices was added in addition to the devices already supported in OpenWrt 24.10.
Most devices already supported by OpenWrt 24.10 are still supported.

Core components update

Core components have the following versions in 25.12.0:

  • Updated toolchain:
    • musl libc 1.2.5
    • glibc 2.41
    • gcc 14.3.0
    • binutils 2.44
  • Updated Linux kernel
    • 6.12.71 for all targets
  • main packages:
    • cfg80211/mac80211 from kernel 6.18.7
    • hostapd master snapshot from August 2025
    • dnsmasq 2.91
    • dropbear 2025.89
    • busybox 1.37.0

In addition to the listed applications, many others were also updated.

OpenWrt 24.10 end of life

With the release of OpenWrt 25.12 stable series, the OpenWrt 24.10 stable series will go end of life in 6 months. We will not provide security updates for OpenWrt 24.10 after September 2026. We encourage everyone to upgrade to OpenWrt 25.12 before September 2026.

Upgrading to 25.12

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.

  • Sysupgrade from 23.05 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.

  • Bananapi BPI-R4: Interfaces ''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.

Scratch installs/upgrades

If you wish to start from scratch (always the safest, but also the most work), simply download the pre-built image from the downloads site or from the Firmware Selector to your device. Make sure to create and save a backup, then install the image using sysupgrade -n /tmp/firmware.bin or the LuCI Backup/Flash Firmware, being sure to set "Keep settings and retain the current configuration" to its off position. Restore or reconstruct your configuration using the contents of the backup as a template.

Attended Sysupgrade options

Attended Sysupgrade (ASU) allows you to build a custom image that retains all of your installed packages and their configuration transparently. You need to use one of the three ASU clients that interface with the ASU server to produce this custom image:

  • Firmware Selector - an online builder that requires you to manually supply it with the packages you wish to have installed. This package list is sent to the ASU server, and a new custom device image is created containing those packages. You may then download and install the image in LuCI Backup/Flash Firmware, but for this you would enable "Keep settings..."
  • Luci Attended Sysupgrade - the web interface to the ASU server. This tool allows you to choose a new OpenWrt version, then collects the names of the packages on your device and sends them up to the ASU server. LuCI ASU then downloads the created image directly to your device and allows you to install it, without having to do any of the bookkeeping tasks involved with using the Firmware Selector.
  • owut - a command line package that does the same job as LuCI ASU, but provides more diagnostics and better visibility into what's happening at the various steps before and during the build process.

Both the LuCI ASU app and owut are optional packages in 24.10, so if you have not installed them, they won't be there by default. Use either the LuCI Package Manager to install them, or you can do it from the command line with opkg:

$ opkg update
$ opkg install luci-app-attendedsysupgrade
$ opkg install owut

Note that you can install one or the other, or both together, they are completely independent packages.

Upgrades with Firmware Selector

The Firmware Selector does an excellent job of searching through the thousands of available device configurations and getting you to the right place. But, some devices have several variants and possibly different image formats, so if you're unsure about which one you need or which device you're dealing with or anything else, go to the |Firmware Selector support thread and ask away.

Upgrades with LuCI Attended Sysupgrade

The LuCI web interface is fairly self-explanatory. If anything is unclear, please refer to the LuCI Attended Sysupgrade support thread for guidance.

Upgrades with owut

If you choose to use owut, the fact that it's a command line program means you'll need a little more explanation regarding best practices. In any situation, it's always safe to do a check to see what's going on.

$ owut check --verbose --version-to 25.12
... a lot of output ...

This check should show you all the details of what this upgrade entails with regards to the packages available, and will point out any issues with package versions and so on.

Assuming the results of the check look good, you can simply do an upgrade next.

$ owut upgrade --verbose --version-to 25.12
... even more output ...

If you are unsure of anything you see in the check, during the upgrade, or simply have questions, jump on over to the owut support thread on the forum and ask.

Known issues


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

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

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

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

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:

57 Likes

Successfully upgraded my Xiaomi AX3000T and didn’t encountered any issues so far. thanks so much devs!

1 Like

I upgraded my MT3000, BPI-R3, and all of my access points and I have noticed a performance increase, particularly with SQM and VPN. Excellent work devs!

Just as a side note worth mentioning, I believe I've discovered a bug in the 25.12.0 release that affects the LED configuration on the Netgear WAX220. Previously, I had configured the LAN LED to be green when the link speed was detected at 2.5 Gbps and amber when detected at 1 Gbps. This worked as expected in OpenWRT 24.10.5, however, after the update, the LAN LED no longer illuminates at all. Below is my current configuration:

config led
option name 'LAN Speed 2.5Gb/s'
option sysfs 'green:lan'
option trigger 'netdev'
option dev 'eth0'
list mode 'link_2500'

config led
option name 'LAN Speed 1Gb/s'
option sysfs 'amber:lan'
option trigger 'netdev'
option dev 'eth0'
list mode 'link_1000'

config led
option name '5GHz Radio Status'
option sysfs 'blue:wlan5g'
option trigger 'phy1tpt'

config led
option name '2.4GHz Radio Status'
option sysfs 'blue:wlan2g'
option trigger 'phy0tpt'

All of the other LEDs work as they did before the upgrade.

2 Likes

Upgraded Netgear 4300 v1 no issues with migrating from 24.10.5.

One minor change to note if you were previously changing your wan mac in order to get a different IP you now may need to set your Client ID on the wan interface to be something other than the stock DUID. In 24.10.5 this was only applied to the IPv6 interface. As of 25.12.0 this is applied to both IPv4 and IPv6 interfaces. (If you need this or not will depend on your ISP)

2 Likes

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

Note: If you see unexplained tar file integrity errors when attempting upgrades, or "no space left on device" errors, check your adblock version. If it is 4.5.2-1, then you probably have a broken /dev/null. Check out @dave14305's solutions here.

7 Likes

I may have discovered an issue using a cloned MAC on the wan.

The working config was a Linksys EA6300 running 24.10.5. The wan device using a cloned MAC address (from another device) and this was working as expected. I upgraded to 25.12.0 and this stopped working.

I performed a reset to defaults on 25.12.0 -- the wan came up as expected, except with the router's actual MAC. I then changed only the wan device MAC (using LuCI to ensure that I wouldn't introduce any typos), then saved and applied the settings. The wan port stopped working. It stated that it was pending, but it would not pull a DHCP address from the upstream server.

Because this is a 'production' device in my lab at work, I've reverted to 24.10.5 and the wan port is working again as expected. I don't have the ability to troubleshoot more with the device itself at the moment, but I may try with another device to see if this is unique to my specific router model, or if this might be a broader issue.

2 Likes

Just upgraded WRT3200ACM. I will update here if I see any problems.

1 Like

Congrats devs on this massive release and thanks for all the efforts. One of my GL-MT6000 has been flashed and lots of packages added on a clean config without issue. (My other one remains more of a bleeding edge device that also works great on main branch!). Great to see apk is official too!

Enjoy a short break after this eh? Then on to the next one :rocket:

Edit: adblock-fast service won’t start. Can’t figure out why. I switched to regular adblock package and that worked fine. I’ll post on that thread. No other issues observed.

I ugraded my Banana Pi BPi-R3 from 24.10.5 to 25.12.0.
Everything works fine (as before), with one exception:
When the router finished booting, the fan won't start.
In my rc.local i set the fan speed to 40
echo 40 > /sys/devices/platform/pwm-fan/hwmon/hwmon2/pwm1.
With this or any higher value the fan stops spinning.
If i go below this, i.e. 39 the fan starts up. Lower values result in higher fan speed.
I don't know what caused the change, but maybe others may stumble over this, too.

Many quiet DHCP changes in this release.

Thanks. So does that suggest a bug or just a change in behavior? And if a change in behavior, are there any recommended actions to ensure that the DHCP client works properly after cloning a MAC address into the wan device?

Hopefully @systemcrash or @Alphix can summarize the changes and semi-breaking changes.

1 Like

I’m also using custom wan/lan MAC adresses, starting with 20:05:B6 to make a vendor lookup say ‘OpenWRT’

It’s been working without problems on my device, I hope your issue is unique.

1 Like

https://openwrt.org/releases/25.12/changelog-25.12.0#section13410 was addressed in v24 already.

I'll try on another device using both the same cloned MAC as well as other MACs to test the behavior, and I'll report what I find. If my experimental box at home doesn't exhibit the same problem, I'll try to provide more information about the EA6300 specifics when I have time to have it offline (like I said, this is a part of my lab infrastructure at work, so it can't be offline for long).

1 Like

I installed 25.12.0 before like a day before it got released fully and my OpenWrt version is this with the HEAD detached at etc, should I reinstall with latest image?

Netgear RBR50V1

OpenWrt 25.12.0 r32713-f919e7899d / LuCI (HEAD detached at 27a9c0c) branch 26.061.65855~27a9c0c

sounds like my DHCP DUID issue this will probably be a thing going forward OpenWrt 25.12.0 - Stable Release - #5 by vortex-5

1 Like

Unless you see something that looks odd in LuCI, I wouldn't bother, you're only missing a couple of changes. See https://github.com/openwrt/luci/commits/openwrt-25.12 and note that 27a9c0c is the last commit on March 2.

Is cake_mq also in this new release?
How to tell if my devices supports it or not, I just want to know not that I have enough speed to actually use sqm :sweat_smile: