Skip to content

Sync OpenWrt 25.12, refresh feeds, and bump Linux to 6.12.95 - #104

Merged
fwerkor merged 8373 commits into
mainfrom
sync-openwrt-25.12-20260712
Jul 12, 2026
Merged

Sync OpenWrt 25.12, refresh feeds, and bump Linux to 6.12.95#104
fwerkor merged 8373 commits into
mainfrom
sync-openwrt-25.12-20260712

Conversation

@fwerkor

@fwerkor fwerkor commented Jul 12, 2026

Copy link
Copy Markdown
Owner

Summary

  • synchronize CapOS with OpenWrt openwrt-25.12 through 42194f9188 (2026-07-11)
  • retain a real upstream ancestry merge while splitting the imported changes into narrowly scoped package, subsystem, kernel-patch, and target commits
  • retain CapOS branding, repository defaults, ArgosFS integration, Capbox/web panel, image sizing, compressed-kernel, and CI customizations
  • bump Linux 6.12 from 6.12.74 to 6.12.95 using the kernel.org checksum
  • refresh vendored OpenWrt 25.12 feed snapshots and reinstall feed packages
  • remove stale installed package links left behind by the old feed snapshot

History structure

The PR now contains 110 first-parent commits:

  • 1 OpenWrt ancestry merge
  • 81 scoped OpenWrt source synchronization commits
  • 1 Linux 6.12.95 stable bump
  • 10 feed snapshot/metadata/install commits
  • 16 independent stale-package cleanup commits
  • 1 independent LuCI Dockerman command-escaping security fix

This keeps individual package and platform updates reviewable and reversible while preserving upstream ancestry for future incremental merges.

Feed revisions

  • packages: 2e291e7dc84113592405ecd1d4b3c6ff9b74ac44
  • luci: 99464ec92438c000d146db3c6702971b2a60c2e2
  • routing: 76c933906c616a4cdf865611af0a381787bd87b8
  • telephony: 2618106d5846a4a542fdf5809f0d3ed228ce439b
  • video: 094bf58da6682f895255a35a84349a79dab4bf95

Removed stale installed links:

acme, flup, kcptun, mocp, python-aiohttp, python-aiohttp-cors, python-astral, python-ciso8601, python-multidict, python-versioneer, python-voluptuous, python-voluptuous-serialize, python-yarl, svox, transmission-web-control, and udp-broadcast-relay-redux-openwrt.

Validation

  • clean package metadata scan contains no missing-dependency warnings
  • no broken symlinks remain under package/feeds
  • x86/64 make defconfig passed
  • armsr/armv8 make defconfig passed
  • malta/le64 make defconfig passed
  • x86_64 Linux 6.12.95 patch preparation passed
  • arm64 Linux 6.12.95 patch preparation passed
  • no rejected kernel patches were produced
  • Capbox shell syntax and logic tests passed
  • CapOS web panel API and app proxy smoke compilations passed
  • LuCI Dockerman command formatter/parser syntax and round-trip tests passed
  • CodeQL high-severity incomplete escaping alert fixed

tmn505 and others added 30 commits May 14, 2026 00:41
Restore the lost band label.

Fixes: 502ac21 ("ipq40xx: drop redundant label with new LED color/function format")
Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
(cherry picked from commit 873120b4ffaf17ad8d72e4e654a6d9657d34a9cb)
Partially revert 5e3a602. Unfortunately the ethaddr value in U-Boot
environment is enclosed in double quotes which makes it longer than
ETH_ALEN, thus nvmem returns EINVAL. Switch back to handling the MAC
addresses in user space.

Fixes: 5e3a602 ("ath79: sitecom,wlrx100: use nvmem")
Reviewed-by: Rosen Penev <rosenp@gmail.com>
Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
(cherry picked from commit a7f5fb4381e924e29cce33db14dab9d89ad8ecd6)
Allows to light it up on 5GHz WLAN activation.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
(cherry picked from commit dd8b607b456ccb5a16676ee6e1e1fd6289fe893b)
On 25.12.0 the device has not enough free blocks to initialize overlay.
Move the device to tiny target and consume backup with storage
partitions, which were previously unused. This operation will reclaim
~800 KiB of flash memory. OEM used storage partition for configuration,
while backup was used to store copy of U-Boot environment and copy of
calibration data.

Signed-off-by: Tomasz Maciej Nowak <tmn505@gmail.com>
(cherry picked from commit 15342a05bd3e6d9a95c8d2ce1e294c14169ff9c3)
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
It was discovered that the internal PHY interrupt are not always connected
and PHY link up/down is not correctly detected.

This is the case of the Nokia Valyrian board that suffer from this problem.

To handle this, drop the internal PHY interrupt property from DTSI and add
it only to the Gemtek W1700K DTS where it was reported to work correctly.

