]> git.ipfire.org Git - thirdparty/openwrt.git/log
thirdparty/openwrt.git
2 months agoramips: mt7621: fix network configuration 22179/head
Hauke Mehrtens [Wed, 25 Feb 2026 21:42:56 +0000 (22:42 +0100)] 
ramips: mt7621: fix network configuration

The configuration for the dlink,dir-1360-a1 also changed the settings
for the devices defined on top of it. "lan1 lan2 lan3 lan4" "wan" is
the default configuration, no need to add it here.

Fixes: 7a8e2efed587 ("ramips: add support for D-Link DIR-1360 A1")
Reported-by: schmars in IRC
Link: https://github.com/openwrt/openwrt/pull/22179
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 months agonetifd: update to Git HEAD (2026-02-26)
Felix Fietkau [Thu, 26 Feb 2026 12:05:35 +0000 (12:05 +0000)] 
netifd: update to Git HEAD (2026-02-26)

69a5afc9713a bridge: skip present toggle in bridge_free_member() when device is active

Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agobcm53xx: meraki mx6x: use nvmem MAC assignment 22058/head
Rosen Penev [Tue, 17 Feb 2026 04:00:40 +0000 (20:00 -0800)] 
bcm53xx: meraki mx6x: use nvmem MAC assignment

Userspace handling is deprecated. Once mac-base goes upstream, the patch
itself can go upstream as well.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22058
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoramips: dts: convert to dt-bindings clock index 22163/head
Shiji Yang [Tue, 24 Feb 2026 11:00:02 +0000 (19:00 +0800)] 
ramips: dts: convert to dt-bindings clock index

Use clock index macros defined in dt-bindings header to improve the
code readability.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22163
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: hog the GS1900-24E external IC reset line 22132/head
Sander Vanheule [Sat, 21 Feb 2026 14:00:39 +0000 (15:00 +0100)] 
realtek: hog the GS1900-24E external IC reset line

The GPIO line connecting to the reset signals of the GS1900-24E(A1)'s
external ICs (RTL8218B phys and RTL8231 expander) cannot be asserted by
the MDIO subsystem, as the reset is shared between busses.

To prevent users from accidentally asserting the reset line, a GPIO hog
is created to permanently de-assert the signal, reliably keeping the
phys and GPIO expanders on.

Tested-by: Simon Fischer <simi.fischa@gmail.com>
Signed-off-by: Sander Vanheule <sander@svanheule.net>
3 months agorealtek: rtl838x: drop GS1900 MDIO reset GPIO
Sander Vanheule [Sat, 21 Feb 2026 13:44:23 +0000 (14:44 +0100)] 
realtek: rtl838x: drop GS1900 MDIO reset GPIO

The reset line wired to the RTL8231 on the GS1900 series may also
connect to other external ICs on the board. On the GS1900-24E, the
reset line is wired (via buffers) to the board's RTL8231 expanders and
the RTL8218 phys. As these external devices (phys) are on different
busses, the reset line shouldn't be specified on one bus or the other.

Drop the reset specification from the generic GPIO description, so it
can be added back on a per-device basis after confirming the behavior.

Link: https://github.com/openwrt/openwrt/issues/18620
Fixes: fd978c2e80b4 ("realtek: Enable Zyxel GS1900's RTL8231 reset line")
Signed-off-by: Sander Vanheule <sander@svanheule.net>
3 months agowireless-regdb: update to version 2026.02.04 22150/head
Hauke Mehrtens [Sun, 22 Feb 2026 22:11:47 +0000 (23:11 +0100)] 
wireless-regdb: update to version 2026.02.04

75bedc5 wireless-regdb: Update regulatory info for Australia (AU) for 2025
a6e5195 wireless-regdb: Update broken link in regulatory.bin(5) manpage
9e8c67f wireless-regdb: Update regulatory info for Malaysia (MY) for 2024
61a4637 wireless-regdb: Update regulatory info for Malaysia (MY) for 2025
5cefe55 wireless-regdb: Update regulatory info for Tunisia (TN) on 6GHz for 2025
1a729ae wireless-regdb: Update regulatory info for Canada (CA) for 2025
ea20dfa wireless-regdb: update regulatory database based on preceding changes

Link: https://github.com/openwrt/openwrt/pull/22150
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoiproute2: include upstream patch for musl libc 22128/head
Jonas Lochmann [Mon, 16 Feb 2026 00:00:00 +0000 (01:00 +0100)] 
iproute2: include upstream patch for musl libc

Due to a missing include, the constant UINT_MAX is undefined. This
fixes issues when building v25.12.0-rc5. Including a newer version of
iproute2 would include the patch, but causes other building issues.

Signed-off-by: Jonas Lochmann <openwrt@jonaslochmann.de>
Link: https://github.com/openwrt/openwrt/pull/22128
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoeconet: en7528: split DASAN H660GM-A into Airtel and Generic variants 22095/head
Ahmed Naseef [Thu, 19 Feb 2026 12:00:52 +0000 (16:00 +0400)] 
econet: en7528: split DASAN H660GM-A into Airtel and Generic variants

The DASAN H660GM-A GPON ONT exists in two hardware variants, one
distributed by ISPs and one sold directly by the manufacturer [1].

Split the single DTS into a shared dtsi and per-variant DTS files
with the correct GPIO mappings, flash layout, and LED definitions.

Variant comparison:

  Feature        | Airtel                    | Generic
  ---------------+---------------------------+-------------------------
  Supplied by    | Airtel Xstream Fiber      | Retail
  Flash          | Micron MT29F2G01ABAGD     | Micron MT29F1G01ABAFD
                 | 256 MB                    | 128 MB
  Known P/N      | DPW-G-P-66GMAZ-A3         | DPW:G-P-660GMAY-G0
                 | (some units unlabelled)   | DPW:G-P-660GMAY-G3
  WPS LED        | Yes                       | No
  WLAN button    | No                        | Yes
  USB LED        | No                        | Yes
  LAN LEDs       | Green only                | Green + Amber

[1] https://dasanns.com/en/solution/detail.php?mode=view&cat_no=32&offset=&idx=122

Tested-by: Arif Rahman Hakim <arif2785id@gmail.com>
Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22095
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agomac80211: backport eMLSR/eMLMR parsing support
Felix Fietkau [Sat, 21 Feb 2026 10:14:13 +0000 (10:14 +0000)] 
mac80211: backport eMLSR/eMLMR parsing support

Needed for an upcoming mt76 update

Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agomt7620: workaround jal imm26 and redundant PAGE_ALIGN 20553/head
Mieczyslaw Nalewaj [Tue, 28 Oct 2025 23:23:02 +0000 (00:23 +0100)] 
mt7620: workaround jal imm26 and redundant PAGE_ALIGN

On MT7620-class platforms (CONFIG_NET_RALINK_MT7620) we observe sporadic
wrong-jump-targets, kernel oopses, hanging, corrupted backtraces or even
"half-written" instructions when the compiler emits a direct 'jal imm26'
call.
This is triggered in:
  - the small random helpers inside get_random_u32_below(), and
  - the blkcg_maybe_throttle_current() call in resume_user_mode_work().

This patch forces those two call sites to use an indirect call via
a volatile function pointer (load into register + jalr) when building
for MT7620, avoiding embedding a 26-bit immediate jump target.

Additionally, on MT7620 builds the exec path in fs/exec.c is modified:
  - skip arch_align_stack() + PAGE_ALIGN() in setup_arg_pages()
    because the micro-randomization (< PAGE_SIZE) implemented by many
    ports (including MT7620) is negated immediately by PAGE_ALIGN().
    Skipping the redundant PAGE_ALIGN() reduces exposure to the
    problematic code pattern.

