OpenWrt 25.12.1 Changelog
This changelog lists all commits done in OpenWrt since the v25.12.0 tag, grouped by subsystem. The changes are chronologically ordered from top to bottom and cover the Git repository history until the tagging of the 25.12.1 release.
See also the release notes that provide a more accessible overview of the main changes in 25.12.1.
Build System / Host Utilities (1 change)
62d8101 tools/expat: fix PKG_CPE_ID (+1,-1)
Build System / Image Builder (1 change)
52f5481 build: use STAGING_DIR for special APK package versions (+10,-10)
Kernel (9 changes)
241628a kernel: net: sfp: improve Huawei MA5671a fixup (+152,-3)
52f5481 build: use STAGING_DIR for special APK package versions (+10,-10)
6b31d54 kernel: bump 6.12 to 6.12.72 (+2,-2)
9fafde4 kernel: bump 6.12 to 6.12.73 (+2,-2)
2c68f7b kernel: bump 6.12 to 6.12.74 (+2,-2)
4458141 kernel: add cake_mq fixes (+219)
4193feb kernel: bcma: fallback-sprom: check defered probe (+5,-1)
217128a kernel: ssb: fallback-sprom: check deferred probe (+5,-1)
4d66f70 kernel: add patch for YT8821 address collision (+85)
Packages / Common (11 changes)
52f5481 build: use STAGING_DIR for special APK package versions (+10,-10)
65041d9 omcproxy: update to Git HEAD (2026-03-07) (+3,-3)
⇒ 848d696 proxy: fix indentation warning (+2,-2)
⇒ 8957f6c omcproxy: update cmake file (+45,-27)
⇒ 757c1c7 libubox: remove submodule (-10)
⇒ 49df5f5 omcproxy: add a simple build script (+65)
⇒ 9f0a145 github: add CI build (+151)
⇒ 78eea9b omcproxy: use syslog mask for logging level (+9,-47)
⇒ 11e45f6 README: update build instructions (+8,-4)
⇒ 36adc79 github: fix CI apt dependencies (+1)
⇒ 2be7e63 scripts: devel-build: disable json-c tests (+1)
⇒ de43535 github: ci: disable json-c tests (+3,-1)
⇒ b3d1e2e github: ci: add cmake build and source directories (+7,-4)
⇒ e646f46 github: ci: add powerpc arch (+8,-3)
⇒ 997a981 github: ci: add MIPS64, PowerPC64 and RISCV64 (+37,-3)
⇒ cad82dc formal: fix workflow permissions (+6)
⇒ cd20f3a mrib: receive_mrt: workaround for RTL8373 queries (+16)
⇒ e25491f Revert "mrib: receive_mrt: workaround for RTL8373 queries" (-16)
⇒ + 1 more...
3c1460a ppp: add memmove fortify and remove MRU patch (+66,-1)
2eeab01 apk: bump to 3.0.5 (+5,-461)
⇒ 72b8bad db: print error if apk_process_init fails during script exec (+4,-1)
⇒ e37feab process: do not depend on /dev/null (+5,-6)
⇒ f31135f io: do not close stdin (+1,-1)
⇒ 311aff6 package: fix memfd sealing (+17,-5)
⇒ f724dcd apk-tools-3.0.3 (+1,-1)
⇒ b197b5a progress io: propagate error code at close (+1,-1)
⇒ dcffe44 db: always match package size in apk_db_get_pkg_by_name() (+1,-1)
⇒ 2e379f9 db: check that unshare(CLONE_NEWNS) as root works (+19,-1)
⇒ 923e77b libfetch: increase password buffer to support long tokens (+9,-5)
⇒ 01448dc db: fix replaces to take ownership of files (+2)
⇒ c481c45 test: add test for replaces to function (+10,-7)
⇒ 2de76e3 solver: allow virtual provided package swap on del (+4,-3)
⇒ 7fa1d14 db: reset 'replaces' before reading v2 pkginfo (+1)
⇒ 6c4db48 print: fix apk_indent output to be logged if needed (+29,-11)
⇒ 74b620c doc: document identity hash constraint used by "add file.apk" (+12,-1)
⇒ bb4ee49 print: fix usage of va_list twice (+6,-1)
⇒ + 22 more...
37a1070 apk: add --force-reinstall option (+49,-1)
a93e087 firewall4: prefer over firewall as dependency (+2,-1)
5103e0d wifi-scripts: fix handling spaces in wifi client config (+7,-5)
568caba rtc-rv5c386a: fix build with kernel 6.12 (-1)
4ae4b2d umdns: update to Git HEAD (2026-02-06) (+3,-3)
⇒ a3dcb4a dns: validate reverse dns query name lengths (+14)
⇒ b798c24 dns: validate IPv6 record addresses (+5)
⇒ a52cdb3 dns: validate IPv4 record addresses (+6,-2)
eb68434 wifi-scripts: fix [VHT160]/[VHT160-80PLUS80] usage (+3,-3)
9e27b69 iptables: prefer nft variants over zz-legacy (+3,-1)
Packages / OpenWrt base files (1 change)
52f5481 build: use STAGING_DIR for special APK package versions (+10,-10)
Packages / OpenWrt network userland (4 changes)
1fede7f ustream-ssl: update to Git HEAD (2026-03-01) (+3,-3)
⇒ 99f1c0d ustream-openssl: Fix use-after-free crash under high load and optimize BIO_ME... (+33,-25)
cf1c8c1 package: bump odhcpd to latest HEAD 2026-03-12 (+3,-3)
⇒ bad7138 README.md: update dhcp ubus events (+3,-3)
⇒ da3e2a9 router: Modify relayed RA PIO A flags according to interface policy (+10,-1)
⇒ b84553e router: Modify relayed RA PIO P flag according to interface policy (+6,-1)
⇒ e8b7fde dhcpv4: fix DNS server option (+2,-2)
⇒ cf51aeb odhcpd: fix captive_portal_uri reset (+5,-3)
⇒ 6b88c31 statefiles: don't consider no hostname as broken (+2,-2)
⇒ 03c1468 Revert "router: optimize duplicated PIO comparison" (+4,-6)
⇒ 62113d0 config: allow minimum PD len up to 64 (+9,-7)
⇒ 35f0e05 config: add default value for dhcpv6_pd_min_len (+4,-3)
⇒ eddd0f8 router: improve send_router_advert() (+21,-41)
⇒ 5b0e5c4 router: remove some log spam in send_router_advert() (+6,-6)
⇒ 1450e1e odhcpd: remove fallback DNS search domain (+18,-64)
⇒ 6152cf5 all: remove dead code (-7)
⇒ 3fda5f8 dhcpv6-ia: reconfigure message length bug fix (+6,-2)
⇒ 5a13d87 dhcpv6: set static defines for DHCPv6 option header size (+26,-24)
⇒ 9857adb dhcpv6-ia: switch case refactor in dhcpv6_handle_ias() (+139,-64)
⇒ + 3 more...
412f034 Revert "package: bump odhcpd to latest HEAD 2026-03-12" (+3,-3)
⇒ 0d0fc5f README.md: update dhcp ubus events (+3,-3)
⇒ 74f00bf dhcpv4: fix DNS server option (+2,-2)
⇒ 1ff1328 odhcpd: fix captive_portal_uri reset (+5,-3)
⇒ 90ae6fc statefiles: don't consider no hostname as broken (+2,-2)
⇒ 7ebd960 Revert "router: optimize duplicated PIO comparison" (+4,-6)
⇒ 20eb94d config: allow minimum PD len up to 64 (+9,-7)
⇒ cb1b877 config: add default value for dhcpv6_pd_min_len (+4,-3)
⇒ 179429b router: Modify relayed RA PIO A flags according to interface policy (+10,-1)
⇒ 901851b router: Modify relayed RA PIO P flag according to interface policy (+6,-1)
⇒ c1cc541 router: improve send_router_advert() (+21,-41)
⇒ ff3f72f router: remove some log spam in send_router_advert() (+6,-6)
⇒ 3f6b3b4 odhcpd: remove fallback DNS search domain (+18,-64)
⇒ d69896b all: remove dead code (-7)
⇒ 0779ee2 dhcpv6-ia: reconfigure message length bug fix (+6,-2)
⇒ 3867846 dhcpv6: set static defines for DHCPv6 option header size (+26,-24)
⇒ e282a3c dhcpv6-ia: switch case refactor in dhcpv6_handle_ias() (+139,-64)
⇒ + 2 more...
b21cfa8 odhcpd: update to 25.12 Git HEAD (2026-03-16) (+3,-3)
⇒ 140d98b dhcpv6-ia: dhcpv6_log_ia_addr(): parse return of snprintf (+13,-2)
⇒ b27273d dhcpv4: fix segfault when disabling interface (+1,-1)
⇒ 2f4652a dhcpv4: fix avl_delete on leases not in avl tree (+1,-1)
⇒ 6a4fc65 ubus: fix truncated field in DHCPv6 lease query (+1,-1)
⇒ 61673cb odhcpd: ignore NULL in dhcpv4_free_lease() stub (+2)
⇒ edf2e52 odhcpd: ensure zero padding on DNSSL (+1)
Packages / OpenWrt system userland (6 changes)
34ae6ba procd: update to Git HEAD (2026-03-11) (+3,-3)
⇒ 129b729 service: fix use-after-free in per-instance set_data handler (+8,-2)
8aac058 libubox: update to Git HEAD (2026-03-13) (+3,-3)
⇒ 8156338 CMakeLists.txt: remove -Werror=format-nonliteral (+1,-1)
d8de9b0 procd: update to git HEAD (+3,-3)
⇒ 9baf019 instance: use positive error numbers for strerror() (+1,-1)
⇒ 58eb263 instance: don't print error in case cgroups are disabled (+1,-1)
ca04893 package: update jsonfilter to latest HEAD 2026-03-12 (+3,-3)
⇒ afe72ad main: usage spell fixes (+2,-2)
⇒ e5a07f4 main: defer processing until options are processed (+29,-16)
⇒ e086664 lexer: fix a minor memleak in jp_get_token()/match_token() (+7,-1)
008e519 libubox: set abi version to previous bump for stable release (+3,-2)
827b8c8 jsonfilter: update to Git HEAD (2026-03-16) (+3,-3)
⇒ b17c31f main: exit 1 on getopt() errors (+4)
⇒ e3f6a41 main: exit 1 when showing the usage (+1)
⇒ d67578d main: fix stdin parsing after option deferral (+2,-6)
⇒ b903421 main: fix multiple -e/-t expressions after option deferral (+8,-6)
Target / airoha (1 change)
150d05f airoha: fix EN7581 PCIe initialization and add x2 link support (+295)
Target / ath79 (3 changes)
ef8c235 ath79: rename tplink_rex5x-v1, deduplicate RE450-v2 config (+4,-11)
07c9029 ath79: add 4k blocksize for RE355/RE450 rootfs alignment (+2,-2)
5664814 ath79: tiny: increment compat version for RE355/RE450 (+2,-2)
Target / ipq40xx (3 changes)
274f6e5 treewide: linksys: use nvmem MAC for hw_mac_addr (+206,-121)
2eff59d ipq40xx: re-enable MeshPoint.One target (+1,-2)
9e685c3 ipq40xx: enable Devolo Magic 2 WiFi next (-1)
Target / ipq806x (2 changes)
274f6e5 treewide: linksys: use nvmem MAC for hw_mac_addr (+206,-121)
38a935e ipq806x: ap3935: fix uboot nvmem (+6,-3)
Target / lantiq (2 changes)
1ec817b lantiq: add missing WAN MAC override (+38,-8)
940ab99 lantiq: adapt gpio-stp-xway node name to get clock (+2,-2)
Target / mediatek (4 changes)
274f6e5 treewide: linksys: use nvmem MAC for hw_mac_addr (+206,-121)
9745148 mediatek: filogic: tplink-be450: fix RTL8261N reset timing, add missing WLAN ... (+17,-12)
ca82553 mediatek: filogic: add support for Cudy M3000 w/ YT8821 PHY (+244,-190)
b2d1e03 mediatek: filogic: rename Cudy M3000 v1 to v1/v2 (+2,-2)
Target / microchipsw (1 change)
8ff0207 microchipsw: lan969x: tactical-1000: fix SFP I2C buses (+2,-2)
Target / ramips (3 changes)
274f6e5 treewide: linksys: use nvmem MAC for hw_mac_addr (+206,-121)
837d70e ramips: mt76x8: fix bootcount init script file permissions ()
f7d91e0 ramips: fix for Keenetic KN-1910 (+1)
Target / realtek (2 changes)
241628a kernel: net: sfp: improve Huawei MA5671a fixup (+152,-3)
1353227 realtek: rtl838x: fix non-functional reboot (+14,-2)
Wireless / Common (2 changes)
360b1c8 mac80211: fix a crash triggered by CSA with AP VLAN enabled (+41,-2)
805c8ef mac80211: backport eMLSR/eMLMR parsing support (+412)
Wireless / MT76 (4 changes)
994d198 mt76: update to Git HEAD (2026-01-28) (+4,-435)
⇒ f473d66 wifi: mt76: mt7996: fix crash in mt7996_tx_prepare_skb (+1,-1)
⇒ 7d17569 wifi: mt76: mt7996: grab mt76 mutex in mt7996_mac_sta_event() (+10,-5)
⇒ 2650a7b wifi: mt76: mt7996: move mt7996_update_beacons under mt76 mutex (+1,-1)
⇒ 5f29f4c wifi: mt76: Move mt76_abort_scan out of mt76_reset_device() (+4,-2)
⇒ b01325c wifi: mt76: mt7996: skip deflink accounting for offchannel links (+4,-2)
⇒ 3cdafc1 wifi: mt76: mt7996: skip ieee80211_iter_keys() on scanning link remove (+2,-1)
⇒ e2a5529 wifi: mt76: mt7996: Add missing locking in mt7996_mac_sta_rc_work() (+4)
⇒ 3c23252 wifi: cfg80211/mac80211: Add support to get radio index (+53,-35)
⇒ 12c099c wifi: mt76: mt7996: extend CSA and CCA support for MLO (+131,-59)
⇒ 85c39fb wifi: mt76: mt7996: fix the behavior of radar detection (+68,-12)
⇒ 3b11a23 wifi: mt76: mt7996: set specific BSSINFO and STAREC commands after channel sw... (+75,-1)
⇒ cbafe36 wifi: mt76: mt7996: abort CCA when CSA is starting (+20,-1)
⇒ acc24cb wifi: mt76: mt7996: offload radar threshold initialization (-82)
⇒ febe6e3 wifi: mt76: mt7996: add duplicated WTBL command (+32,-2)
⇒ 9fa302a wifi: mt76: mt7996: fix iface combination for different chipsets (+16,-1)
⇒ eeb6c8d wifi: mt76: mt7925: fix AMPDU state handling in mt7925_tx_check_aggr (+4,-2)
⇒ + 53 more...
1e7d1aa mt76: update to Git HEAD (2026-03-01) (+3,-3)
⇒ a47ad19 wifi: mt76: mt7996: fix out-of-bounds array access during hardware restart (+43,-25)
⇒ a34adb9 wifi: mt76: mt7996: add missing max_remain_on_channel_duration (+2,-2)
⇒ 751ae55 wifi: mt76: improve fix for multi-radio on-channel scanning (+11,-4)
⇒ 9337d2f wifi: mt76: avoid sending probe requests on active DFS channels (+2,-5)
⇒ d62f5a0 wifi: mt76: update fix for backoff fields and max_power calculation (+22,-22)
⇒ 8831fa7 wifi: mt76: add external EEPROM support for mt799x chipsets (+148,-61)
⇒ f656567 wifi: mt76: mt7996: add variant for MT7992 chipsets (+15,-2)
⇒ 36c59c3 wifi: mt76: mt7996: apply calibration-free data from OTP (+157,-19)
⇒ f1c3200 wifi: mt76: connac: use is_connac2() to replace is_mt7921() checks (+25,-25)
⇒ 95df5c5 wifi: mt76: mt7921: use mt76_for_each_q_rx() in reset path (+3,-3)
⇒ c3d7429 wifi: mt76: mt7921: handle MT7902 irq_map quirk with mutable copy (+14)
⇒ 772c51c wifi: mt76: mt7921: add MT7902e DMA layout support (+46,-9)
⇒ 2175fa7 wifi: mt76: connac: mark MT7902 as hw txp devices (+1)
⇒ 135ebed wifi: mt76: mt792x: add PSE handling barrier for the large MCU cmd (+6)
⇒ cc34379 wifi: mt76: mt792x: ensure MCU ready before ROM patch download (+7)
⇒ 5ee9042 wifi: mt76: mt7921: add MT7902 MCU support (+16,-2)
⇒ + 19 more...
e024a3c mt76: update to Git HEAD (2026-03-05) (+20,-3)
⇒ 1958eaf firmware: update mt7992 and mt7996 firmware to the latest version ()
⇒ da6227d firmware: add mt7990 firmware ()
⇒ 9f95baf wifi: mt76: mt7996: Add missing CHANCTX_STA_CSA property (+1)
e831ea1 wifi: mt76: mt7915: set mt76 specific PS flag (+43,-1)
Addressed bugs
#19349
Description: uhttpd keeps crashing when navigating menu options in LUCI
Link: https://github.com/openwrt/openwrt/issues/19349
Commits:
1fede7f ustream-ssl: update to Git HEAD (2026-03-01) (+3,-3)
⇒ 99f1c0d ustream-openssl: Fix use-after-free crash under high load and optimize BIO_ME... (+33,-25)
#21697
Description: 25.12.0 Failsafe broken
Link: https://github.com/openwrt/openwrt/issues/21697
Commits:
940ab99 lantiq: adapt gpio-stp-xway node name to get clock (+2,-2)
#22212
Description: Malformed 802.1X EAP client wpa_supplicant config generated by wifi-script
Link: https://github.com/openwrt/openwrt/issues/22212
Commits:
5103e0d wifi-scripts: fix handling spaces in wifi client config (+7,-5)
#22412
Description: Attended Sysupgrade 24.10.5 to 25.12.0: Impossible package selection: missing (libblobmsg-json20260213, libubox20260213)
Link: https://github.com/openwrt/openwrt/issues/22412
Commits:
008e519 libubox: set abi version to previous bump for stable release (+3,-2)
#22435
Description: wifi-scripts: enabling ucode based scripts degrades HE range with 80 MHz channels
Link: https://github.com/openwrt/openwrt/issues/22435
Commits:
eb68434 wifi-scripts: fix [VHT160]/[VHT160-80PLUS80] usage (+3,-3)
#22439
Description: jsonfilter broken since update 2026-03-12
Link: https://github.com/openwrt/openwrt/issues/22439
Commits:
827b8c8 jsonfilter: update to Git HEAD (2026-03-16) (+3,-3)
⇒ b17c31f main: exit 1 on getopt() errors (+4)
⇒ e3f6a41 main: exit 1 when showing the usage (+1)
⇒ d67578d main: fix stdin parsing after option deferral (+2,-6)
⇒ b903421 main: fix multiple -e/-t expressions after option deferral (+8,-6)
#22442
Description: libubus-lua needs libubox but isn't a requirement
Link: https://github.com/openwrt/openwrt/issues/22442
Commits:
008e519 libubox: set abi version to previous bump for stable release (+3,-2)