(cherry picked from commit 89d8dc13d066e5dc44586e3db670cb8daabf7c23)
[ drop Gemtek W1700K DTS ]
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
It is more accurate to describe the contents of the FIP as
compressed, instead of the FIP itself becoming compressed.

Update variable naming accordingly.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: openwrt/openwrt#22151
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 97035a5e7f5b46407c5677cdfb9c2891e417a70a)
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
Due to issues surrounding the implementation of the vendor BMT/BBT
on Airoha, upstream ATF + uboot has switched to UBI flash partitions.

However, some devices shipped on this platform are bootloader locked,
and thus it is impossible to replace ATF + uboot.

During testing for the Gemtek W1700K (#17869), sysupgrades from Linux
(which is unaware of the underlying BMT/BBT) would occasionally write
data into blocks which were remapped by the vendor uboot when it was
read on the following reboot, causing a soft brick.

An acceptable workaround [1],[2] was discussed where an intermediate
uboot would be written by the vendor uboot (which is aware of Airoha
BMT/BBT). This chainloader would then ignore the regions of flash
used by the vendor uboot, and store all relevant data inside of UBI.

UBI would then be used to handle bad block management. As the vendor
ATF + uboot do not read or interact with the UBI region, we would avoid
unwanted remaps from BMT/BBT.

This commit introduces support for building such a chainloader, by
packaging u-boot and DTS into a FIT image; to be flashed like a kernel.

Configuration for the Gemtek W1700K is provided as an example of how the
chainloader is used.

[1] openwrt/openwrt#17869 (comment)
[2] openwrt/openwrt#17869 (comment)

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
[ move FIP_COMPRESS to Build/Compile, wrap some long lines ]
Link: openwrt/openwrt#22151
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 442e67d31f3c8b8c43ecc59d25660faf8e824f31)
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
The vendor firmware checks for a bmt header in the last 528 erase blocks
of flash. The OpenWrt partition table did not respect that requirement,
and therefore the vendor and openwrt chainloader fight over those blocks
on every boot, potentially corrupting data stored in UBI blocks there.
This commit increases the size of the reserved_bmt partition to avoid
that fight.

Although the vendor bootloader only seems to touch the final 250 erase
blocks[1], the original vendor firmware system partition ended at
0x1be00000[2], so to be conservative, the consensus is to use that as
the end of mtd2 (ubi) partition and leave the last 528 blocks for mtd3
(reserved_bmt).

From https://openwrt.org/toh/gemtek/mxf-w1700k:
[1] OEM bootlog: [    5.324337] bmt pool size: 250
[2] OEM bootlog: [    5.478927] 0x000008600000-0x00001be00000 : "system"

For the backport to OpenWrt 25.12, the device support has not yet been
committed, so revising the compat_version in this commit is not needed;
and instead will be handled by revising the pending device support
commit.

Reported-by: Loïc Yhuel <loic.yhuel@gmail.com>
Signed-off-by: Russell Senior <russell@personaltelco.net>
Link: openwrt/openwrt#23061
(cherry picked from commit ee771d3dd01c811d2a28eab09a700cefdafd05af)
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
For the backport to U-boot 2025.10, the ethernet driver
(airoha_eth) supports an7581 however it is not declared
in the dtsi. Add the ethernet node for the built in
airoha ethernet controller.

Signed-off-by: Kenneth Kasilag <kenneth@kasilag.me>
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
Add a label to the spi node to allow device trees to reference it
(i.e. to mark status = "okay").

Signed-off-by: Dirk Buchwalder <buchwalder@posteo.de>
Link: openwrt/openwrt#22151
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 133e01b95e83aeec7b34893de35c2dd15ad0f705)
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
Enable fitblk driver, required to parse the fit image and set-up the rootfs volume

Signed-off-by: Dirk Buchwalder <buchwalder@posteo.de>
Link: openwrt/openwrt#22151
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit 0a64ed27a7978389915f16fedcee73ffcabc5258)
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
Add ubi nvmem driver, required to load nvmem entries from ubi volumes

Signed-off-by: Dirk Buchwalder <buchwalder@posteo.de>
Link: openwrt/openwrt#22151
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
(cherry picked from commit e46853426356d905a27665b545fe9048c9e3a001)
Link: openwrt/openwrt#22294
Signed-off-by: Robert Marko <robimarko@gmail.com>
This fixes:
 * CVE-2026-6042: Algorithmic Complexity DoS in musl libc iconv
 * CVE-2026-40200: musl libc: stack corruption in qsort with sufficiently large inputs