These changes are targeted workarounds for MT7620; behavioral logic is unchanged.

Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/20553
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoath79: mikrotik: fix DEVICE_PACKAGES
Robert Marko [Tue, 24 Feb 2026 13:37:33 +0000 (14:37 +0100)] 
ath79: mikrotik: fix DEVICE_PACKAGES

Instead of redifining the DEVICE_PACKAGES, make sure to expand the list
so yafut is included by default as well.

Fixes: 42cd48678745 ("ath79: remove kmod-ath9k and wpad from Mikrotik RB750r2")
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agomvebu: use libdeflate for FitImage
Robert Marko [Tue, 24 Feb 2026 10:46:24 +0000 (11:46 +0100)] 
mvebu: use libdeflate for FitImage

Use libdeflate for faster and better compression in FitImages.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
3 months agoimx: cortexa53: remove KSZ9477 static driver 22120/head
Tim Harvey [Fri, 20 Feb 2026 01:01:48 +0000 (17:01 -0800)] 
imx: cortexa53: remove KSZ9477 static driver

The KSZ9477 driver was added to the cortexa53 kernel to support the
Gateworks Venice product family which has a board with this switch. Now
that the kmod-dsa-ksz9477 driver is available as a package remove the
static configuration ad add the package.

This resolves an issue caused by having the switch driver static and the
PHY driver as a module such that the PHY driver was not registered early
enough to be used causing some errata to not be worked around.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/22120
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agokernel: netdevices: add KSZ9477 DSA switch packages
Tim Harvey [Fri, 20 Feb 2026 00:57:29 +0000 (16:57 -0800)] 
kernel: netdevices: add KSZ9477 DSA switch packages

This adds kernel packages for the Microchip KSZ9477 switch family.

Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Link: https://github.com/openwrt/openwrt/pull/22120
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agomac80211: ath9k: fix memory leak 22158/head
Rosen Penev [Mon, 23 Feb 2026 21:09:06 +0000 (13:09 -0800)] 
mac80211: ath9k: fix memory leak

sc->gpiochip is assigned to gc when it should be the other way around.
This allows gpiod_free to work properly.

Fixes: e78dc2eae4 ("mac80211: ath9k: clean up gpiochi")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22158
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: dsa: allow building as a module 22121/head
Markus Stockhausen [Fri, 20 Feb 2026 19:51:05 +0000 (20:51 +0100)] 
realtek: dsa: allow building as a module

The makefile recipe is wrong and a module compilation tries
to build each object individually. Fix that. This allows to
build the dsa driver as a module.

Suggested-by: Balázs Triszka <info@balika011.hu>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22121
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: remove fixed dsa coupling
Markus Stockhausen [Fri, 20 Feb 2026 19:48:54 +0000 (20:48 +0100)] 
realtek: eth: remove fixed dsa coupling

The ethernet driver has a hard link to the dsa driver. Especially
the setup_tc() function must be available when the driver loads.
Decouple it by using a dsa callback recipe.

Suggested-by: Balázs Triszka <info@balika011.hu>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22121
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: mach: export soc_info
Markus Stockhausen [Fri, 20 Feb 2026 19:44:38 +0000 (20:44 +0100)] 
realtek: mach: export soc_info

We do not want to rely on the soc_info structure. But at the moment
it is still referenced in several places. Add an EXPORT() to it.
So drivers that need access to this structure can be build as modules.

Suggested-by: Balázs Triszka <info@balika011.hu>
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22121
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoath79: remove kmod-ath9k and wpad from Mikrotik RB750r2 22134/head
Eicke Herbertz [Sat, 21 Feb 2026 16:35:54 +0000 (17:35 +0100)] 
ath79: remove kmod-ath9k and wpad from Mikrotik RB750r2

The RB750r2 (HEXLite) does not have wifi and those packages bloat the image
by a significant amount. When building a custom image with WireGuard and
booting that from initramfs, there wasn't enough space left in tmpfs to
upload and flash the squashfs image. Investigating what packages I could
remove, I discovered these unneeded ones.

Signed-off-by: Eicke Herbertz <wolletd@posteo.de>
Link: https://github.com/openwrt/openwrt/pull/22134
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agokernel: net: fix deadlock caused by phy led trigger 22136/head
Shiji Yang [Sun, 22 Feb 2026 02:52:20 +0000 (10:52 +0800)] 
kernel: net: fix deadlock caused by phy led trigger

Register phy led_triggers earlier to avoid AB-BA deadlock.

Fixes: https://github.com/openwrt/openwrt/issues/18472
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22136
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agonetifd: update to Git HEAD (2026-02-23)
Robert Marko [Mon, 23 Feb 2026 10:01:08 +0000 (11:01 +0100)] 
netifd: update to Git HEAD (2026-02-23)

299a51f0c301 global: add support for PSE-PD control

Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agotreewide: linksys: use nvmem MAC for hw_mac_addr 22092/head
Rosen Penev [Thu, 19 Feb 2026 01:57:22 +0000 (17:57 -0800)] 
treewide: linksys: use nvmem MAC for hw_mac_addr

Given that Linksys is the same brand and probably use the same OEM, it
stands to reason all devinfo hw_mac_addr implementations are the same.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22092
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoipq806x: nbg6817: use nvmem for MAC addresses 22107/head
Rosen Penev [Fri, 20 Feb 2026 01:40:44 +0000 (17:40 -0800)] 
ipq806x: nbg6817: use nvmem for MAC addresses

Userspace handling is deprecated. NVMEM allows more flexibility in terms
of exotic setups while keeping correct MAC addresses.

env-size taken from file in uboot-envtools.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22107
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoipq806x: ac400i: use nvmem for MAC addresses
Rosen Penev [Fri, 20 Feb 2026 01:23:00 +0000 (17:23 -0800)] 
ipq806x: ac400i: use nvmem for MAC addresses

Userspace handling is deprecated. NVMEM allows flexibility in terms of
exotic setups by avoiding random MAC addresses.

u-boot env-size taken from the entry in uboot-envtools

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22107
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agomediatek: backport various pinctrl fixes 21423/head
Shiji Yang [Tue, 6 Jan 2026 12:19:30 +0000 (20:19 +0800)] 
mediatek: backport various pinctrl fixes

Backport patches from upstream linux and mtk-openwrt-feeds to fix
MT7981 register offset issue and correct MT798x IES register config.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21423
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agouboot-mediatek: backport various pinctrl fixes
Shiji Yang [Tue, 6 Jan 2026 12:19:30 +0000 (20:19 +0800)] 
uboot-mediatek: backport various pinctrl fixes

Backport patches from upstream u-boot and mtk-openwrt-feeds to fix
MT7981 register offset issue and correct MT798x IES register config.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21423
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agomediatek: add the aquantia kmod to bpi-r4 19884/head
Felix Baumann [Wed, 27 Aug 2025 15:44:19 +0000 (17:44 +0200)] 
mediatek: add the aquantia kmod to bpi-r4

The banana pi r4 comes with 2 sfp+ ports running at 10gbps
Readd support for aquantia sfp+ modules that was removed by
57a127c9e79db96f4dbf262db9e1a808bd474ddf

Closes: #19878
Signed-off-by: Felix Baumann <felix.bau@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/19884
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: dsa: derive dsa port count and irq mask from cpu port 22068/head
Markus Stockhausen [Tue, 17 Feb 2026 18:19:22 +0000 (19:19 +0100)] 
realtek: dsa: derive dsa port count and irq mask from cpu port

Avoid a family_id check and derive the values from the cpu port.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: dsa: move n_pie_blocks into config structure
Markus Stockhausen [Tue, 17 Feb 2026 18:06:54 +0000 (19:06 +0100)] 
realtek: dsa: move n_pie_blocks into config structure

Place it where it belongs.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: dsa: move n_counters into config structure
Markus Stockhausen [Tue, 17 Feb 2026 17:52:49 +0000 (18:52 +0100)] 
realtek: dsa: move n_counters into config structure

Place it where it belongs.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22068
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: eth: merge & simplify irq handlers 22023/head
Markus Stockhausen [Sat, 14 Feb 2026 18:40:31 +0000 (19:40 +0100)] 
realtek: eth: merge & simplify irq handlers

Two different irq handlers exist for RTL83xx and RTL93xx. Basically
they do always the same.

- Check transmit interrupts (not needed anymore)
- Check rx overflow interrupts (not needed anymore)
- Determine rx interrupts and queues that must be processed.
- In case of RTL839x check for L2 interrupts

With all the recent refactoring their logic is more or less the
same. Merge them into one handler. For better readability add a
helper that determines the work (aka rings) that needs to be
processed.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22023
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: fix LGS352C DTS 22119/head
Markus Stockhausen [Fri, 20 Feb 2026 16:21:37 +0000 (17:21 +0100)] 
realtek: fix LGS352C DTS

There is a wrong port assignment for the 4 SFP+ ports
on that device. Additionally the transmit polarity
change option was missed. Fix that.

Fixes: f88135b ("realtek: add support for Linksys LGS352C")
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22119
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: pcs: rtl931x: configure SerDes-backing MAC groups 22088/head
Jonas Jelonek [Wed, 18 Feb 2026 20:18:21 +0000 (20:18 +0000)] 
realtek: pcs: rtl931x: configure SerDes-backing MAC groups

RTL931x organizes MACs into 12 groups (one per SerDes) that must be
explicitly enabled before link establishment. Without initialization,
link may fail or packets may be corrupted, especially in USXGMII/XSGMII
modes. This is the case for devices which lack initialization by the
bootloader.

Simply enable all MACs in all groups by writing 0xffffffff to the
registers. Unused MACs and reserved bits are harmless, avoiding complex
logic to always set only needed MACs.

This is placed in the PCS driver since the MAC groups are assigned per
SerDes and the DSA driver lacks SerDes awareness (on purpose)

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22088
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: add support for XikeStor SKS8300-12X V1 21922/head
Jonas Jelonek [Wed, 3 Sep 2025 21:55:29 +0000 (21:55 +0000)] 
realtek: add support for XikeStor SKS8300-12X V1

Hardware:
  - SoC: RTL9313
  - Memory: 512MB
  - Flash: SPI-NOR 32MB (GigaDevice GD25Q256EFIR)
  - Ethernet: 12x 1/2.5/10 Gbps (SFP+)
  - LED/Keys (GPIO): 1x/1x
  - UART: "Console" port on the front panel
    - type: RS-232C
    - connector: RJ-45
    - settings: 9600n8 / 115200n8
  - Watchdog: Diodes PT7A7514WE
  - Monitoring: LM75A
  - Power: 100-240 VAC 50/60 Hz C13/C14

Important notes:
---------------

* the device uses 9600 Baud by default but this extremely slows down the
  device when using the serial console. OpenWrt is configured to use
  115200 Baud. If you need to enter the bootloader, you need to use 9600
  Baud.

* PT7A7514WE watchdog is fed through hardware-assisted SYS_LED. However,
  the bootloader seems to deactivate that again during autoboot. There's
  a quirk in early arch setup for this.

* a kernel binary "nos.img" needs to be stored into JFFS2 filesystem
  using 4KiB erase block instead of 64KiB.

* V1 is the version with the 19"-sized case. As of 2026, there's a newer
  version with a narrow case.

Flash instructions using initramfs image:
-----------------------------------------

(mostly taken from 0dc0b98295)

 1. Prepare TFTP server with an IP address in 192.168.2.0/24.
 2. Connect your PC to Port 1 on SKS8300-12X.
 3. Power on SKS8300-12X and interrupt autoboot by Ctrl + B.
 4. Login to the vendor CLI by Ctrl + F and "diagshell_unipoe_env" as password.
 5. Switch baudrate to 115200 by running a command and then reconnect
    with different settings:

    baudrate 115200

 6. Switch to U-Boot CLI by "debug_unish_env".
 7. Enable Port 1 with the following commands:

    rtk 10g 0 fiber1g # (or fiber10g if 10GBase-*R)
    rtk ext-devInit 0 # init RTL8231 that holds SFP GPIOs
    rtk ext-pinSet 2 0 # set tx-disable of port 1 to LOW

 8. Transfer initramfs image via TFTP and boot it:

    tftpboot 0x82000000 <serverip>:<image name>
    bootm 0x82000000

 9. On the initramfs image, backup the stock firmware if needed.
10. Upload (or download) sysupgrade image to the device.
11. Erase "firmware" partition to cleanup JFFS2 of stock FW:

    mtd erase firmware

12. Perform sysupgrade with the sysupgrade image.
13. Wait until the flash completes and the system reboots into OpenWrt.

Reverting to stock firmware:
----------------------------

(taken from 0dc0b98295)

1. Prepare OpenWrt SDK to use the mkfs.jffs2 tool contained in it

   Note: the official mkfs.jffs2 tool in mtd-utils doesn't support 4KiB
         erase size and not usable for SKS8300-8X

2. Create a directory for working
3. Download official firmware for SKS8300-8X from XikeStor's official
   website
4. Rename the downloaded firmware to "nos.img" and place it to the
   working directory
5. Create a JFFS2 filesystem binary with the working directory

   /path/to/mkfs.jffs2 -p -b -U -v -e 4KiB -x lzma \
       -o nos.img.jffs2 -d /path/to/working/dir/

6. Upload the created JFFS2 filesystem binary to the device
7. Erase the "firmware" partition

   mtd erase firmware

8. Write the JFFS2 filesystem binary to the "firmware" partition

   mtd write /path/to/nos.img.jffs2 firmware

9. After writing, reboot the device by power cycle

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21922
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: image: make xikestor-nosimg a common recipe
Jonas Jelonek [Sun, 8 Feb 2026 00:21:10 +0000 (00:21 +0000)] 
realtek: image: make xikestor-nosimg a common recipe

Make xikestor-nosimg a common recipe in the Makefile to allow usage for
other subtargets too, not only rtl930x.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21922
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: arch: add early watchdog quirk
Jonas Jelonek [Sat, 7 Feb 2026 23:36:16 +0000 (23:36 +0000)] 
realtek: arch: add early watchdog quirk

On some XikeStor switches (SKS8300-8X, SKS8300-12X), the SYS_LED/GPIO0 is
used to feed an external PT7A7514WE watchdog. While this was no issue on
SKS8300-8X, the bootloader on the SKS8300-12X seems to deactivate the
automatic feeding on purpose by setting the pin function of to GPIO0
instead of SYS_LED. This kills the periodic signal generated on that pin.
This causes the kernel to just stop quite early and reset the system
entirely.

Because this happens very early, it doesn't work to define this as a
pinctrl entry or GPIO hog. The drivers aren't even loaded at that stage.
To work around the issue, we need to configure this in the arch-specific
early setup. An affected device needs to have a corresponding node in
the DTS that is picked up then.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21922
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: switch Netgear RTL8380 devices to NVMEM 22055/head
Jan Hoffmann [Mon, 16 Feb 2026 20:36:05 +0000 (21:36 +0100)] 
realtek: switch Netgear RTL8380 devices to NVMEM

Use NVMEM in device tree to set the label and eth0 MAC address based on
the U-Boot environment.

Invididual port MAC addresses and bridge MAC are still handled in the
02_network script to maintain the current assignment.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/22055
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: rtl838x: enable U-Boot env NVMEM layout in kernel
Jan Hoffmann [Mon, 16 Feb 2026 20:20:56 +0000 (21:20 +0100)] 
realtek: rtl838x: enable U-Boot env NVMEM layout in kernel