Link: openwrt/openwrt#23329
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
(cherry picked from commit 6865d489d21ff5ab172d1e20533e072a32132e98)
Link: openwrt/openwrt#23332
Signed-off-by: Robert Marko <robimarko@gmail.com>
Fix a long standing bug in the mediatek-cci-devfreq driver which leads
to the driver switching off the CPU power regulator in case of another
resource not being ready in time -- a classic probe-order race condition.

As a work-around it would of course just as well be possible to set the
CPU regulator as 'regulator-always-on' (and not just 'regulator-boot-on'),
but practically all MT7988 devices have copy&pasted the PMIC device tree
hunk which sets only 'regulator-boot-on').

Hence, in order not having to fix all device trees, a proper fix in the
driver is preferred.

Fixes: #683
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
(cherry picked from commit a45ce4c78838d01fe52bee1cccf52449a8b5f530)
- Sync shared U-Boot DTS nodes with the main device DTS
- Remove duplicate strings

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: openwrt/openwrt#22929
(cherry picked from commit eeaafc5ae2293bcced0b6ed9955bceac6a484d87)
Link: openwrt/openwrt#23416
Signed-off-by: Robert Marko <robimarko@gmail.com>
Fix instability by reducing RAM speed to 1866 MT/s
in line with Winbond W634GU6RB-11 specs.

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: openwrt/openwrt#22929
(cherry picked from commit 9fb99834671a89c1ddefb255b5445d67a908c712)
Link: openwrt/openwrt#23416
Signed-off-by: Robert Marko <robimarko@gmail.com>
Airoha reported some bug in the TX/RX descriptor handling and PPE. Backport
the fix for such bug merged in net staging tree.

It's expected that these patch will be dropped in future minor kernel
version when submitted to stable staging tree.

All affected patch automatically refreshed.

(cherry picked from commit 1b9922d5e8d96c1f3a65cb7fb30aa90fc89c2417)
Link: openwrt/openwrt#23151
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
he_phy_cap and he_mac_cap in phy_capabilities are only populated inside
the iftype_data loop. On 6GHz-only radios (e.g. QCN9074/ath11k_pci),
when capability bytes are unavailable they remain null, causing null
dereferences in device_htmode_append():

  Reference error: left-hand side expression is null
  if (!(he_phy_cap[3] & 0x80))

Initialise both to [] before the loop and guard the consumer side with
?? [] so bitwise checks conservatively disable beamformer/beamformee/twt
features rather than crashing.

Link: openwrt/openwrt#23488
Signed-off-by: dastarothx <darkastalier@gmail.com>
(cherry picked from commit feca0b4507b9175b95a59701462d550eb0b855c0)
Link: openwrt/openwrt#23503
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.88

Manually rebased:
  bcm27xx/patches-6.12/950-0057-MMC-added-alternative-MMC-driver.patch
  bcm27xx/patches-6.12/950-0750-mmc-sd-filter-card-CQ-support-based-on-an-allow-list.patch

All other patches automatically rebased via update_kernel.sh

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: openwrt/openwrt#23370
(cherry picked from commit 82e97a66de1ca5e738f559961e5edcbb95fce86a)
Link: openwrt/openwrt#23538
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
No patches automatically rebased via update_kernel.sh

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: openwrt/openwrt#23370
(cherry picked from commit cb4fdad4d4b39b13bc8f2df66c6ac581ef851ddd)
Link: openwrt/openwrt#23538
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.90

All patches are automatically refreshed.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: openwrt/openwrt#23444
(cherry picked from commit 979bad262981e610fa096f3db6534a172f232028)
Link: openwrt/openwrt#23538
[Updated and added starfive patches for spi-pl022]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.91

Remove upstreamed patches:
- airoha/patches-6.12/017-v6.13-net-airoha-Implement-BQL-support.patch[1]
- airoha/patches-6.12/138-v7.1-net-airoha-Add-missing-RX_CPU_IDX-configuration-in-a.patch[2]
- airoha/patches-6.12/149-v7.1-net-airoha-Move-ndesc-initialization-at-end-of-airoh.patch[3]
- generic/backport-6.12/940-v7.1-net-dsa-realtek-rtl8365mb-fix-mode-mask-calculation.patch[5]

Manually rebased patches:
- airoha/patches-6.12/048-01-v6.15-net-airoha-Move-airoha_eth-driver-in-a-dedicated-fol.patch[1]
- ath79/patches-6.12/800-leds-add-reset-controller-based-driver.patch[4]
- bcm27xx/patches-6.12/950-0122-bcmgenet-Better-coalescing-parameter-defaults.patch[6]

We also backported four patches to fix perf tool regression:
- generic/backport-6.12/216-01-revert-perf-cgroup-update-metric-leader-in-evlist__e.patch
- generic/backport-6.12/216-02-revert-perf-tool_pmu-fix-aggregation-on-duration_tim.patch
- generic/backport-6.12/216-03-revert-perf-python-add-parse_events-function.patch
- generic/backport-6.12/216-04-revert-perf-tool_pmu-factor-tool-events-into-their-o.patch