This is a preparation to convert some more RTL838x devices to NVMEM.

Signed-off-by: Jan Hoffmann <jan@3e8.eu>
Link: https://github.com/openwrt/openwrt/pull/22055
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agorealtek: mdio: setup polling for RTL8261 22109/head
Markus Stockhausen [Fri, 20 Feb 2026 06:55:24 +0000 (07:55 +0100)] 
realtek: mdio: setup polling for RTL8261

Startup of mdio on a RTL8216 based device currently shows the
following warnings.

[1.948608] skip polling setup for unknown PHY 001ccaf3 on port 0
[1.968920] skip polling setup for unknown PHY 001ccaf3 on port 8
[1.989171] skip polling setup for unknown PHY 001ccaf3 on port 16
[2.009704] skip polling setup for unknown PHY 001ccaf3 on port 20
[2.030209] skip polling setup for unknown PHY 001ccaf3 on port 24
[2.052270] realtek-otto-serdes-mdio 1b000000.switchcore:mdio-serdes:
           Realtek SerDes mdio bus initialized, 12 SerDes, 64 pages

Add the phy detection to the mdio bus so that polling setup works.
While we are here sort the phy ids alphabetically.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22109
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoRevert "bmips: huawei-hg556a-c: use nvmem for wifi eeprom" 22091/head
Rosen Penev [Thu, 19 Feb 2026 01:25:38 +0000 (17:25 -0800)] 
Revert "bmips: huawei-hg556a-c: use nvmem for wifi eeprom"

This reverts commit 72f43ac220616fbd2f9658b9b60a861e8565a998.

The NVMEM codepath does not perform automatic byte conversion. It can be
fixed but the upstream version is quite different from the local
mac80211 patch. Revert until mac80211 gets updated and the whole mess
can get squared away.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22091
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: mdio: use register field indentation 22075/head
Markus Stockhausen [Wed, 18 Feb 2026 07:27:30 +0000 (08:27 +0100)] 
realtek: mdio: use register field indentation

Make clearer which field belongs to which register. For this
sort the fields below the registers and use indentation.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22075
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: mdio: taker over RTL931x PHY polling from DSA
Markus Stockhausen [Wed, 18 Feb 2026 07:12:06 +0000 (08:12 +0100)] 
realtek: mdio: taker over RTL931x PHY polling from DSA

PHY polling setup has found a home in the mdio driver. For RTL931x
there still exists a setup sequence for polling type (serdes/mdio)
in the DSA driver. Put it where it belongs.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22075
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agotoolchain: sdk: ib: allow external toolchain override 22089/head
Daniel Dickinson [Sun, 3 Jan 2016 06:02:55 +0000 (01:02 -0500)] 
toolchain: sdk: ib: allow external toolchain override

Allow building imagebuilder and/or sdk with dependency on the same
external toolchain as used to build the imagebuilder or sdk (so that ib
and sdk may be built using an external toolchain).

Signed-off-by: Daniel Dickinson <openwrt@daniel.thecshore.com>
Original patch:
https://lists.openwrt.org/pipermail/openwrt-devel/2016-January/012552.html
[rebased to current main, impvove commit title]
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22089
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoRevert "package: kernel: dtc: Add DTO support" 22118/head
Daniel Golle [Fri, 20 Feb 2026 14:49:02 +0000 (14:49 +0000)] 
Revert "package: kernel: dtc: Add DTO support"

It looks like commit 6d2f3b1b19 ("package: kernel: dtc: Add DTO support")
added this patch file 9 years ago without it ever being applied anywhere.
Back then there wasn't even a 'dtc' package, but we just used 'dtc' from
the Linux kernel sources.
Nowadays there is package/utils/dtc which is used to build dtc to be used
on the target (*not* a host-build!), and it of course already contains
support for device tree overlays since v1.4.3 from 2017...

This reverts commit 6d2f3b1b1974d742576b0902e9c4777c9ac1ba67.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Link: https://github.com/openwrt/openwrt/pull/22118
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: drop unused defines 22100/head
Markus Stockhausen [Thu, 19 Feb 2026 20:50:59 +0000 (21:50 +0100)] 
realtek: eth: drop unused defines

Get rid of defines that are not used in the driver.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22100
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: remove DMA_IF_RX_CUR definition
Markus Stockhausen [Thu, 19 Feb 2026 20:33:57 +0000 (21:33 +0100)] 
realtek: eth: remove DMA_IF_RX_CUR definition

This define is used nowhere. Remove it.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22100
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: simplify MAC_FORCE_MODE_CTRL usage
Markus Stockhausen [Thu, 19 Feb 2026 20:22:58 +0000 (21:22 +0100)] 
realtek: eth: simplify MAC_FORCE_MODE_CTRL usage

The MAC_FORCE_MODE_CTRL register is only used for the CPU port.
No need to repeat the port register calculation for each usage.
Simply point to the cpu port register directly.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22100
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agowireguard-tools: fix string indexing in endpoint host check
Felix Fietkau [Fri, 20 Feb 2026 18:05:45 +0000 (18:05 +0000)] 
wireguard-tools: fix string indexing in endpoint host check

Use substr() instead of array index syntax to access the first
character of the endpoint host string, as ucode does not support
array-style indexing on strings.

Fixes: https://github.com/openwrt/openwrt/issues/22116
Fixes: 8f977b4a4055 ("wireguard-tools: fix handling of multi-value config options")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agoprocd: update to git HEAD 22065/head
Daniel Golle [Tue, 17 Feb 2026 15:26:18 +0000 (15:26 +0000)] 
procd: update to git HEAD

 180ffcc instance: use mkdir_p helper
 9493a3d signal: handle SIGUSR1 as halt
 4dd22d0 cgroups: fix syntax error

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
3 months agogeneric: fixed FTB when CONFIG_MODULES=n 22041/head
Maksim Dmitrichenko [Sun, 15 Feb 2026 22:31:55 +0000 (02:31 +0400)] 
generic: fixed FTB when CONFIG_MODULES=n

Fixed the compilation of kernel with the loadable modules support turned off

Signed-off-by: Maksim Dmitrichenko <dmitrmax@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22041
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: cleanup mach setup 22084/head
Markus Stockhausen [Wed, 18 Feb 2026 18:21:42 +0000 (19:21 +0100)] 
realtek: cleanup mach setup

Remove unneeded includes from setup.c and adapt comments.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22084
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoqualcommbe: add missing CONFIG_LEDS_QCOM_LPG to ipq95xx/config-default 22096/head
Ahmed Naseef [Fri, 20 Feb 2026 05:12:12 +0000 (09:12 +0400)] 
qualcommbe: add missing CONFIG_LEDS_QCOM_LPG to ipq95xx/config-default

Add missing CONFIG_LEDS_QCOM_LPG symbol.

Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22096
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoqualcommbe: fix rdp433 build after DTS directory move
Ahmed Naseef [Fri, 20 Feb 2026 05:10:31 +0000 (09:10 +0400)] 
qualcommbe: fix rdp433 build after DTS directory move

Commit 041ef9648d ("qualcommbe: move Device DTS to dedicated DTS
directory") introduced a dedicated DTS directory and set DEVICE_DTS_DIR
to ../dts as default. This broke the rdp433 device build since its DTS
resides in the kernel tree (applied via patches), not in the target dts
directory.

Fix this by overriding DEVICE_DTS_DIR for rdp433 to point to the kernel
DTS directory.

Fixes: 041ef9648d ("qualcommbe: move Device DTS to dedicated DTS directory")
Signed-off-by: Ahmed Naseef <naseefkm@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22096
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agouclient: update to Git HEAD (2026-02-20)
Felix Fietkau [Fri, 20 Feb 2026 09:07:56 +0000 (09:07 +0000)] 
uclient: update to Git HEAD (2026-02-20)

7a0aa2e4afb4 uclient-http: fix data_eof for body-less responses

Fixes: https://github.com/openwrt/openwrt/issues/22103
Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agowireguard-tools: fix handling of multi-value config options
Felix Fietkau [Fri, 20 Feb 2026 08:50:44 +0000 (08:50 +0000)] 
wireguard-tools: fix handling of multi-value config options

Config options like addresses and ip6prefix can be passed as either a
space-separated string or an array. Add a to_array() helper and use it
consistently for all multi-value options (addresses, ip6prefix,
allowed_ips).

Fixes: https://github.com/openwrt/openwrt/issues/22102
Fixes: 41bc454602f1 ("wireguard-tools: rewrite proto handler in ucode")
Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agoairoha: an7583: fix wrong clock for SPI and SLIC
Christian Marangi [Thu, 19 Feb 2026 23:57:35 +0000 (00:57 +0100)] 
airoha: an7583: fix wrong clock for SPI and SLIC

Due to confusing Documentation, the SPI and SLIC base clock and
register location for Airoha AN7583 SoC were wrong.

Fix them with new updated Documentation source to provide correct
clock support.

Fixes: c5b12fc02ab1 ("airoha: Introduce support for Airoha AN7583 SoC")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
3 months agohostapd: fix EAP-PWD in experimental hostapd-radius server
Yaroslav Isakov [Sat, 14 Feb 2026 18:35:06 +0000 (19:35 +0100)] 
hostapd: fix EAP-PWD in experimental hostapd-radius server

Without initializing pwd_group, it's set to 0, which is reserved value.
When EAP-PWD is used in wpa_supplicant/eapol_test, next error is seen:
EAP-PWD: Server EAP-pwd-ID proposal: group=0 random=1 prf=1 prep=0
EAP-pwd: Unsupported or disabled proposal

Signed-off-by: Yaroslav Isakov <yaroslav.isakov@gmail.com>
3 months agohostapd: initialize first BSS radio_mask during driver init
Chad Monroe [Fri, 6 Feb 2026 17:21:44 +0000 (09:21 -0800)] 
hostapd: initialize first BSS radio_mask during driver init

Secondary BSSes inherit the alloc value which bypasses
NL80211_ATTR_VIF_RADIO_MASK in nl80211_create_iface() and causes the
kernel to default new interfaces to all radios.

The ucode bss_create fallback fails to correct this because
the interface is already UP.. the kernel rejects SET_INTERFACE with
-EBUSY.

Signed-off-by: Chad Monroe <chad@monroe.io>
3 months agowireguard-tools: rewrite proto handler in ucode
Felix Fietkau [Sat, 14 Feb 2026 19:44:31 +0000 (19:44 +0000)] 
wireguard-tools: rewrite proto handler in ucode

This fixes automatic config reload on peer changes

Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agonetifd: update to Git HEAD (2026-02-15)
Felix Fietkau [Sun, 15 Feb 2026 08:27:59 +0000 (08:27 +0000)] 
netifd: update to Git HEAD (2026-02-15)

Adds ucode proto handler support

51fa9ed6d4d6 interface-ip: fix fortify build error
ca33316f8552 proto-ext: extract shared protocol handler code from proto-shell.c
2098f29810e8 proto: add config_load callback to proto_handler
aaf5b194b15d proto-ucode: add ucode protocol handler infrastructure
3fc8b83c8b62 proto-ucode: add ucode proto handler scripts
c6122254eb70 examples: sync wireless scripts with openwrt

Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 months agomvebu: cortex-a53: uDPU/eDPU: cleanup recipe a bit
Robert Marko [Tue, 17 Feb 2026 12:35:55 +0000 (13:35 +0100)] 
mvebu: cortex-a53: uDPU/eDPU: cleanup recipe a bit

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>
3 months agomvebu: move FitImage recipe to generic image Makefile
Robert Marko [Tue, 17 Feb 2026 12:00:04 +0000 (13:00 +0100)] 
mvebu: move FitImage recipe to generic image Makefile

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>
3 months agorealtek: eth: convert rx/tx enable bits to config value 21999/head
Markus Stockhausen [Thu, 12 Feb 2026 18:07:36 +0000 (19:07 +0100)] 
realtek: eth: convert rx/tx enable bits to config value

This allows to drop a family condition check and in the future
allows to merge nowadays splitted functions. While we are here
replace a hardcoded 0xc value with the new value for better
readability.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21999
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: merge RTL93xx ring counter handling
Markus Stockhausen [Thu, 12 Feb 2026 17:48:37 +0000 (18:48 +0100)] 
realtek: eth: merge RTL93xx ring counter handling

There is enough info in the control and config structures to derive
the device specific counter freeing. No need to write two different
functions.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21999
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: remove family usage in xmit path
Markus Stockhausen [Thu, 12 Feb 2026 14:29:36 +0000 (15:29 +0100)] 
realtek: eth: remove family usage in xmit path

Get away with another family check.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21999
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: eth: cleanup packet length calculation
Markus Stockhausen [Thu, 12 Feb 2026 13:53:11 +0000 (14:53 +0100)] 
realtek: eth: cleanup packet length calculation

During transmit the driver must adapt the packet length. The
hardware requires at least a memory space of ETH_ZLEN bytes
data plus four bytes for layer 2 FCS. This was calculated
(somehow) but skb->len never got updated and for the minimum
length a RTL838x specific workaround was in place. Clean up
the code and use skb_put_padto() so the length change gets
reflected in skb->len.

While we are here drop zeroing DSA tag because it will be
overwritten by hardware for FCS.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21999
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: mdio: register PHYs via fwnode for PSE support 22019/head
Carlo Szelinsky [Sat, 14 Feb 2026 15:11:59 +0000 (16:11 +0100)] 
realtek: mdio: register PHYs via fwnode for PSE support

Switch from auto-scan PHY discovery to explicit DT-based registration
using fwnode_mdiobus_register_phy(). This is the standard approach used
by of_mdiobus_register() and most MDIO drivers.

Auto-scan (phy_mask-based) registration does not attach DT fwnode data
to PHY devices, which means DT properties like "pses" are never parsed.
As a result, PSE controllers referenced from PHY nodes are not linked,
and ethtool PSE commands (--show-pse, --set-pse) do not work.

Store the device_node for each PHY found during DT parsing, suppress
auto-scan by setting phy_mask to ~0, and register each PHY explicitly
after devm_mdiobus_register(). This allows fwnode_find_pse_control() to
resolve PSE references and also establishes proper fw_devlink supplier
relationships.

Additionally this fixes a bug where the RTL8221B is limited to
1G and below due to missing DTS references.

Fixes: 4e00306 ("realtek: mdio: use bus auto registration")
Signed-off-by: Carlo Szelinsky <github@szelinsky.de>
Link: https://github.com/openwrt/openwrt/pull/22019
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agotools/cmake: update to 4.2.3 22052/head
Hannu Nyman [Mon, 16 Feb 2026 19:41:02 +0000 (21:41 +0200)] 
tools/cmake: update to 4.2.3

Update cmake to version 4.2.3.

Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/22052
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoipq40xx: add support for Cisco Meraki MR70 22050/head
Hal Martin [Wed, 18 Feb 2026 18:11:54 +0000 (19:11 +0100)] 
ipq40xx: add support for Cisco Meraki MR70

This commit adds support for the Cisco Meraki MR70/Go GR60.

The Meraki MR70 is a Cisco 802.11ac/WiFi 5 outdoor AP with 1 Ethernet port.
It can be powered by a 12V DC barrel jack (5.5x2.5mm, center positive)
or via 802.3af POE.

The Meraki Go GR60 (codename: Dungbeetle Omni) is identical to the MR70
(codename: Toe Biter Omni), so this document will refer to both devices
as the MR70.

MR70 hardware info:
* CPU: Qualcomm IPQ4029
* RAM: 256MB DDR3
* Storage: 128 MB (TSOP48 NAND, 3.3V)
* Networking: 1 Gigabit Ethernet
* WiFi: QCA4019 802.11b/g/n/ac
* Serial: Internal header (J10, 2.54mm, unpopulated)

This device ships with secure boot, and cannot be flashed without
external programmers (TSOP48 NAND and I2C EEPROM)!

Disassembly:

Note: This is an outdoor device that is ultrasonically welded and glued
to weather seal it. Disassembly will compromise the weather seal!

Start by removing the product label on the rear metal mounting plate.
There are four Torx T8 screws under the sticker, remove the screws and
the mounting plate. Remove the two Philips screws under the plate.

Using a chisel (or razor blade) and hammer, cut around the circumfrence
of the device. You need to cut through approximately 2mm of
ultrasonically welded plastic.

After cutting through the plastic, heat the device using a hair drier
(or similar) to soften the glue. A heatgun is NOT recommended as
it will damage the plastic. It is only required to heat the device until
warm (~40C-50C).

Using a plastic pry tool, insert it along the cut you made around
the edge and gently separate.  Insert a guitar pick into the opening
while gently lifting the front to cut the glue. The device is glued around
the entire circumfrence.

Once you have removed the plastic front, remove the 4 Philips screws
holding down the main PCB. Release the two WiFi antennas by gently
bending the antenna PCBs to the middle of the unit and pulling up.

Lift the top of the PCB gently while pushing the Ethernet port into the
housing to release it. Turn the PCB over and remove the three Philips
screws holding the metal heat spreader.

The TSOP48 NAND flash (U9, S34ML01G200 or W29N01HV) is located
under the metal heat spreader.

To flash, you need to desolder the TSOP48 or use a 360 clip.

You also need to reprogram the I2C EEPROM (U20, Atmel 24c64). It is not
necessary to desolder the I2C EEPROM, a ch341a USB programmer and SOP-8
clip are inexpensive (~$10) and work well.

Installation:

The dumps to flash can be found in this repository:
https://github.com/halmartin/meraki-openwrt-docs/tree/main/mr70_gr60

The device has the following flash layout (offsets with OOB data):
```
0x000000000000-0x000000100000 : "sbl1"
0x000000100000-0x000000200000 : "mibib"
0x000000200000-0x000000300000 : "bootconfig"
0x000000300000-0x000000400000 : "qsee"
0x000000400000-0x000000500000 : "qsee_alt"
0x000000500000-0x000000580000 : "cdt"
0x000000580000-0x000000600000 : "cdt_alt"
0x000000600000-0x000000680000 : "ddrparams"
0x000000700000-0x000000900000 : "u-boot"
0x000000900000-0x000000b00000 : "u-boot-backup"
0x000000b00000-0x000000b80000 : "ART"
0x000000c00000-0x000007c00000 : "ubi"
```

* Dump your original NAND (if using nanddump, include OOB data).

* Decompress `u-boot.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `u-boot` portion of NAND from
`0x738000`-`0x948000` (length `0x210000`). Offsets here include OOB data.

* Decompress `ubi.bin.gz` dump from the GitHub repository above (dump
contains OOB data) and overwrite the `ubi` portion of NAND from
`0xc60000-0x7fe0000` (length `0x7380000`). Offsets here include OOB data.

* Dump your original EEPROM. Change the byte at offset `0x49` to `0x1e`
(originally `0x2d` or `0x26`). Remember to re-write the EEPROM with the
modified data.

        * This can be done on Linux via the following command:
    `printf "\x1e" | dd of=/tmp/eeprom.bin bs=1 seek=$((0x49)) conv=notrunc`

**Note**: the device will not boot if you modify the board major number and
have not yet overwritten the `ubi` and `u-boot` regions of NAND.

* Resolder the NAND after overwriting the `u-boot` and `ubi` regions.

OpenWrt Installation:

* After flashing NAND and EEPROM with external programmers. Plug in an
Ethernet cable and power up the device.

* The new U-Boot build uses the space character `" "` (without quotes) to
interrupt boot.

* Interrupt U-Boot and `tftpboot` the OpenWrt initramfs image from your
tftp server
```
dhcp
setenv serverip <your_tftp>
tftpboot openwrt-ipq40xx-generic-meraki_mr70-initramfs-uImage.itb
```

* Once booted into the OpenWrt initramfs, created the `ART` ubivol with
the WiFi radio calibration from the mtd partition:
```
cat /dev/mtd10 > /tmp/ART.bin
ubiupdatevol /dev/ubi0_1 /tmp/ART.bin
```

* `scp` the `sysupgrade` image to
the device and run the normal `sysupgrade` procedure:
```
scp -O openwrt-ipq40xx-generic-meraki_mr70-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/
ssh root@192.168.1.1 "sysupgrade -n /tmp/openwrt-ipq40xx-generic-meraki_mr70-squashfs-sysupgrade.bin"
```

* OpenWrt should now be installed on the device.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22050
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoipq40xx: underdog device tree update
Hal Martin [Wed, 18 Feb 2026 18:11:12 +0000 (19:11 +0100)] 
ipq40xx: underdog device tree update

Underdog devices lack a red LED, use the blue LED for
failsafe mode.

Move all config except device name to underdog.dtsi, as
all known underdog devices (MR20/GR10, MR70/GR60) have identical
device tree.

Signed-off-by: Hal Martin <hal.martin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22050
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoucode-mod-bpf: add CPPFLAGS 22056/head
Hauke Mehrtens [Tue, 17 Feb 2026 21:23:27 +0000 (22:23 +0100)] 
ucode-mod-bpf: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoebtables: add CPPFLAGS
Hauke Mehrtens [Tue, 17 Feb 2026 21:22:44 +0000 (22:22 +0100)] 
ebtables: add CPPFLAGS

Add the OpenWrt CPPFLAGS to the CFLAGS. ebtables does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoarptables: add CPPFLAGS
Hauke Mehrtens [Tue, 17 Feb 2026 21:22:07 +0000 (22:22 +0100)] 
arptables: add CPPFLAGS

Add the OpenWrt CPPFLAGS to the CFLAGS. arptables does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoiwinfo: add CPPFLAGS
Hauke Mehrtens [Tue, 17 Feb 2026 00:19:50 +0000 (01:19 +0100)] 
iwinfo: add CPPFLAGS

Add the OpenWrt CPPFLAGS to the FLAGS. iwinfo does not support CPPFLAGS.
This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agozyxel-bootconfig: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:55:47 +0000 (00:55 +0100)] 
zyxel-bootconfig: add CPPFLAGS

Add the OpenWrt CPPFLAGS to the CFLAGS. zyxel-bootconfig does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoravpower-mcu: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:55:27 +0000 (00:55 +0100)] 
ravpower-mcu: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agowireless-tools: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:55:11 +0000 (00:55 +0100)] 
wireless-tools: add CPPFLAGS

Add the OpenWrt CPPFLAGS to the CFLAGS. wireless-tools does not
support CPPFLAGS. This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoresolveip: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:53:31 +0000 (00:53 +0100)] 
resolveip: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoiwcap: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:53:21 +0000 (00:53 +0100)] 
iwcap: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agolibcap: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:28:23 +0000 (00:28 +0100)] 
libcap: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Allow to extend the CPPFLAGS and not only overwrite.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agobzip2: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 00:48:09 +0000 (01:48 +0100)] 
bzip2: add CPPFLAGS

Add the OpenWrt CPPFLAGS to the CFLAGS. bzip2 does not support CPPFLAGS.
This fixes fortify sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months ago6rd: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 00:47:50 +0000 (01:47 +0100)] 
6rd: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months ago464xlat: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 00:47:01 +0000 (01:47 +0100)] 
464xlat: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agogdb: add CPPFLAGS
Hauke Mehrtens [Tue, 17 Feb 2026 00:19:25 +0000 (01:19 +0100)] 
gdb: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agobinutils: add CPPFLAGS
Hauke Mehrtens [Mon, 16 Feb 2026 23:26:30 +0000 (00:26 +0100)] 
binutils: add CPPFLAGS

Forward the OpenWrt CPPFLAGS to the compile process. This fixes fortify
sources support.

Link: https://github.com/openwrt/openwrt/pull/22056
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agomediatek: dts: drop wrong sgmiisys0 node override 22046/head
Maxim Anisimov [Mon, 16 Feb 2026 09:58:36 +0000 (12:58 +0300)] 
mediatek: dts: drop wrong sgmiisys0 node override

The sgmiisys0 override uses

  /delete-node/ mediatek,pnswap;

but mediatek,pnswap is a property, not a child node. The correct
directive would be /delete-property/. As a result, this statement never
had any effect and the property was never removed.

Drop the incorrect override.

Signed-off-by: Maxim Anisimov <maxim.anisimov.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22046
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agorealtek: rtl930x: add memory mapping documentation 22054/head
Markus Stockhausen [Mon, 16 Feb 2026 21:16:39 +0000 (22:16 +0100)] 
realtek: rtl930x: add memory mapping documentation

No code changes. Just some explanation how these devices
work with physical and logical memory.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22054
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoath79: mr18: use nvmem for MACs 17068/head
Rosen Penev [Thu, 4 Dec 2025 05:23:33 +0000 (21:23 -0800)] 
ath79: mr18: use nvmem for MACs

NVMEM in UBI support has been present for a while. Use it to get the
MACs. Seems caldata needs to continue to be obtained through userspace.

This fixes label-mac-device as it needs a mac-address nvmem cell.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17068
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoqualcommax: move CMCC MR3000D-CI DTS to the DTS dir
Robert Marko [Tue, 17 Feb 2026 19:50:05 +0000 (20:50 +0100)] 
qualcommax: move CMCC MR3000D-CI DTS to the DTS dir

Follow the recent change where all DTS files were moved to a dedicated dir.

Fixes: 3a39f682df5d ("qualcommax: ipq50xx: add support for CMCC MR3000D-CI")
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agouboot-airoha: an7583: fix wrong bits for SPI and SLIC clock 21984/head
Mikhail Kshevetskiy [Tue, 17 Feb 2026 08:40:39 +0000 (11:40 +0300)] 
uboot-airoha: an7583: fix wrong bits for SPI and SLIC clock

The change was taken from commit
https://github.com/Ansuel/openwrt/commit/907386ca6caa491067514643e522f33589463d07

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/21984
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agouboot-airoha: update to U-Boot v2026.01
Mikhail Kshevetskiy [Wed, 11 Feb 2026 14:33:43 +0000 (17:33 +0300)] 
uboot-airoha: update to U-Boot v2026.01

Changes:
 * update to v2026.01 (this brings up EN7523 SoC support)
 * drop upstream patches
 * refresh and adapt an7583 support patches (changes based on
   https://github.com/Ansuel/openwrt/commits/main-airoha-6.12/)
 * add ethernet switch mdio support from upstream U-Boot

Notable changes:
 * make an7583 memory initialization similar to an7581 one
 * add an7583 scu/chip_scu helpers to access scu/chip_scu regmaps.
 * fix misprint in an7583 'system-controller@1fb00000' node name
 * always use board dts for nand partitioning

Notes about en7523 support
--------------------------
This set of patches brings up more or less complete support of EN7523 SoC.
Unfortunately, building of en7523 bootloader will require en7523-bl2.bin
and en7523-bl31.bin blobs which is not available at the moment.

This is the only known blocker for adding en7523 bootloader support.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/21984
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoqualcommax: ipq50xx: add support for CMCC MR3000D-CI 21952/head
Mikhail Zhilkin [Mon, 9 Feb 2026 19:27:10 +0000 (22:27 +0300)] 
qualcommax: ipq50xx: add support for CMCC MR3000D-CI

CMCC MR3000D-CI is a 2.4/5 GHz band 11ax (Wi-Fi 6) router, based on
IPQ5000.

Device specification
--------------------
- SoC : Qualcomm IPQ5018
- RAM : 512 MiB DDR3L
- Flash : 128 MiB SPI-NAND (GigaDevice GD5F1GQ5REYIG)
- WLAN : 2.4/5 GHz 2T2R
-  2.4 GHz : Qualcomm IPQ5018 (SoC)
-  5 GHz : Qualcomm Atheros QCN6102
- Ethernet : 4x 10/100/1000 Mbps
-  Switch : Qualcomm Atheros QCA8337
- LEDs/Keys (GPIO) : 2x LEDs, 2x Buttons
- UART : Through-hole on PCB
-  Voltage : 3.3 V
-  Assignment : Silkscreened on PCB
-  Settings : 115200n8
- Power : 12 VDC, 1.5 A

Installation
-----------------
1. Telnet method
    a. Enable telnet
    Log in to http://192.168.10.1/ with the password on the sticker
    Modify URL according to example (keep your unique hash after ";stok=")
    and press Enter:
    http://192.168.10.1/cgi-bin/luci/;stok=78becad1b1490e45be2776025cde2b7d/api/NPCnetwork/ping?url=$(telnetd)
    You should get the following in the browser:
    {"link":0}

    b. Run tftp server on IP 192.168.10.254 and put factory image
    'openwrt-qualcommax-ipq50xx-cmcc_mr3000d-ci-squashfs-factory.ubi'
    in the tftp root dir.

    c. Login to 192.168.10.1 with telnet (user: root, pass: from the
    sticker).

    d. Download factory image from the tftp:
    tftp -l factory.ubi -r openwrt-qualcommax-ipq50xx-cmcc_mr3000d-ci-squashfs-factory.ubi -g 192.168.10.254

    e. Flash factory image:
    export rootfs=$(cat /proc/mtd | grep rootfs | grep -v _ | cut -d: -f1)
    ubidetach -f -p /dev/${rootfs}
    ubiformat /dev/${rootfs} -y -f /tmp/factory.ubi

    f. Reboot:
    reboot

2. U-Boot Method using UBI Image (using UART)
    a. Place the factory.ubi file on your TFTP server, enter U-Boot CLI
    and exec these commands:
    tftpboot <your_tftp_server_ip>:factory.ubi
    flash rootfs
    reset

3. U-Boot Method using initramfs Image (using UART)
    a. Place the openwrt-*-initramfs-fit-uImage.itb file on your TFTP
    server and rename it to initramfs.bin

    b. Enable serial console, enter to U-Boot CLI and exec these commands:
    tftpboot <your_tftp_server_ip>:initramfs.bin
    bootm

    c. Once boot completed, upload the sysupgrade.bin file to router's
    /tmp directory (using scp or wget) and execute the following command
    in openwrt shell:
    sysupgrade -n /tmp/sysupgrade.bin

MAC Addresses
-------------
+--------------+-------------------+-------------+
| Interface    | MAC example       | Location    |
+--------------+-------------------+-------------+
| LAN          | 84:7a:xx:xx:xx:dd | 0:ART, 0x6  |
| WAN (label)  | 84:7a:xx:xx:xx:dc | 0:ART, 0x0  |
| WLAN 2.4 GHz | 84:7a:xx:xx:xx:de | 0:ART, 0xc  |
| WLAN 5       | 84:7a:xx:xx:xx:df | 0:ART, 0x12 |
+--------------+-------------------+-------------+

Notes
-----
1. U-Boot is protected by a password (pass: netpower).

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21952
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agoipq-wifi: update to Git HEAD (2026-02-17)
Robert Marko [Tue, 17 Feb 2026 19:44:31 +0000 (20:44 +0100)] 
ipq-wifi: update to Git HEAD (2026-02-17)

Link: https://github.com/openwrt/firmware_qca-wireless/pull/124
4b7ccdeadfc0 ipq5018: add BDFs for CMCC MR3000D-CI

Signed-off-by: Robert Marko <robimarko@gmail.com>
3 months agogemini: add support for Teltonika RUT104 22045/head
Linus Walleij [Fri, 13 Feb 2026 23:44:38 +0000 (00:44 +0100)] 
gemini: add support for Teltonika RUT104

Add support for Teltonika RUT104 3G HSUPA router.

This has been supported since about 20 years in the upstream Linux
kernel after initial contribution by Paulius Zaleckas from Teltonika.
It has some historical significance because I think it was one of the
first Teltonika Linux-based 3G routers.

Installation from scratch is done using the UART:

- UART soldering instructions with picture are available on the
  Link: (see bottom of committ message).
- First *diet down* your OpenWrt build as minimal as you can,
  I really mean this, delete everything you don't need. There
  is not much RAM to go around.
- Extract the "factory" firmare which is essentially just a tar.gz
  archive:
  tar xvfz openwrt-gemini-generic-teltonika_rut104-squashfs-factory.bin

From the RedBoot menu:

- Do NOT UNDER ANY CIRCUMSTANCE try to use the "upgrade firmare" (Z)
  alternative!
- Extract the three files zImage, rd.gz and hddapp.tgz from the archive.
- Put these three files in the root directory of your TFTP server
  (usually /var/lib/tftpboot)
- Hit 6 and set up the IP address for your device (e.g. 169.254.1.2 if
  you're using local link).
- Hit Y to "Upgrade Kernel", enter TFTP and your hosts IP number and
  type zImage. The kernel should upload and flash.
- Hit R to "Upgrade Ramdisk", enter TFTP and your hosts IP number and
  type rd.gz. The "ramdisk" (i.e. the second part of the kernel)
  should upload and flash.
- Hit A to "Upgrade Application", enter TFTP and your hosts IP number
  and type hddapp.tgz. The "application" (i.e. the root filesystem)
  should upload and flash.

This has a 1024KB Kernel partition, just extend the existing Make
functions to handle also this. The initramfs is 0x500000 instead
of 0x600000 for this one so add a parameter explicitly parameterizing
the initramfs size.

Mark non-default due to the small RAM and flash on this device.

I currently have no idea how to actually talk to the modem on this
thing but it is probably using the high-speed "modem UART" of the
Gemini. I'd be willing to help whoever wants to experiment with
it.

Link: https://dflund.se/~triad/krad/teltonika/
Link: https://github.com/openwrt/openwrt/pull/22045
Signed-off-by: Linus Walleij <linusw@kernel.org>
3 months agobcm53xx: fix target name of meraki_mx64-a0 22034/head
Edward Chow [Sat, 14 Feb 2026 13:10:05 +0000 (21:10 +0800)] 
bcm53xx: fix target name of meraki_mx64-a0

The target name of meraki_mx64-a0 in
target/linux/bcm53xx/image/Makefile used not to be consistent with the
one defined in target/linux/bcm53xx/base-files/lib/upgrade/platform.sh
and generates warning for "Image check failed" during sysupgrade.

This commit would also make the target name for meraki_mx64-a0 to
conform to the openwrt standard.

Signed-off-by: Edward Chow <equu@openmail.cc>
Link: https://github.com/openwrt/openwrt/pull/22034
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agoath79: add env-size for Sitecom WLR-7100 / WLR-8100 u-boot-env 22030/head
Hauke Mehrtens [Sun, 15 Feb 2026 02:06:53 +0000 (03:06 +0100)] 
ath79: add env-size for Sitecom WLR-7100 / WLR-8100 u-boot-env

The Linux kernel assumes that the u-boot environment covers the full
partition, but it only covers 0x1000 bytes. Linux checks the CRC and
does this over the full partition. This fails like this:
```
u-boot-env-layout 1f000000.spi:flash@0:partitions:partition@30000:nvmem-layout: Invalid calculated CRC32: 0xfcac8c41 (expected: 0x14e6335a)
u-boot-env-layout 1f000000.spi:flash@0:partitions:partition@30000:nvmem-layout: probe with driver u-boot-env-layout failed with error -22
```

Define the u-boot environment with a length of 0x1000 bytes to calculate
the CRC only over this area.

When replicating the u-boot environment with these parameters it
generates the same CRC:
```
mkenvimage -p 0 -b -s 0x1000 -o output.bin input.txt
```

Fixes: https://github.com/openwrt/openwrt/issues/21696
Fixes: 5e3a602def72 ("ath79: sitecom,wlrx100: use nvmem")
Link: https://github.com/openwrt/openwrt/pull/22030
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agobuild: pass CPPFLAGS to cmake build 22042/head
Hauke Mehrtens [Sun, 15 Feb 2026 23:49:15 +0000 (00:49 +0100)] 
build: pass CPPFLAGS to cmake build

The TARGET_CPPFLAGS contain the include paths used by OpenWrt. This also
contains the including of the fortify sources headers. If they are not
provided, the applications will not use fortify sources headers when
compiled against musl. Add them to cmake builds too. cmake does not
support a special CPPFLGS option [0], just add them to CFLAGS and
CXXFLAGS like we also do it for meson and normal make.
This should fix fortify sources support for cmake builds.

I found this explanation for the flags:
 * CFLAGS: C flags, passed during compile AND link
 * CXXFLAGS: C++ flags, passed during compile AND link
 * CPPFLAGS: pre-processor flags, passed ONLY during compile
 * LDFLAGS: linker flags, passed ONLY during link

[0]: https://gitlab.kitware.com/cmake/cmake/-/issues/12928

Link: https://github.com/openwrt/openwrt/pull/22042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agofortify-headers: fix -Werror=format-nonliteral in fortify/stdio.h
Hauke Mehrtens [Sun, 15 Feb 2026 15:45:38 +0000 (16:45 +0100)] 
fortify-headers: fix -Werror=format-nonliteral in fortify/stdio.h

Some applications might activate -Werror=format-nonliteral when building
their application. This breaks fortify headers build. Tell GCC to ignore
such warnings for this code.

This fixes the libubox and ucode build:
```
/include/fortify/stdio.h: In function 'snprintf':
/include/fortify/stdio.h:101:9: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  101 |         return __orig_snprintf(__s, __n, __f, __builtin_va_arg_pack());
      |         ^~~~~~
/include/fortify/stdio.h: In function 'sprintf':
/include/fortify/stdio.h:110:17: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  110 |                 __r = __orig_snprintf(__s, __b, __f, __builtin_va_arg_pack());
      |                 ^~~
/include/fortify/stdio.h:114:17: error: format not a string literal, argument types not checked [-Werror=format-nonliteral]
  114 |                 __r = __orig_sprintf(__s, __f, __builtin_va_arg_pack());
      |                 ^~~
cc1: all warnings being treated as errors
ninja: build stopped: subcommand failed.
```

Link: https://github.com/openwrt/openwrt/pull/22042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 months agofstools: update to Git HEAD (2026-02-15)
Hauke Mehrtens [Tue, 17 Feb 2026 00:23:03 +0000 (01:23 +0100)] 
fstools: update to Git HEAD (2026-02-15)

8d377aa627be libfstools: Rename PATH_MAX to MTD_PATH_MAX

Link: https://github.com/openwrt/openwrt/pull/22042
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>