All other patches are automatically refreshed.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.91&id=ca24fcac1daaa5e8a667981d81986a3eb4b9fb04
[2] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.91&id=f00037a99bc2332ef59dc85298b98b20af165904
[3] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.91&id=d36be272adda7f313e39dd118086955d993bf6a7
[4] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.91&id=07d3611389ba7d78b80ea360a42ce32ab2521fbc
[5] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.91&id=3354d6c62fd4baa7b32cbd80cc5a8aa3f2bd0656
[6] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.91&id=b84351dcc359667bc952131c1424b692ec83dce2

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: openwrt/openwrt#23444
(cherry picked from commit 8f638f93666bb66a092aaece12699c3509273182)
Link: openwrt/openwrt#23538
[Adapted to patches in 25.12]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Move the Device/FitImage recipe to the generic image Makefile to avoid
duplicating it for other subtargets.

Will be used for uDPU/eDPU.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit f03bb44a08be2f1fb6bc82cfacff3fd08d7baa94)
Reuse Device/FitImage recipe instead of open coding it and
drop duplicate KERNEL_INITRAMFS recipe for eDPU.

While at it, lets clean up the boot script to drop uneeded console
setting, earlycon etc.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit f2a532ec09ca1bc84a83f56f36190fa23ddcce04)
1bf2d490484e libfstools: make get_var_from_file() reusable
0b6022439cad mount_root: add kernel parameter to specify the overlay storage name
e600d842ce81 mount_root: add kernel parameter to specify the overlay fileystem type

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit 920a382cb6389750c8b544f3e1c973cb9fbdfee0)
7df188543e26 libfstools: enable f2fs overlay compression formatting
16718b6e3c0f libfstools: mount f2fs overlay with zstd compression

Signed-off-by: Robert Marko <robimarko@gmail.com>
(cherry picked from commit 417df7debf0ab4d3157df5b57a743639e2eb5646)
Methode uDPU and eDPU devices are one of the rare ones with a completely
custom image format being used with custom partition table with F2FS.

Instead of converting the boards to dual firmware (A/B style) and further
expand the already convoluted custom scripts, especially considering that
dual firmware conversion is a breaking change anyway, lets convert to using
the generic eMMC sysupgrade based images.

F2FS ZSTD compression is preserved thanks to fstools now supporting its use
on overlays.

Dual firmware support is implemented via U-Boot scripts so no U-Boot
upgrade is required.

Since there is a partition table layout change, eMMC must be wiped and
reflashed with the generated GPT image from OpenWrt initramfs.

Then on each sysupgrade the firmware slot will be altered.

Instructions:
1. Boot into OpenWrt initramfs
2. Copy openwrt-mvebu-cortexa53-methode_edpu-squashfs-emmc-gpt.img.gz to
the device into /tmp
3. Erase eMMC:
dd if=/dev/zero of=/dev/mmcblk0 bs=1M
4. Extract image
gzip -d /tmp/openwrt-mvebu-cortexa53-methode_edpu-squashfs-emmc-gpt.img.gz
5. Flash image
dd if=/tmp/openwrt-mvebu-cortexa53-methode_edpu-squashfs-emmc-gpt.img of=/dev/mmcblk0
6. Reboot

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit ada2753d6a315b7ff75604342ef69d55b3b418ae)
Currently, sysupgrade will only upgrade the unused slot, however since the
whole dual firmware logic is in the bootscript U-boot will just use the
first bootscript it finds.

So, in a case that you are running slot A it will upgrade slot B, however
that means that slot B will be still booted by the old bootscript that came
with the previous firmware version.

This is an issue if you need to change anything, so lets add a custom
function that upgrades the active bootscript as well after flashing the
slot firmware.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
(cherry picked from commit fb7787803c64fcca1ae3d0a8882c8337c788f058)
@fwerkor
fwerkor force-pushed the sync-openwrt-25.12-20260712 branch from abcee64 to 5906111 Compare July 12, 2026 06:36
@fwerkor fwerkor changed the title Sync OpenWrt 25.12 updates and bump Linux to 6.12.95 Sync OpenWrt 25.12, refresh feeds, and bump Linux to 6.12.95 Jul 12, 2026
@fwerkor
fwerkor merged commit 9654b09 into main Jul 12, 2026
8 of 10 checks passed
@fwerkor
fwerkor deleted the sync-openwrt-25.12-20260712 branch July 12, 2026 07:34
@fwerkor fwerkor linked an issue Jul 12, 2026 that may be closed by this pull request
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment