]> git.ipfire.org Git - thirdparty/openwrt.git/log
thirdparty/openwrt.git
109 min agowifi-scripts: ucode: fix wpa_supplicant mesh main master 21293/head
Nick Hainke [Thu, 25 Dec 2025 19:32:28 +0000 (20:32 +0100)] 
wifi-scripts: ucode: fix wpa_supplicant mesh

Mesh interfaces may not define an encryption setting. This results in
a ucode runtime error when parse_encryption() is called:
  Reference error: left-hand side expression is null
  In parse_encryption(), file /usr/share/ucode/wifi/iface.uc, line 20, byte 32:
    called from function setup_sta (/usr/share/ucode/wifi/supplicant.uc:59:31)
    called from function generate (/usr/share/ucode/wifi/supplicant.uc:243:41)
    called from function setup (./mac80211.sh:254:61)
    called from anonymous function (./mac80211.sh:342:14)
   `    config.auth_type = encryption[0] ?? 'none';`
    Near here ------------------------^

Link: https://github.com/openwrt/openwrt/pull/21293
Signed-off-by: Nick Hainke <vincent@systemli.org>
4 hours agowifi-scripts: add missing 802.11be type in hwmodelist 21267/head
Elwin Huang [Wed, 24 Dec 2025 06:01:32 +0000 (14:01 +0800)] 
wifi-scripts: add missing 802.11be type in hwmodelist

Add EHT* check so that the hwmode will display 802.11be capability correctly.

Signed-off-by: Elwin Huang <s09289728096@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21267
Signed-off-by: Nick Hainke <vincent@systemli.org>
6 hours agowifi-scripts: fix macaddr check in mac80211.uc
Harin Lee [Wed, 24 Dec 2025 19:15:25 +0000 (04:15 +0900)] 
wifi-scripts: fix macaddr check in mac80211.uc

This fixes a simple logic error in the macaddr existence check in mac80211.uc.

Signed-off-by: Harin Lee <me@harin.net>
Link: https://github.com/openwrt/openwrt/pull/21277
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
11 hours agoipq-wifi: update to Git HEAD (2025-12-25)
Robert Marko [Thu, 25 Dec 2025 11:43:16 +0000 (12:43 +0100)] 
ipq-wifi: update to Git HEAD (2025-12-25)

ed56ad0 qcn6122: Add BDF for Linksys MX6200
1f83ec8 ipq5018: Add BDF for Linksys MX6200

Signed-off-by: Robert Marko <robimarko@gmail.com>
35 hours agoqualcommax: ipq50xx: fix reo2host-status interrupt vector 21271/head
George Moussalem [Fri, 19 Dec 2025 07:18:04 +0000 (11:18 +0400)] 
qualcommax: ipq50xx: fix reo2host-status interrupt vector

Interrupt vector for reo2host-status is wrongly assigned.
Status interrupts weren't received and a workaround was applied to
mac80211 to periodically poll the reo status ring. Therefore, the
workaround can be removed with the proper hardware interrupt line
assigned.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21271
Signed-off-by: Robert Marko <robimarko@gmail.com>
36 hours agomicrochipsw: sync with DTS sent upstream
Robert Marko [Tue, 23 Dec 2025 13:08:26 +0000 (14:08 +0100)] 
microchipsw: sync with DTS sent upstream

Sync the DTS with the version sent upstream, clock bindings also.

Signed-off-by: Robert Marko <robert.marko@sartura.hr>
37 hours agoqualcommax: ipq50xx: add support for Linksys MX6200 21038/head
George Moussalem [Mon, 2 Jun 2025 11:21:36 +0000 (15:21 +0400)] 
qualcommax: ipq50xx: add support for Linksys MX6200

Linksys MX6200 is a triband Wi-Fi 6E wireless router.

Speficiations:
* SoC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
* Memory: Nanya NT5CC256M16ER-EK (512 MiB DDR3-933)
* Serial Port: 3v3 TTL 115200n8
* Wi-Fi: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
 QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
 QCN6122 (2x2:2 6 Ghz 802.11an/ac/ax)
* Ethernet: IPQ5018 integrated virtual switch connected to:
    - LAN Port: Internal IPQ5018 GE PHY
    - WAN Port: Maxlinear Ethernet GPY115C PHY
* Flash: Macronix MX35UF2GE4AD (256 MiB)
* LEDs: 1x multi-color PWM LED
* Buttons: 1x WPS (GPIO 27 Active Low)
           1x Reset (GPIO 28 Acive Low)
* FCC ID: 2AYRA-08436

Flash instructions:
************************************************************************
NOTE: serial access is required! Although the web UI allows you to
install the Openwrt image, secure boot is enabled which will prevent
booting an unsigned image. The boot sequence must be adjusted in U-boot
to allow booting unsigned images.
************************************************************************

1. On OEM firmware, login to the web UI (typically @ http://192.168.1.1)
and click 'CA' in the bottom right corner.
Then click -> Connectivity -> Manual Upgrade.
Alternatively, browse to
http://<router IP>/fwupdate.html.
Upload openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-factory.ubi.
Continue with step 5.
2. Installation on alternate partition using serial connection from OEM
firmware (default login: root, password: admin):
flash_erase /dev/mtd19 0 0
nandwrite -p /dev/mtd19 openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-factory.ubi
reboot
Continue with step 5.
3. Installation using serial connection from initramfs
setup tftp server listening on IP in 192.168.1.0/24 (other than the
router IP 192.168.1.1). In U-boot, load the initramfs image to memory:
tftp $loadaddr <your IP>:openwrt-qualcommax-ipq50xx-linksys_mx6200-initramfs-uImage.itb
boot the image using command:
bootm $loadaddr
when fully booted, scp the sysupgrade image to your router IP (default:
192.168.1.1):
scp -O <path>/openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-sysypgrade.bin root@192.168.1.1:/tmp/
use sysupgrade to flash the image to nand:
sysupgrade -n -v /tmp/openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-sysupgrade.bin
Continue with step 5.
4. Optionally install on alternate partition. From Openwrt:
mtd -r -e rootfs_1 -n write openwrt-qualcommax-ipq50xx-linksys_mx6200-squashfs-factory.ubi rootfs_1
Continue with step 5.
5. Setup U-boot for ability to dual boot signed (stock) and non-signed
(Openwrt) images with auto-detection.
From U-boot, run (be aware: copy line by line):
setenv setnandbootargs 'setenv bootargs init=/sbin/init ubi.mtd=rootfs rootfstype=squashfs rootwait'
setenv nandinitcmd 'setenv mtdids nand0=nand0; run setrootfscmd; ubi part rootfs 2048'
setenv setrootfscmd 'if test $boot_part = 1; then setenv mtdparts mtdparts=nand0:0x${imgsize}@0x${prikern}(rootfs); else setenv mtdparts mtdparts=nand0:0x${imgsize}@0x${altkern}(rootfs); fi'
setenv readhdr1cmd 'ubi read $loadaddr kernel 0x40; setexpr IMGOFF $loadaddr + 0x10; setexpr CODEOFF $loadaddr + 0x14; setexpr SIGOFF $loadaddr + 0x1c; setexpr CERTOFF $loadaddr + 0x24'
setenv readhdr2cmd 'setexpr.l HDR *$loadaddr; setexpr.l IMGSZ *$IMGOFF; setexpr.l CODESZ *$CODEOFF; setexpr.l SIGSZ *$SIGOFF; setexpr.l CERTSZ *$CERTOFF; setexpr TSIZE $CODESZ + $SIGSZ; setexpr TSIZE $TSIZE + $CERTSZ'
setenv testmbncmd 'if test $HDR -ne edfe0dd0 -a $IMGSZ -eq $TSIZE; then bootipq; else ubi read $loadaddr kernel $kernsize; run setnandbootargs; bootm $loadaddr; fi'
setenv bootcmd2 'if test $auto_recovery = no; then bootipq; else run nandinitcmd; run readhdr1cmd; run readhdr2cmd; run testmbncmd; fi'
setenv bootcmd 'run bootcmd2'
saveenv
6. Back to the OEM firmware.
Download firmware from OEM website:
MX6200: https://support.linksys.com/kb/article/408-en/
From serial/SSH, in Openwrt, flash OEM firmware to alternate partition:
mtd -r -e rootfs_1 -n write FW_MX6200_1.0.11.216041_prod.signed.img rootfs_1

Switching active partition:
1. From U-boot, executive the following to switch to partition 1:
setenv boot_part 1
for partition 2:
setenv boot_part 2
2. From Openwrt:
fw_printenv boot_part
In case it's 1:
fw_setenv boot_part 2
. /lib/upgrade/platform.sh
linksys_bootconfig_set_primaryboot "0:bootconfig" 1
linksys_bootconfig_set_primaryboot "0:bootconfig1" 1
In case it's 2:
fw_setenv boot_part 1
. /lib/upgrade/platform.sh
linksys_bootconfig_set_primaryboot "0:bootconfig" 0
linksys_bootconfig_set_primaryboot "0:bootconfig1" 0
and
reboot

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agoqualcommax: ipq50xx: upgrade SMEM dualboot Linksys devices
George Moussalem [Thu, 4 Dec 2025 05:20:00 +0000 (09:20 +0400)] 
qualcommax: ipq50xx: upgrade SMEM dualboot Linksys devices

Add support for upgrades on dual firmware Linksys devices with the
partition table stored in SMEM and that store both the kernel and rootfs
in a single partition. Switching the active boot partition requires
updating the partition info table in SMEM in addition to setting
the active boot partition in a U-boot variable as U-boot will keep them
in sync upon reboot if they're not.

U-boot always sets the name of the active partition to rootfs and that
of the inactive partition to rootfs_1 in SMEM. when Linux loads the
partition table from SMEM it will load the right partition based on the
offset set in the SMEM partition table. For upgrades, flashing to the
alternate partition will always be to rootfs_1, while flashing the
current partition will be on rootfs.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agoqualcommax: ipq50xx: functions for bootconfig partition
George Moussalem [Wed, 3 Dec 2025 19:22:09 +0000 (23:22 +0400)] 
qualcommax: ipq50xx: functions for bootconfig partition

The BOOTCONFIG partition is used by Qualcomm's boot chain to store
metadata about the device's startup configuration. It contains info such
as versioning, configuration flags, primary boot partition, and more.

Newer devices with dual boot partitions not only store the active boot
partition in a U-boot variable but also in partition info in the
BOOTCONFIG partition. As such, add library functions to set and toggle
the active boot partition.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agoqualcommax: ipq50xx: move bootargs to Linksys board files
George Moussalem [Tue, 9 Dec 2025 11:12:32 +0000 (15:12 +0400)] 
qualcommax: ipq50xx: move bootargs to Linksys board files

Move setting kernel bootargs from the base template down to the
respective Linksys board files. This allows for having devices which
require different bootargs use the base template device tree file.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agoqualcommax: ipq50xx: load Linksys partition tables from SMEM
George Moussalem [Tue, 9 Dec 2025 11:04:56 +0000 (15:04 +0400)] 
qualcommax: ipq50xx: load Linksys partition tables from SMEM

The partition table on Linksys devices with a Qualcomm AX IPQ SoC is
stored in SMEM. As such, load partition table from SMEM rather than
statically defining them in their respective device trees. This helps
generalize the base template and requires less maintenance.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21038
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agoqualcommax: ipq50xx: remove ipq5018 and qcn6122 wifi m3 fw 21110/head
George Moussalem [Tue, 9 Dec 2025 11:47:06 +0000 (15:47 +0400)] 
qualcommax: ipq50xx: remove ipq5018 and qcn6122 wifi m3 fw

The current ath11k driver does not support loading m3 firmware for
IPQ5018 and QCN6122 wifi. Although m3 firmware entries are specified
in Q6 WCSS nodes, the driver actually skips loading them. Editing the
driver to force loading m3 results in Q6 crashes and non-functioning
wifi. As such, remove m3 firmware entries for all boards until there's
proper support in the ath11k driver.

Signed-off-by: George Moussalem <george.moussalem@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21110
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agotoolchain: fix libgcc ABI for libc 21265/head
George Sapkin [Wed, 24 Dec 2025 02:32:01 +0000 (04:32 +0200)] 
toolchain: fix libgcc ABI for libc

libc depends on knowing libgcc's ABI, so it needs to be evaluated first.
Otherwise libc will depend on an ABI-less libgcc causing the rest of the
toolchain to fail.

Building package index...
ERROR: unable to select packages:
  libgcc (virtual):
    note: please select one of the 'provided by'
          packages explicitly
    provided by: libgcc1
    required by: world[libgcc]

Before:

libc fused dependencies: libgcc
libgcc fused dependencies:
libatomic fused dependencies: libgcc1

After:

libgcc fused dependencies:
libc fused dependencies: libgcc1
libatomic fused dependencies: libgcc1

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21265
Signed-off-by: Robert Marko <robimarko@gmail.com>
37 hours agobuild: fix missing PKG_INFO_DIR
George Sapkin [Wed, 24 Dec 2025 02:28:49 +0000 (04:28 +0200)] 
build: fix missing PKG_INFO_DIR

If the first built package has an ABI, PKG_INFO_DIR might not exist, so
ensure it does.

Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21265
Signed-off-by: Robert Marko <robimarko@gmail.com>
2 days agorealtek: pcs: rtl931x: add helper for SerDes power up/down 21184/head
Jonas Jelonek [Mon, 15 Dec 2025 19:41:16 +0000 (19:41 +0000)] 
realtek: pcs: rtl931x: add helper for SerDes power up/down

Add a dedicated helper 'rtpcs_931x_sds_power' to power down/up a SerDes.
Up to now, plain register writes to the corresponding register were used
in several places and with slightly different syntax. Use the helper to
replace the existing boilerplate code for powering on/off SerDes.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rtl931x: separate and reuse 1000base-x config
Jonas Jelonek [Sun, 14 Dec 2025 11:54:15 +0000 (11:54 +0000)] 
realtek: pcs: rtl931x: separate and reuse 1000base-x config

Move the configuration of 1000Base-X mode into its own function. This
way, redundant code can be replaced by a single function call.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rtl931x: reorder modes in mode configuration
Jonas Jelonek [Mon, 15 Dec 2025 18:45:54 +0000 (18:45 +0000)] 
realtek: pcs: rtl931x: reorder modes in mode configuration

Reorder the modes within the switch statement in
rtpcs_931x_sds_config_mode to have a proper and non-confusing order.
Have fiber modes first and MII modes after, and sort all modes in
ascending speed/capabilities order.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rtl931x: use hardware mode for configuration
Jonas Jelonek [Mon, 15 Dec 2025 17:44:00 +0000 (17:44 +0000)] 
realtek: pcs: rtl931x: use hardware mode for configuration

Pass the SerDes hardware mode to rtpcs_931x_sds_config_mode instead of
the PHY_INTERFACE_MODE_* mode and use it. Replace matched modes
accordingly.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rtl931x: map interface mode to hardware mode
Jonas Jelonek [Mon, 15 Dec 2025 17:37:01 +0000 (17:37 +0000)] 
realtek: pcs: rtl931x: map interface mode to hardware mode

The PCS driver is intended to use a dedicated hardware mode in the
future because the hardware capabilities and modes of the SerDes do not
align with the PHY_INTERFACE_MODE_* modes.

For the beginning, use the previously introduced generic mode mapping
in the SerDes setup and assign the determined hardware mode to the
corresponding field of a SerDes instance. This allows parallel usage of
both mode representations for the time being, until the phy_interface_t
modes can be dropped from internal functions completely.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rtl931x: move SerDes config out of setup
Jonas Jelonek [Sun, 14 Dec 2025 11:34:34 +0000 (11:34 +0000)] 
realtek: pcs: rtl931x: move SerDes config out of setup

Slim the rtpcs_931x_setup_serdes entrypoint by moving the SerDes
configuration sequences for the different SerDes modes into a dedicated
function called rtpcs_931x_sds_config_mode. They form a logical block
similar to what the SDK does and can be taken out to follow the
'divide & conquer' principle.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rtl931x: don't return error on USXGMII setup
Jonas Jelonek [Tue, 11 Nov 2025 09:55:42 +0000 (09:55 +0000)] 
realtek: pcs: rtl931x: don't return error on USXGMII setup

Configuring USXGMII on RTL931X was disable because it is not setup
properly right now. Affected devices need to rely on U-boot setup for
now. However, it is not the proper way to return an error in case we
just want to skip USXGMII configuration. Thus, just return 0 in that
case indicating it is properly configured.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: add mapping for SerDes hardware mode
Jonas Jelonek [Fri, 19 Dec 2025 10:11:06 +0000 (10:11 +0000)] 
realtek: pcs: add mapping for SerDes hardware mode

Add a generic mapper for mapping the PHY_INTERFACE_MODE_* modes to the
SerDes hardware modes RTPCS_SDS_MODE_*. This is to be used by all
subtargets step-by-step and avoids having subtarget-specific code for
that simple mapping.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: pcs: rename SerDes mode field
Jonas Jelonek [Wed, 17 Dec 2025 21:33:17 +0000 (21:33 +0000)] 
realtek: pcs: rename SerDes mode field

Rename the mode field in rtpcs_serdes from 'mode' to 'hw_mode' to make
clear what it actually is, to avoid confusion with the phy_interface_t
'mode' usually passed to functions.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21184
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agotreewide: dts: update rtl836x switch sck/sda gpio properties 21143/head
Shiji Yang [Fri, 12 Dec 2025 13:43:39 +0000 (21:43 +0800)] 
treewide: dts: update rtl836x switch sck/sda gpio properties

Rename them to follow the rtl836x driver gpiod changes.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21143
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agokernel: rtl836x: convert to gpiod API
Shiji Yang [Fri, 12 Dec 2025 13:39:40 +0000 (21:39 +0800)] 
kernel: rtl836x: convert to gpiod API

This is the recommended way for the OF based platform.

Tested-on TP-Link TL-WR2543N with RTL8367 switch:
```
root@OpenWrt:~# dmesg |grep -i rtl
[    7.941126] rtl8367 rtl8367: cannot find mdio node phandle
[    7.947562] rtl8367 rtl8367: RTL8367R ver. 0 chip found
[    9.056830] rtl8367 rtl8367: cpu_port:9, assigned to extif0
root@OpenWrt:~# cat /sys/kernel/debug/gpio
gpiochip0: GPIOs 512-529, parent: platform/18040000.gpio, 18040000.gpio:
 gpio-512 (                    |lime:status         ) out lo ACTIVE LOW
 gpio-513 (                    |rtl836x-sda         ) in  hi
 gpio-518 (                    |rtl836x-sck         ) in  lo
 gpio-520 (                    |lime:usb            ) out hi ACTIVE LOW
 gpio-523 (                    |reset               ) in  hi IRQ ACTIVE LOW
 gpio-524 (                    |wps                 ) in  hi IRQ ACTIVE LOW
```

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21143
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agokernel: rtl836x: change missing mdio node log level to info
Shiji Yang [Fri, 12 Dec 2025 16:40:41 +0000 (00:40 +0800)] 
kernel: rtl836x: change missing mdio node log level to info

mdio node is optional for the rtl836x switch. Some devices use GPIO to
control the switch chip. Missing mdio is a normal behavior.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21143
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agokernel: rtl836x: directly defer probe when mdio is missing
Shiji Yang [Mon, 15 Dec 2025 11:37:03 +0000 (19:37 +0800)] 
kernel: rtl836x: directly defer probe when mdio is missing

If the switch is directly controlled by the mdio bus, we must ensure
that the mdio bus is ready instead of trying GPIO simulated bus.

Fixes: d4ac26ec4920 ("kernel: rtl8366-smi: add Realtek switch management via mii-bus")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21143
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agocryptodev-linux: add backport to build for 6.18 21190/head
John Audia [Tue, 16 Dec 2025 21:42:12 +0000 (16:42 -0500)] 
cryptodev-linux: add backport to build for 6.18

Add https://github.com/cryptodev-linux/cryptodev-linux/commit/08644db02d43478f802755903212f5ee506af73b
to allow builds against the 6.18 series of kernels.

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21190
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agostrace: update to 6.18 21206/head
John Audia [Wed, 17 Dec 2025 20:46:11 +0000 (15:46 -0500)] 
strace: update to 6.18

Release Notes:
- https://github.com/strace/strace/releases/tag/v6.18

Note this updated is needed in order to fix a build failure with
the 6.18 kernel.

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21206
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: decouple from soc_info 21183/head
Markus Stockhausen [Tue, 16 Dec 2025 10:29:04 +0000 (11:29 +0100)] 
realtek: ethernet: decouple from soc_info

The ethernet driver gets all the data from the DTS now. No need
to access the shared soc_info structure any longer.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: switch to new family_id location
Markus Stockhausen [Tue, 16 Dec 2025 10:23:58 +0000 (11:23 +0100)] 
realtek: ethernet: switch to new family_id location

family_id is now part of the register set and automatically assigned
during initialization. Make use of it. This is basically a conversion
from priv->family_id to priv->r->family_id.

While we are here convert some hard coded family ids to their proper
defines.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: switch to device_get_match_data()
Markus Stockhausen [Tue, 16 Dec 2025 10:19:52 +0000 (11:19 +0100)] 
realtek: ethernet: switch to device_get_match_data()

Now that the register configuration contains the family data derive it
from the DTS via device_get_match_data().

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: provide soc family in register config
Markus Stockhausen [Tue, 16 Dec 2025 09:58:22 +0000 (10:58 +0100)] 
realtek: ethernet: provide soc family in register config

The ethernet driver currently determines the family from the soc_info
structure. To avoid the dependency add the family to the local register
structure.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: relocate ethernet below switchcore in DTS
Markus Stockhausen [Tue, 16 Dec 2025 09:03:03 +0000 (10:03 +0100)] 
realtek: ethernet: relocate ethernet below switchcore in DTS

The ethernet driver uses registers in the switchcore range.
Rearrange the DTS nodes accordingly. This allows to make use
of regmap with syscon_node_to_regmap(np->parent) later.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: drop devm_request_mem_region()
Markus Stockhausen [Tue, 16 Dec 2025 12:28:56 +0000 (13:28 +0100)] 
realtek: ethernet: drop devm_request_mem_region()

The ethernet driver currently "requests" the memory region of the
ethernet device according to the DTS settings. This is wrong in
two ways:

- The DTS uses arbitrary regions out of the switchcore memory
- The variable is afterwards overwritten by DMA allocation

Drop it.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: ethernet: split ethernet compatibles
Markus Stockhausen [Tue, 16 Dec 2025 08:41:37 +0000 (09:41 +0100)] 
realtek: ethernet: split ethernet compatibles

The Realtek Otto ethernet driver currently uses a single compatible
for all different models. Split this into the the four well known
subtargets. This allows to get rid of the central mach/soc include
later.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21183
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: phy: reorganize package handling 21204/head
Markus Stockhausen [Wed, 17 Dec 2025 19:07:36 +0000 (20:07 +0100)] 
realtek: phy: reorganize package handling

With kernel 6.18 the package shared structure will be hidden from
the phy drivers. Workaround that in advance by providing a shared
private structure that covers all information that is needed for
normal operation.

For further simplification provide a new join() function that takes
care of a consistent initialization.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21204
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agomediatek: filogic: asus,rt-ax57m: remove unused pinctrl groups
Daniel Golle [Tue, 23 Dec 2025 14:49:48 +0000 (14:49 +0000)] 
mediatek: filogic: asus,rt-ax57m: remove unused pinctrl groups

Remove unused pinctrl groups defined in the device tree, probably as a
result of importing the vendor device tree which is based on the
reference board from MediaTek's SDK.

114b5c2063 ("mediatek: filogic: Add support ASUS RT-AX57M")
Signed-off-by: Daniel Golle <daniel@makrotopia.org>
2 days agomediatek: filogic: Add support ASUS RT-AX57M 20491/head
Garrett Mesmer [Tue, 8 Jul 2025 09:50:14 +0000 (12:50 +0300)] 
mediatek: filogic: Add support ASUS RT-AX57M

ASUS RT-AX57M, RT-AX54HP V2, RT-AX1800HP V2, RT-AX1800S V2, and RT-AX3000S all use the same firmware and have identical hardware

Hardware
--------
SOC: MediaTek MT7981b
RAM: 256MB DDR3L (Winbond W632GU6NB-09)
FLASH: 128MB SPI-NAND (Winbond W25N01KVZEIR)
WIFI: Mediatek MT7981b + Mediatek MT7976DAN 802.11ax 2.4/5 GHz
ETH: MediaTek MT7531AE Switch
UART: 3V3 115200 8N1 (Pinout silkscreened / Do not connect VCC)

MAC addresses
-------------
LAN Label MAC (stored in mtd ubi Factory partition at offset 0x4)
WAN LAN
2.4G LAN + 2 in first octet
5G LAN

Installation
-----------------------------------------------------------
Vendor-UI Method
-----------------------------------------------------------
1. Download the OpenWrt initramfs.trx image.

2. Connect the PC via LAN to one of the yellow router ports and wait
   until your PC to get a DHCP lease.

3. Browse to http://192.168.1.1 (or whatever your router IP is configured as)

4. If your router is brand new, finish the setup process and log into
   the Web-UI.

5. Navigate to Administration -> Firmware Upgrade and upload the
   downloaded OpenWrt initramfs.trx image.

6. Wait for OpenWrt to boot. Open the default OpenWrt IP in a web browser and perform a system upgrade using the sysupgrade image as instructed in the top banner.

---------------------------------------------------------------------------
Revert to stock firmware:
1: Install package facinstall -> https://forum.openwrt.org/t/facinstall-package-for-easy-installation-factory-images/177587
2. Install Asus stock trx image via OpenWRT LuCI interface.

Signed-off-by: Garrett Mesmer <garrettmesm@gmail.com>
Co-authored-by: Oleg S <remittor@gmail.com>
Signed-off-by: Oleg S <remittor@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20491
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: image: add rt-loader-no-uimage recipe 21248/head
Jonas Jelonek [Mon, 22 Dec 2025 09:57:52 +0000 (09:57 +0000)] 
realtek: image: add rt-loader-no-uimage recipe

Add a new recipe 'rt-loader-no-uimage' that passes the kernel load
address to rt-loader, causing it to use that instead of it's initial run
address.

The usual behavior is fine for uImages where the load address is
predefined in the header, U-boot loads the image to that address and
then runs it, rt-loader just takes over that address. For non-uImage
instead, the address is tightly coupled to where the image has been
transferred during serial or TFTP upload. This may not be possible on
several devices. Passing a separate kernel load address to rt-loader
decouples that and avoids taking the pain to change the load address of
the kernel itself.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21248
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agorealtek: rt-loader: allow arbitrary kernel load address
Jonas Jelonek [Sun, 21 Dec 2025 23:13:10 +0000 (23:13 +0000)] 
realtek: rt-loader: allow arbitrary kernel load address

rt-loader currently has two operation modes, piggy-backed and
standalone. In standalone mode, the kernel load address is read from the
uImage in flash. In piggy-backed mode, rt-loader instead uses its
initial run address (aka run address during first run) as the kernel
load address. This is safe and works fine for all devices either using
U-boot or having no issue uploading an image to the default kernel load
address 0x80100000.

To extend usecases, allow to specify a kernel load address when
building rt-loader. In this case, rt-loader uses this address instead of
the address inferred at runtime.

On certain Zyxel devices, this allows to upload and boot an rt-loader
piggy-backed image to an alternate address but keep the default kernel
load address of 0x80100000. BootExt on these devices occupies memory
above and will crash during transfer when this address is used as upload
location. Using this extension, the image can be uploaded to e.g.
0x80300000 and rt-loader will use 0x80100000 as the final load address.
This avoid taking the pain the adjust the load address of the kernel
itself.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21248
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agoath79: fix build of big images for TP RE355v1, RE450v1 & v2 21158/head
Radek Dostál [Sun, 14 Dec 2025 09:37:06 +0000 (10:37 +0100)] 
ath79: fix build of big images for TP RE355v1, RE450v1 & v2

After merge of https://github.com/openwrt/openwrt/pull/20709 I noticed,
that https://mirror-03.infra.openwrt.org/snapshots/targets/ath79/tiny/
still does not contain the build for RE450.

I analyzed the problem and noticed, that only builds which fits into
original size can be build and if the image is larger, it fails with
the following error: "WARNING: Image file .../openwrt/build_dir/
target-mips_24kc_musl/linux-ath79_tiny/tmp/
openwrt-ath79-tiny-tplink_re450-v1-squashfs-sysupgrade.bin is too big:
  > 7864320".

This error is quite misleading as the image is smaller than 7864320. The
reason for this error is that default tplink-safeloader has hardcoded
factory partition structure and fails to generate any file.

Rather then fixing tplink-safeloader I followed approach from commit
ebd5e5fb5359 ("ramips: switched TP-Link RE305 v1 to new partition layout")
and switched away from "tplink-safeloader sysupgrade".

I did not include "IMAGES := sysupgrade.bin", because with tiny target it
is still possible to locally build even factory image.

Fixes commit e768731dc8e9 ("ath79: switch TP-Link RE355 v1, RE450 v1 and
RE450 v2 to mtd-concat").

Signed-off-by: Radek Dostál <rd@radekdostal.com>
Link: https://github.com/openwrt/openwrt/pull/21158
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agobuild: fix apk packaging and ABI-versioning 20819/head
George Sapkin [Wed, 19 Nov 2025 23:50:03 +0000 (01:50 +0200)] 
build: fix apk packaging and ABI-versioning

The updated logic for the APK dependencies and provides is as follows:

- If ABI version is defined:
  - package is named `package_name-ABI_version`
  - package implicitly provides
    `package_name-ABI_version=package_version`
    this implies that only one version of a package per ABI can be
    installed at the same time
  - additionally provide `package_name` so multiple packages can be
    looked up by its base name
  - for each `provides`, provide `provide-ABI_version=package_version`
    this implies that only one version of a provide can be installed at
    the same time

- else if ABI version is _not_ defined
  - package is named `package_name`
  - package implicitly provides `package_name=package_version`
    this implies that only one version of a package can be installed at
    the same time
  - if `alternatives` is defined
    - for each `provides`, provide `provide`
      this implies that multiple versions of a provide can be installed
      at the same time
  - else if `alternatives` is _not_ defined
    - for each `provides`, provide `provide=package_version`
      this implies that only one version of a provide can be installed
      at the same time

Both cases a package can be looked up by its base name.

ABI version `alternatives`, `conffiles`, `conffiles_static`, `list` and
`rusers` files so multiple versions of the same ABI package can be
installed side by side, and so they don't overwrite each other's
packaging files.

ABI version `EXTRA_DEPENDS` so dependencies can be correctly looked up
using the existing OpenWrt semantics without the ABI specified. This is
needed since ABI-versioned libraries no longer provide
`package_name=package_version`, so that they can be installed side by
side.

Remove duplicate dependencies when `EXTRA_DEPENDS` specifies a versioned
one that is already in `DEPENDS`.

ABI is defined
------------------------------------------------------------------------

`libsqlite3` has `PROVIDES` set to `libfake` and has two different ABI
versions installed. `libfake` is just an example to demonstrate the
mechanics, as the library can already be depended upon using e.g.
`libsqlite3-0=3.51.0-r1`. Note the ABI-versioned lists.

```
root@OpenWrt:/tmp# apk add --allow-untrusted ./libsqlite3-0-3.51.0-r1.apk
(1/1) Installing libsqlite3-0 (3.51.0-r1)
libsqlite3-0-3.51.0-r1.post-install: Executing script...
OK: 22 MiB in 157 packages

root@OpenWrt:/tmp# apk add --allow-untrusted ./libsqlite3-1-4.00.0-r1.apk
(1/1) Installing libsqlite3-1 (4.00.0-r1)
libsqlite3-1-4.00.0-r1.post-install: Executing script...
OK: 23 MiB in 158 packages

root@OpenWrt:/tmp# apk query --fields name,version,contents,provides libsqlite3-0 libsqlite3-1
Name: libsqlite3-0
Version: 3.51.0-r2
Provides: libfake-0=3.51.0-r2 libsqlite3
Contents:
  lib/apk/packages/libsqlite3-0.list
  usr/lib/libsqlite3.so.0
  usr/lib/libsqlite3.so.3.51.0

Name: libsqlite3-1
Version: 4.00.0-r1
Provides: libfake-1=4.00.0-r1 libsqlite3
Contents:
  lib/apk/packages/libsqlite3-1.list
  usr/lib/libsqlite3.so.1
  usr/lib/libsqlite3.so.4.00.0

root@OpenWrt:/tmp# ls -lh /usr/lib/libsqlite3.so.*
lrwxrwxrwx    1 root     root          20 Nov 20 00:23 /usr/lib/libsqlite3.so.0 -> libsqlite3.so.3.51.0
lrwxrwxrwx    1 root     root          20 Nov 20 00:27 /usr/lib/libsqlite3.so.1 -> libsqlite3.so.4.00.0
-rwxr-xr-x    1 root     root        1.0M Nov  6 18:19 /usr/lib/libsqlite3.so.3.51.0
-rwxr-xr-x    1 root     root        1.0M Nov  6 18:19 /usr/lib/libsqlite3.so.4.00.0
```

ABI is not defined
------------------------------------------------------------------------

Both `avahi-dbus-daemon` and `avahi-nodbus-daemon` provide `avahi-daemon`,
but have no ABI specified. This results in `avahi-daemon=0.8-r11` provides
for both packages and only one being able to be installed at the same time:

```
root@OpenWrt:/tmp# apk add --allow-untrusted ./avahi-nodbus-daemon-0.8-r11.apk
(1/4) Installing libavahi-nodbus-support (0.8-r10)
libavahi-nodbus-support-0.8-r10.post-install: Executing script...
(2/4) Installing libdaemon (0.14-r5)
libdaemon-0.14-r5.post-install: Executing script...
(3/4) Installing libexpat (2.7.3-r1)
libexpat-2.7.3-r1.post-install: Executing script...
(4/4) Installing avahi-nodbus-daemon (0.8-r11)
avahi-nodbus-daemon-0.8-r11.post-install: Executing script...
23 MiB in 160 packages

root@OpenWrt:/tmp# apk query --fields provides avahi-nodbus-daemon
Provides: avahi-daemon=0.8-r11

root@OpenWrt:/tmp# apk add --allow-untrusted ./avahi-dbus-daemon-0.8-r11.apk
ERROR: unable to select packages:
  avahi-dbus-daemon-0.8-r11:
    conflicts: avahi-nodbus-daemon-0.8-r11[avahi-daemon=0.8-r11]
    satisfies: world[avahi-dbus-daemon><Q1R111s+ke9Vf+eCxDHX2BZVUK54Q=]
  avahi-nodbus-daemon-0.8-r11:
    conflicts: avahi-dbus-daemon-0.8-r11[avahi-daemon=0.8-r11]
    satisfies: world[avahi-nodbus-daemon><Q1BAu7nLI2MgRabpveLTGO2ksQz7E=]
```

Provides and alternatives
------------------------------------------------------------------------

Both `uclient-fetch` and `wget-nossl` provide `wget` and specify
alternatives, so provides are not versioned and both packages can be
installed at the same time:

```
root@OpenWrt:/tmp# apk query --fields name,version,contents,provides uclient-fetch wget-nossl
Name: uclient-fetch
Version: 2025.10.03~dc909ca7-r1
Provides: wget
Contents:
  bin/uclient-fetch
  lib/apk/packages/uclient-fetch.alternatives
  lib/apk/packages/uclient-fetch.list

Name: wget-nossl
Version: 1.25.0-r1
Provides: gnu-wget wget
Contents:
  lib/apk/packages/wget-nossl.alternatives
  lib/apk/packages/wget-nossl.list
  usr/libexec/wget-nossl

```

Fixes: https://github.com/openwrt/openwrt/issues/20582
Fixes: https://github.com/openwrt/openwrt/issues/20802
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/20819
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agomediatek: fix pwn fan settings for sinovoip bpi-r3 (v3) 17130/head
Mikhail Kshevetskiy [Thu, 21 Nov 2024 22:29:06 +0000 (01:29 +0300)] 
mediatek: fix pwn fan settings for sinovoip bpi-r3 (v3)

Popular cheap PWM fans for this machine, like the ones coming in
heatsink+fan combos will not work properly at the currently defined
medium speed. Trying different pwm setting using a command

  echo $value > /sys/devices/platform/pwm-fan/hwmon/hwmon1/pwm1

I found:

  pwm1 value     fan rotation speed   cpu temperature     notes
  -----------------------------------------------------------------
    0            maximal              31.5 Celsius        too noisy
   40            optimal              35.2 Celsius        no noise hearable
   95            minimal
   above 95      does not rotate      55.5 Celsius
  -----------------------------------------------------------------

Current cooling levels are:

cooling-levels = <255 96 0>;

Thus only cpu-active-high and cpu-active-low modes are usable.
This patch fixes cpu-active-medium settings for bpi-r3 board.

This patch may not be enough. Users may wants to tweak their thermal_zone0
trip points, thus tuning fan rotation speed depending on cpu temperature.
That can be done on the base of the following example:

  === example =========
  # cpu temperature below 25 Celsius degrees, no rotation
  echo 25000 > /sys/class/thermal/thermal_zone0/trip_point_4_temp
  # cpu temperature in [25..32] Celsius degrees, normal rotation speed
  echo 32000 > /sys/class/thermal/thermal_zone0/trip_point_3_temp
  # cpu temperature above 50 Celsius degrees, max rotation speed
  echo 50000 > /sys/class/thermal/thermal_zone0/trip_point_2_temp
  =====================

Changes v2:
* put patch to a proper directory
* updated patch description
* tested with latest openwrt based on linux-6.6

Changes v3:
* use upstream linux patch
* update patch description

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/17130
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agotools/xz: update to 5.8.2 21208/head
Shiji Yang [Thu, 18 Dec 2025 13:26:36 +0000 (21:26 +0800)] 
tools/xz: update to 5.8.2

Release Notes:
https://github.com/tukaani-project/xz/releases/tag/v5.8.2

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21208
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agomvebu: enable tickless idle 21136/head
Qingfang Deng [Fri, 12 Dec 2025 02:53:11 +0000 (10:53 +0800)] 
mvebu: enable tickless idle

Switch to NO_HZ_IDLE for energy saving. Also enable Menu cpuidle
governor for tickless systems.

Run-tested: Linksys WRT1900AC v2

Signed-off-by: Qingfang Deng <dqfext@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21136
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 days agoarm-trusted-firmware-mediatek: use MT/s as DDR speed unit 21131/head
Shiji Yang [Thu, 11 Dec 2025 11:16:56 +0000 (19:16 +0800)] 
arm-trusted-firmware-mediatek: use MT/s as DDR speed unit

Usually we do not use MHz to describe the DDR transmission rate. In
fact, the clock frequency of the DDR3-1866 is only 933 MHz. MT/s is
a more commonly used unit.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
5 days agokernel: add option for USB FunctionFS gadget 21207/head
Dominic Germain [Fri, 19 Dec 2025 14:46:57 +0000 (09:46 -0500)] 
kernel: add option for USB FunctionFS gadget

Add menuconfig option 'kmod-usb-gadget-fs' for the USB FunctionFS gadget
module

OpenWRT is perfect for USB gadgets that are network-enabled, since it
provides everything needed to easily manage the device. Having support
for the FunctionFS gadget enables the use of any custom USB devices
that does not have a specific module, like Media Transfer Protocol.

Signed-off-by: Dominic Germain <dominic@germain.cc>
Link: https://github.com/openwrt/openwrt/pull/21207
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agomediatek: filogic: TP-Link Archer AX80 v1 (EU) support 20630/head
Emre Yavuzalp [Sun, 30 Nov 2025 15:53:51 +0000 (18:53 +0300)] 
mediatek: filogic: TP-Link Archer AX80 v1 (EU) support

Device specification

SoC Type: MediaTek MT7986B, Cortex-A53, 64-bit 1.6GHz Quad Core
RAM: ESMT M15T4G16256 (512MB)
Flash: ESMT F50L1G41LB (128 MB)
Ethernet: MediaTek MT7531AE + 2.5GbE MaxLinear GPY211C0VC (SLNW8)
Ethernet: 1x2.5Gbe (WAN/LAN 2.5Gbps), 4xGbE (WAN/LAN 1Gbps, LAN1, LAN2, LAN3)
WLAN 2g: MediaTek MT7975
WLAN 5g: MediaTek MT7975
LEDs: All White(probably)

Buttons: 4 (Reset,ledswitch,wps,wlan),
USB ports: 1 (USB 3.0)
Power: 12 VDC, 2.0 A
Connector: Barrel
Bootloader: Main U-Boot - U-Boot 2022.01-rc4. Additionally, both UBI
slots contain "seconduboot" (also U-Boot 2022.01-rc4)
Serial console (UART)

                            V
+-------+-------+-------+-------+
| +3.3V |  GND  |  TX   |  RX   |
+---+---+-------+-------+-------+
    |
    +--- Don't connect

CPU BLOCK HERE                                                         LAN PORTS HERE

Installation (UART)
Note: There might be methods without UART possible soon.
Place OpenWrt initramfs image on tftp server with IP 192.168.1.2

Attach UART, switch on the router and interrupt the boot process by pressing 'Ctrl-C'

Load and run OpenWrt initramfs image:

      tftpboot initramfs-kernel.bin
      bootm

!!Attention!! is very important! After entering OpenWrt, please set / update the environment variables:

fw_setenv bootargs "ubi.mtd=ubi0 console=ttyS0,115200n1 loglevel=8 earlycon=uart8250,mmio32,0x11002000 init=/etc/preinit"
fw_setenv mtdids "spi-nand0=spi-nand0"
fw_setenv mtdparts "spi-nand0:2M(boot),1M(u-boot-env),50M(ubi0),50M(ubi1),8M(userconfig),4M(tp_data),8M(mali_data)"
fw_setenv tp_boot_idx 0

Run 'sysupgrade -n' with the sysupgrade OpenWrt image from console or Luci WebUI.

Recovery

Press Reset button and power on the router
Navigate to U-Boot recovery web server (192.168.1.1) and upload the OEM firmware

Stock layout

0x000000000000-0x000000200000 : "boot"
0x000000200000-0x000000300000 : "u-boot-env"
0x000000300000-0x000003500000 : "ubi0"
0x000003500000-0x000006700000 : "ubi1"
0x000006700000-0x000006f00000 : "userconfig"
0x000006f00000-0x000007300000 : "tp_data"
0x000007300000-0x000007B00000 : "mali_data"

ubi0/ubi1 format
U-Boot at boot checks that all volumes are in place:

+-------------------------------+
| Volume Name: uboot Vol ID: 0|
| Volume Name: kernel Vol ID: 1|
| Volume Name: rootfs Vol ID: 2|
+-------------------------------+
MAC addresses
+---------+-------------------+-----------+
| label | 00:eb:xx:xx:xx:be | label |
| LAN | 00:eb:xx:xx:xx:be | label |
| WAN | 00:eb:xx:xx:xx:bf | label+1 |
| WLAN 2g | 00:eb:xx:xx:xx:be | label |
| WLAN 5g | 00:eb:xx:xx:xx:bd | label-1 |
+---------+-------------------+-----------+
label MAC address was found in UBI partition "tp_data", file "default-mac".
OEM wireless eeprom is also there (file "MT7986_EEPROM.bin").

Signed-off-by: Emre Yavuzalp <emreyavuzalp2@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20630
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agocomgt-ncm: fix setting ip[46]table and MTU 20217/head
Alexander Patrakov [Sat, 27 Sep 2025 19:59:41 +0000 (03:59 +0800)] 
comgt-ncm: fix setting ip[46]table and MTU

The ncm proto handler ignored ip4table, ip6table, and mtu settings.

The fix is based on the existing code in the mbim proto handler.

Fixes: #20216.
Signed-off-by: Alexander Patrakov <patrakov@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20217
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agobuild: avoid errors during release candidate kernel packaging 21214/head
Markus Stockhausen [Fri, 19 Dec 2025 06:34:54 +0000 (07:34 +0100)] 
build: avoid errors during release candidate kernel packaging

The build system allows to use Linux release candidate kernels (-rcX).
For this a target/linux/generic/kernel-6.XY as follows is needed:

LINUX_VERSION-6.XY = -rc1
LINUX_KERNEL_HASH-6.XY-rc1 = 18ba6ebd72f46b881e0d73e390b2888b7b43...

Sadly the builds fail with a packaging error.

fakeroot /home/openwrt/openwrt/openwrt/staging_dir/host/bin/apk
mkpkg --info "name:kernel" --info "version:6.15-rc1~c4bf...1f6-r1"
ERROR: info field 'version' has invalid value: package version is invalid

The apk metadata specification reads:

"... Currently the APK version specification is as follows:
number{.number}...{letter}{_suffix{number}}...{~hash}{-r#} ...
Optionally one or more _suffix{number} components can follow.
The list of valid suffixes (and their sorting order) is: alpha,
beta, pre, rc, <no suffix>, cvs, svn, git, hg, p."

Given that the kernel uses "-rcX" naming scheme and apk requires
"_rcX" instead, simply translate the dash to an underscore for
these builds.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21214
Signed-off-by: Robert Marko <robimarko@gmail.com>
7 days agoodhcpd: update to Git HEAD (2025-12-18) 21211/head
Álvaro Fernández Rojas [Thu, 18 Dec 2025 17:30:56 +0000 (18:30 +0100)] 
odhcpd: update to Git HEAD (2025-12-18)

3fda5f8b121b dhcpv6-ia: reconfigure message length bug fix
6152cf5dab49 all: remove dead code

https://github.com/openwrt/odhcpd/compare/1450e1e2b7ff...3fda5f8b121b

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
7 days agoodhcp6c: update to Git HEAD (2025-12-18) 21213/head
Álvaro Fernández Rojas [Thu, 18 Dec 2025 17:52:47 +0000 (18:52 +0100)] 
odhcp6c: update to Git HEAD (2025-12-18)

9a4d6fe802d2 dhcpv6: use stable IAID for IA_NA
d99528f7a91a odhcp6c: avoid clearing CLIENT_ID

https://github.com/openwrt/odhcp6c/compare/02e783c2f68c...9a4d6fe802d2

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
7 days agopackages: nvram: add set_bcm43602_variables quirk for ASUS RT-AC3200 20052/head
Chester A. Unal [Thu, 11 Sep 2025 09:45:32 +0000 (10:45 +0100)] 
packages: nvram: add set_bcm43602_variables quirk for ASUS RT-AC3200

Broadcom BCM43602 needs certain NVRAM variables to be set to function. Add
a quirk for it and add ASUS RT-AC3200 which has got Broadcom BCM43602 to
the quirk. Thanks to Tom Brautaset for finding the needed variables.

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
7 days agopackages: nvram: add asus,rt-ac{3200,5300} to set_wireless_led_behaviour
Chester A. Unal [Mon, 8 Apr 2024 08:36:58 +0000 (11:36 +0300)] 
packages: nvram: add asus,rt-ac{3200,5300} to set_wireless_led_behaviour

Add ASUS RT-AC3200 and ASUS RT-AC5300 to the set wireless LED behaviour
quirk. ASUS RT-AC3200's wireless chip is different than ASUS RT-AC5300's,
the environment variables for it are 0:ledbh10 and 1:ledbh10.

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
7 days agobcm53xx: add support for ASUS RT-AC3200 and ASUS RT-AC5300
Chester A. Unal [Sun, 7 Apr 2024 10:24:57 +0000 (12:24 +0200)] 
bcm53xx: add support for ASUS RT-AC3200 and ASUS RT-AC5300

ASUS RT-AC3200 and ASUS RT-AC5300 are AC3200 and AC5300 routers,
respectively, featuring 5 Ethernet ports over the integrated Broadcom
switch.

ASUS RT-AC3200 hardware info:
* Processor: Broadcom BCM4709A0 dual-core @ 1.0 GHz
* Switch: BCM53012 in BCM4709A0
* DDR3 RAM: 256 MB
* Flash: 128 MB
* 2.4GHz: BCM43602 3x3 single chip 802.11b/g/n SoC
* 5GHz: BCM43602 3x3 two chips 802.11a/n/ac SoC
* Ports: 4 LAN Ports, 1 WAN Port

ASUS RT-AC5300 hardware info:
* Processor: Broadcom BCM4709C0 dual-core @ 1.4 GHz
* Switch: BCM53012 in BCM4709C0
* DDR3 RAM: 512 MB
* Flash: 128 MB
* 2.4GHz: BCM4366 4x4 single chip 802.11b/g/n SoC
* 5GHz: BCM4366 4x4 two chips 802.11a/n/ac SoC
* Ports: 4 LAN Ports, 1 WAN Port

Flashing instructions:
* Boot to CFE Recovery Mode by holding the reset button while power-on.
* Connect to the router with an ethernet cable.
* Set IPv4 address of the computer to 192.168.1.2 subnet 255.255.255.0.
* Head to http://192.168.1.1.
* Reset NVRAM.
* Upload the OpenWrt image.

CFE bootloader may reject flashing the image due to image integrity check.
In that case, follow the instructions below.

* Rename the OpenWrt image as firmware.trx.
* Run a TFTP server and make it serve the firmware.trx file.
* Run the URL below on a browser or curl.
  http://192.168.1.1/do.htm?cmd=flash+-noheader+192.168.1.2:firmware.trx+flash0.trx

Signed-off-by: Chester A. Unal <chester.a.unal@arinc9.com>
8 days agoodhcp6c: update to Git HEAD (2025-12-17) 21199/head
Álvaro Fernández Rojas [Wed, 17 Dec 2025 14:09:38 +0000 (15:09 +0100)] 
odhcp6c: update to Git HEAD (2025-12-17)

02e783c2f68c dhcpv6: fix NA/PD=try when NA/PD aren't provided
0f64e66b92ba odhcp6c: fix "-S" usage
13805fce5aa6 odhcp6c: reset res variable on INIT state

https://github.com/openwrt/odhcp6c/compare/5212a1019d75...02e783c2f68c

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
8 days agoodhcpd: update to Git HEAD (2025-12-14) 21202/head
Álvaro Fernández Rojas [Wed, 17 Dec 2025 14:52:37 +0000 (15:52 +0100)] 
odhcpd: update to Git HEAD (2025-12-14)

1450e1e2b7ff odhcpd: remove fallback DNS search domain
5b0e5c412f6c router: remove some log spam in send_router_advert()
eddd0f8f0d00 router: improve send_router_advert()
35f0e05a16a0 config: add default value for dhcpv6_pd_min_len
62113d007a6a config: allow minimum PD len up to 64
03c1468355c0 Revert "router: optimize duplicated PIO comparison"
6b88c314a59e statefiles: don't consider no hostname as broken

https://github.com/openwrt/odhcpd/compare/cf51aeb93220...1450e1e2b7ff

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
8 days agovrx518_tc: fix rx_len_adj 21045/head
Markus Petri [Thu, 4 Dec 2025 20:28:51 +0000 (21:28 +0100)] 
vrx518_tc: fix rx_len_adj

Fix rx_len_adj to avoid leaking the ethernet FCS into the actual frame
data in single line mode (the default)

Fixes: https://github.com/openwrt/openwrt/issues/20983
Signed-off-by: Markus Petri <devel@isjunk.org>
Link: https://github.com/openwrt/openwrt/pull/21045
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
8 days agolinux-firmware: intel: bump BE200 wifi firmware 21194/head
Janusz Dziedzic [Tue, 16 Dec 2025 17:15:03 +0000 (17:15 +0000)] 
linux-firmware: intel: bump BE200 wifi firmware

Latest backports require newer firmware (bump to 101).
https://github.com/torvalds/linux/commit/8788f6b3c664c83441039a453a0ec9cd27bf4859

Signed-off-by: Janusz Dziedzic <janusz.dziedzic@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21194
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
8 days agodropbear: bump to 2025.89 (CVE-2025-14282, CVE-2019-6111) 21186/head
Petr Štetiar [Tue, 16 Dec 2025 16:42:19 +0000 (16:42 +0000)] 
dropbear: bump to 2025.89 (CVE-2025-14282, CVE-2019-6111)

- Security: Avoid privilege escalation via unix stream forwarding in Dropbear
  server. Other programs on a system may authenticate unix sockets via
  SO_PEERCRED, which would be root user for Dropbear forwarded connections,
  allowing root privilege escalation.
  Reported by Turistu, and thanks for advice on the fix.
  This is tracked as CVE-2025-14282, and affects 2024.84 to 2025.88.

  It is fixed by dropping privileges of the dropbear process after
  authentication. Unix stream sockets are now disallowed when a
  forced command is used, either with authorized_key restrictions or
  "dropbear -c command".

  In previous affected releases running with "dropbear -j" (will also disable
  TCP fowarding) or building with localoptions.h/distrooptions.h
  "#define DROPBEAR_SVR_LOCALSTREAMFWD 0" is a mitigation.

- Security: Include scp fix for CVE-2019-6111. This allowed
  a malicious server to overwrite arbitrary local files.
  The missing fix was reported by Ashish Kunwar.

- Server dropping privileges post-auth is enabled by default. This requires
  setresgid() support, so some platforms such as netbsd or macos will have to
  disable DROPBEAR_SVR_DROP_PRIVS in localoptions.h. Unix stream forwarding is
  not available if DROPBEAR_SVR_DROP_PRIVS is disabled.

  Remote server TCP socket forwarding will now use OS privileged port
  restrictions rather than having a fixed "allow >=1024 for non-root" rule.

  A future release may implement privilege dropping for netbsd/macos.

- Fix a regression in 2025.87 when RSA and DSS are not built. This would lead
  to a crash at startup with bad_bufptr().
  Reported by Dani Schmitt and Sebastian Priebe.

- Don't limit channel window to 500MB. That is could cause stuck connections
  if peers advise a large window and don't send an increment within 500MB.
  Affects SSH.NET https://github.com/sshnet/SSH.NET/issues/1671
  Reported by Rob Hague.

- Ignore -g -s when passwords arent enabled. Patch from Norbert Lange.
  Ignore -m (disable MOTD), -j/-k (tcp forwarding) when not enabled.

- Report SIGBUS and SIGTRAP signals. Patch from Loïc Mangeonjean.

- Fix incorrect server auth delay. Was meant to be 250-350ms, it was actually
  150-350ms or possibly negative (zero). Reported by pickaxprograms.

- Fix building without public key options. Thanks to Konstantin Demin

- Fix building with proxycmd but without netcat. Thanks to Konstantin Demin

- Fix incorrect path documentation for distrooptions, thanks to Todd Zullinger

- Fix SO_REUSEADDR for TCP tests, reported by vt-alt.

Dropped:

 * 050-dropbear-multihop-fix.patch as its included in the release 5cc0127000db5f
 * 051-fix-pubkey-options.patch as its included in the release 1d4c4a542cd5df
 * 052-fix-missing-depends-for-sntrup761x25519-sha512.patch as its included
   in the release 1a2c1e649a1824
 * 053-Don-t-limit-channel-window-to-500MB.patch as its included in the release a8610f7b98ad

Manually rebased:

 * 110-change_user.patch

Fixes: CVE-2025-14282, CVE-2019-6111
Reviewed-by: Hauke Mehrtens <hauke@hauke-m.de>
Reviewed-by: Konstantin Demin <rockdrilla@gmail.com>
Tested-by: Konstantin Demin <rockdrilla@gmail.com> [mediatek/filogic (GL.iNet GL-MT6000)]
Link: https://github.com/openwrt/openwrt/pull/21186
Signed-off-by: Petr Štetiar <ynezz@true.cz>
8 days agokernel: Fix boot of realtek rtl838x 21126/head
Hauke Mehrtens [Mon, 15 Dec 2025 01:02:35 +0000 (02:02 +0100)] 
kernel: Fix boot of realtek rtl838x

Revert two patches from upstream Linux:
https://github.com/gregkh/linux/commit/135178e90aa43ad949534e1d6e376c4034942caa
https://github.com/gregkh/linux/commit/63a93d1cd6077d79735f804f5a4957bfb240280c

This fixes a boot hang on realtek rtl838x switches.
This is the last printed message:
Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear)

Thread on mips mailing list:
https://lore.kernel.org/linux-mips/b35fe4b3-8f42-49f4-a6bf-9f0e56d4050c@hauke-m.de/T/#u

Link: https://github.com/openwrt/openwrt/pull/21166
Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21126
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
8 days agokernel: bump 6.12 to 6.12.62
John Audia [Wed, 10 Dec 2025 20:19:42 +0000 (15:19 -0500)] 
kernel: bump 6.12 to 6.12.62

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.12.62

Manually rebased:
  bcm27xx/patches-6.12/950-0358-mmc-sdhci-of-dwcmshc-define-sdio-timeout-clocks.patch

Removed upstreamed:
  backport-6.12/830-v6.18-spi-bcm63xx-fix-premature-CS-deassertion-on-RX-only-transactions.patch[1]

All other patches automatically rebased.

1. https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?h=v6.12.62&id=e31194bf494f6900a5f96f55ed194a00e458f8d1

Build system: x86/64
Build-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/glinet_gl-mt6000, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21126
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
8 days agouboot-sunxi: fix u-boot build
Hauke Mehrtens [Tue, 16 Dec 2025 23:06:24 +0000 (00:06 +0100)] 
uboot-sunxi: fix u-boot build

The u-boot target name has to match the u-boot configuration. Switch
this back to the old names.

Fixes: d871e95e7f83 ("sunxi: image: sync target profiles names with DT compatible")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
9 days agowifi-scripts: update phys after rename_phy_by_name call 21175/head
Rany Hany [Mon, 15 Dec 2025 17:11:24 +0000 (19:11 +0200)] 
wifi-scripts: update phys after rename_phy_by_name call

This fixes a failed bring up of the radio on bootup
if the model defines a rename of phy in its /etc/board.json.
This specifically impacts Redmi AX6S and any router that does so
in its /etc/board.json. The fix fortunately is simple, just update
phy name in phys after rename.

The entry that specifically causes this issue is the following:

{
<omitted>
"wlan": {
"wl0": {
"path": "platform/18000000.wmac",
"info": {
"antenna_rx": 15,
"antenna_tx": 15,
"bands": {
"2G": {
"ht": true,
"max_width": 40,
"modes": [
"NOHT",
"HT20",
"HT40"
],
"default_channel": 1
}
},
"radios": [
]
}
},
...
}

The issue is that after rename, referenced phy in config is going to be
wl0 but in phys array it is still phy0; and so it fails to find phy
and does not bring up radio.

Fixes: https://github.com/openwrt/openwrt/issues/20250
Fixes: https://github.com/openwrt/openwrt/issues/20339
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/21175
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: mdio-serdes: use correct device table identifier 21182/head
Jonas Jelonek [Tue, 16 Dec 2025 12:06:57 +0000 (12:06 +0000)] 
realtek: mdio-serdes: use correct device table identifier

Use the correct identifier 'rtsds_of_match' instead of
'rtsds_mdio_of_match' because the latter doesn't exist.

This doesn't cause an error for 6.12. However, with 6.18 the
implementation of MODULE_DEVICE_TABLE has changed to use 'static' and
'used' [1] instead of 'extern' and 'unused' [2].

[1] https://github.com/torvalds/linux/blob/7d0a66e4bb9081d75c82ec4957c50034cb0ea449/include/linux/module.h#L260
[2] https://github.com/torvalds/linux/blob/adc218676eef25575469234709c2d87185ca223a/include/linux/module.h#L249

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21182
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: move polarity into SerDes struct 21146/head
Jonas Jelonek [Thu, 11 Dec 2025 23:33:59 +0000 (23:33 +0000)] 
realtek: pcs: move polarity into SerDes struct

As a first real usage of the new SerDes struct, move the polarity
configuration there. It was previously located in the global rtpcs_ctrl
struct as an array, indexed by SerDes id. Because this is per-SerDes
information, the new SerDes struct is the correct place to live in.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: drop unneeded SerDes number range checks
Jonas Jelonek [Sat, 13 Dec 2025 10:48:52 +0000 (10:48 +0000)] 
realtek: pcs: drop unneeded SerDes number range checks

By using references to pre-initiated SerDes instances instead of plain
SerDes number, there is no need to check for the range anymore in
various places. During driver/pcs init it is ensured that only valid
SerDes will reach the configuration functions.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: make use of SerDes struct in set_autoneg
Jonas Jelonek [Sat, 13 Dec 2025 20:12:13 +0000 (20:12 +0000)] 
realtek: pcs: make use of SerDes struct in set_autoneg

Also switch set_autoneg (and related helper rtpcs_sds_modify) to the
SerDes struct instead of the plain SerDes id by using just the reference
to the SerDes instance instead of (ctrl, sds_id) tuple. This completes
the transition.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: make use of SerDes struct in SerDes setup
Jonas Jelonek [Thu, 11 Dec 2025 21:42:38 +0000 (21:42 +0000)] 
realtek: pcs: make use of SerDes struct in SerDes setup

Make use of the previously added SerDes struct in SerDes setup and all
functions in its call path by removing (ctrl, sds_num) being passed to
every function call and instead just pass the reference to the
corresponding SerDes instance.

Various SerDes calculations for even, odd and neighbor are unified by
switching to previously introduced helpers.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: switch to id from SerDes struct
Jonas Jelonek [Sat, 13 Dec 2025 20:01:03 +0000 (20:01 +0000)] 
realtek: pcs: switch to id from SerDes struct

Drop usage of the to-be-phased-out SerDes id stored in rtpcs_link and
use the reference to the SerDes instance to use the embedded id in
rtpcs_serdes instead.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: assign SerDes reference upon PCS creation
Jonas Jelonek [Sat, 13 Dec 2025 10:29:56 +0000 (10:29 +0000)] 
realtek: pcs: assign SerDes reference upon PCS creation

Upon creation of a phylink_pcs instance by calling rtpcs_create, assign
a reference to the corresponding SerDes to the link structure. In the
next step, this should be used everywhere instead of the plain SerDes
number.

Rename the field used to hold the SerDes number from 'sds' to 'sds_num'
and name the new field 'sds' to make clear what is what.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: add helpers for even, odd, neighbor SerDes
Jonas Jelonek [Sat, 13 Dec 2025 10:16:21 +0000 (10:16 +0000)] 
realtek: pcs: add helpers for even, odd, neighbor SerDes

Add dedicated helpers to get references to even, odd and neigbor SerDes
if needed. This should replace the various calculations scattered
throughout the code, providing a unified way to work with adjacent
SerDes.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: add separate SerDes struct
Jonas Jelonek [Sat, 13 Dec 2025 10:12:35 +0000 (10:12 +0000)] 
realtek: pcs: add separate SerDes struct

Add a separate structure for a SerDes. This is needed to appropriately
store per-SerDes information, which in turn is needed for future work.
Additionally, it's intended to reduce boilerplate and several
inconsistencies.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: use per-variant SerDes count
Jonas Jelonek [Sat, 13 Dec 2025 09:10:55 +0000 (09:10 +0000)] 
realtek: pcs: use per-variant SerDes count

Use a separate configuration field for the number of SerDes for each
variant of the Realtek Otto family. Add this field to the config
structure, assign it and use it during driver probe. This narrows
possible error cases and is needed for upcoming extensions.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: add dedicated enum for SerDes modes
Jonas Jelonek [Thu, 11 Dec 2025 19:17:26 +0000 (19:17 +0000)] 
realtek: pcs: add dedicated enum for SerDes modes

The Realtek SerDes mode capabilities do not map 1:1 to the
PHY_INTERFACE_MODE_* modes used in the kernel and passed to the PCS.
For example, some PHY chips use the proprietary XSGMII mode for which
there isn't an equivalent in the kernel, or HSGMII.

In the past, this led to problems and confusion using kernel's XGMII to
handle the XSGMII mode, and needed a downstream patch for HSGMII. They
have been solved/worked around for now, but XSGMII is currently not
implemented at all. And who knows what might come in the future.

To make our life easier, introduce a dedicated internal representation
of SerDes modes which differs from kernel's PHY_INTERFACE_MODE_*. This
allows us to map "external" modes to different internal modes as needed
instead of carrying the PHY_INTERFACE_MODE_* through the whole SerDes
configuration code. The PCS driver needs to map PHY_INTERFACE_MODE_* to
RTPCS_SDS_MODE_* in pcs_config, and the latter should be used as the
only one.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: rtl930x: drop unused and broken function
Jonas Jelonek [Fri, 12 Dec 2025 20:05:52 +0000 (20:05 +0000)] 
realtek: pcs: rtl930x: drop unused and broken function

Drop the unused and broken function rtpcs_930x_sds_clock_wait from the
PCS driver. The proper working variant is already some lines above and
called rtpcs_930x_sds_wait_clock_ready.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: pcs: drop PCS creation without SerDes ref
Jonas Jelonek [Thu, 11 Dec 2025 22:37:33 +0000 (22:37 +0000)] 
realtek: pcs: drop PCS creation without SerDes ref

Since the beginning, the PCS driver had the ability to call its
rtpcs_create without a reference to a valid PCS node. A comment in the
code mentions that this is done for RTL838X and its built-in octa-PHY
which is connected directly instead of via a SerDes. Further
explanations are not provided.

Drop this ability and make the rtpcs_create call in the dsa driver
conditional. As the built-in PHY of RTL838X isn't attached to a SerDes,
there is no obvious point of having the PCS driver in that chain. The
ports are marked as internal and have no pcs-handle, thus no phylink_pcs
instance should be created.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21146
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agorealtek: mdio-serdes: improve debugfs creation 21179/head
Jonas Jelonek [Tue, 16 Dec 2025 10:20:13 +0000 (10:20 +0000)] 
realtek: mdio-serdes: improve debugfs creation

Commit 3c073b5cb2 cleaned up the debugfs creation in
mdio-realtek-otto-serdes driver to not explicitly check if the root
directory already exists. This is fine because kernel handles the case
properly so there's no need to check anymore.

However, this pollutes the boot log with:
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'
[..] debugfs: 'realtek_otto_serdes' already exists in '/'

Now, the root directory creation is attempted multiple times, causing
the kernel to print an error message because the directory already
exists.

Fix this by moving the SerDes loop into rtsds_debug_init and only try
to create the root debugfs directory once.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21179
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoipq40xx: convert Orbi led labels to function/color 20877/head
Christoph Krapp [Sat, 22 Nov 2025 21:34:04 +0000 (22:34 +0100)] 
ipq40xx: convert Orbi led labels to function/color

The eight leds controlled by the LED controller are RGB leds themselves
but are flashing white by default. The color part is controlled by GPIOs
53 (green), 54 (red), 57 (blue) and 60 (white).
Therefore define the led nodes of the controller as white instead of RBG
as well as backlight as their function.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoipq40xx: fix second 5ghz radio on Netgear RBx40
Christoph Krapp [Sat, 22 Nov 2025 19:42:33 +0000 (20:42 +0100)] 
ipq40xx: fix second 5ghz radio on Netgear RBx40

When support was added for the RBR40 and RBS40 it was assumed that they
also share the same second 5ghz wifi chip as their bigger siblings.
Turns out that instead of QCA9984 (RBx50, SRx60) these devices use
QCA9886 like the RBx20 devices to.
They also load different boardfiles for the IPQ4019 chip.

This moves the wifi nodes from the orbi.dtsi to each device dts file and
change the RBx40 boardfile variants.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoipq-wifi: add entry for Netgear RBK40
Christoph Krapp [Sat, 22 Nov 2025 19:40:49 +0000 (20:40 +0100)] 
ipq-wifi: add entry for Netgear RBK40

Add boardfile override packages for Netgear RBK40 devices.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoipq40xx: fix Netgear RBR40 wan mac
Christoph Krapp [Sat, 22 Nov 2025 19:25:29 +0000 (20:25 +0100)] 
ipq40xx: fix Netgear RBR40 wan mac

The WAN port currently has the same MAC set as all the other LAN ports.
Fix this by adding the missing case in ipq40xx_setup_macs().

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoipq40xx: split orbi devices in router and satellite
Christoph Krapp [Sat, 22 Nov 2025 19:20:14 +0000 (20:20 +0100)] 
ipq40xx: split orbi devices in router and satellite

Netgear Orbi devices are split into router and satellite units. Even
though the hardware is mostly the same, the network configuration is
different. Router units have a designated WAN port while satellite units
have all available ports labeled as "Ethernet".
This splits the device trees into both unit types and adjusts the port
labels.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20877
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoipq-wifi: update to Git HEAD (2025-12-16)
Robert Marko [Tue, 16 Dec 2025 09:27:34 +0000 (10:27 +0100)] 
ipq-wifi: update to Git HEAD (2025-12-16)

10eddd6f1cba qca4019: qca9888: add bdfs for Netgear RBK40

Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agoqualcommax: ipq807x: use ascii-env driver for Linksys MX4200v1 20732/head
Christoph Krapp [Mon, 10 Nov 2025 22:44:21 +0000 (23:44 +0100)] 
qualcommax: ipq807x: use ascii-env driver for Linksys MX4200v1

Just like it has already been changed for v2, use the ascii-eq-delim-env
driver to extract the label mac from the devinfo partition.

Signed-off-by: Christoph Krapp <achterin@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20732
Signed-off-by: Robert Marko <robimarko@gmail.com>
9 days agosunxi: image: sync target profiles names with DT compatible 21095/head
Mario Andrés Pérez [Sun, 14 Dec 2025 17:45:10 +0000 (18:45 +0100)] 
sunxi: image: sync target profiles names with DT compatible

Following up with errors reported in the ASU repo, these bananapi cases
do not match the DT compatible "bpi", sync with dts sources.
Also some profiles were overwriting SUPPORTED_DEVICES.
Sysupgrade would be failing in SUPPORTED_DEVICES check since
the DT compatible(/tmp/sysinfo/board_name) is not in SUPPORTED_DEVICES.
This should also fix errors when using ASU sysupgrade clients.
- Sync profile makefile target names with DT compatibles.
- Fix overwrites of SUPPORTED_DEVICES instead of appending.
- Adapt the uboot-sunxi profiles accordingly.
*bpi-p2-zero dts is still not upstream.

V2:
- Include fixes for arm926ejs(ARM926EJ-S) subtarget (LicheePi Nano and
PopStick v1.1) (profile rename for correct default SUPPORTED_DEVICES)

Fixes: https://forum.openwrt.org/t/luci-attended-sysupgrade-support-thread/230552/246
Fixes: https://github.com/openwrt/asu/issues/486
Fixes: https://github.com/openwrt/asu/issues/524
Fixes: 9aa66b8ce730aebff76d353392151708a897a3a0 "sunxi: add support for Banana Pi M2 Berry"
Fixes: d5f615bf2a0434c15d13943b566d46f25da579bb "sunxi: add support for Sinovoip Banana Pi M2 Plus"
Fixes: 3819c1638a9d300840d0f869628891f9696be112 "sunxi: Add support for Banana Pi M2 Ultra"
Fixes: 6bf8193b25a147abfe3720104e63af890c1ca2b8 "sunxi: add support for Bananapi P2 Zero"
Fixes: 80edfaf675364835e6d2e17d97ebec6afc6b2103 "sunxi: add support for Banana Pi M3"
Fixes: 3c24a1d423a6052b101c00cb7d94e70d72702639 "sunxi: add support for NanoPi NEO Plus2 board"
Fixes: a689307c970e37c247c6452ba3963be8b109eb4f "sunxi: build image/uboot for the NanoPi NEO2"
Fixes: fde68cb80941a60be93ece75e808b5b407d11cc8 "sunxi: add support for FriendlyARM NanoPi R1S H5"
Fixes: 3ec468ff4fa3106d459ae58ec4bc4833715118c6 "sunxi: add F1C100 (arm926ej-s) support"
Signed-off-by: Mario Andrés Pérez <mapb_@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21095
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
9 days agoscripts,ipkg-build: Fix error message for invalid package name 20077/head
Karsten Sperling [Fri, 12 Sep 2025 03:49:13 +0000 (15:49 +1200)] 
scripts,ipkg-build: Fix error message for invalid package name

Use the correct variable ($pkg instead of $name) in the error message.

Signed-off-by: Karsten Sperling <ksperling@apple.com>
Link: https://github.com/openwrt/openwrt/pull/20077
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
9 days agolibcap: Revert "libcap: update to 2.77"
Hauke Mehrtens [Tue, 16 Dec 2025 00:22:26 +0000 (01:22 +0100)] 
libcap: Revert "libcap: update to 2.77"

This reverts commit c25265953b9c06fafc6091982468ed0cfc30abb0.

Linking of libpsx.so from libcap 2.77 fails on powerpc 464fp. Revert
back to the older version which works.

Bug report: https://bugzilla.kernel.org/show_bug.cgi?id=220860
Fixes: c25265953b9c ("libcap: update to 2.77")
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
9 days agomediatek: fix IPv4 address missing on interface in failsafe mode for cudy ap3000-v1 21172/head
Martin Nadvornik [Mon, 15 Dec 2025 15:54:52 +0000 (16:54 +0100)] 
mediatek: fix IPv4 address missing on interface in failsafe mode for cudy ap3000-v1

cudy ap3000-v1 did not work correctly in failsafe mode
because the address 192.168.1.1 was missing on the eth0 inteface.
it was reachable via it's IPv6 link-local address however.
this commit fixes the issue.

Fixes: https://github.com/openwrt/openwrt/issues/20750
Signed-off-by: Martin Nadvornik <martin.nadvornik@gmx.at>
Link: https://github.com/openwrt/openwrt/pull/21172
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
10 days agowifi-scripts: ucode: improve formatting of expected throughput 20567/head
Rany Hany [Mon, 27 Oct 2025 16:14:22 +0000 (16:14 +0000)] 
wifi-scripts: ucode: improve formatting of expected throughput

Convert to MBit/s like all other fields and specify the unit.
Most users probably aren't aware that this is in kilobits/s.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20567
Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agowifi-scripts: add support for using list for iface in wifi-station/vlan 20977/head
Rany Hany [Sat, 29 Nov 2025 00:04:09 +0000 (00:04 +0000)] 
wifi-scripts: add support for using list for iface in wifi-station/vlan

This is a trivial change to allow users to use 'list' on iface.
Old wifi-scripts already implements this, so this just ensures
that shell-based and ucode wifi-scripts are on-par with each other.

Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20977
Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agowifi-scripts: fix broken match all case for wifi-vlan
Rany Hany [Sat, 29 Nov 2025 10:37:22 +0000 (12:37 +0200)] 
wifi-scripts: fix broken match all case for wifi-vlan

When iface is omitted, wifi-vlan will apply to all interfaces.
However, netifd.set_vlan call is not successful as it assumes
that every wifi-vlan section corresponds to one VIF.

For this reason in the wifi-vlan case (cur_type == "vlan")
we create a composite key in the form `${vif.name}/${vlan.name}`
allowing the same vlan section to correspond to multiple VAPs.
`/` was decided as a delimiter as it is an invalid character
for a network interface name and UCI identifier; so it is
impossible for it to cause conflicts.

It was verified that the `ubus call network.wireless status`
works as expected with this change. Moreover, wifi-station
is not susceptible to this problem.

This also means that it is now possible for wifi-vlan
to support `list` iface similar to old shell-based wifi-scripts.
This will be done in a follow-up commit.

Fixes: 98435a37a7 ("wifi-scripts: iface should be optional in wifi-vlan definition")
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/20977
Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agoipq-wifi: update to Git HEAD (2025-12-15)
Robert Marko [Mon, 15 Dec 2025 08:54:23 +0000 (09:54 +0100)] 
ipq-wifi: update to Git HEAD (2025-12-15)

c6202981872e ipq5018: use correct board for GL-iNet B3000 IPQ5018 radio
ec72376cadf1 qca4019: Add Meraki Underdog
059b7114c77b ipq6018: add tp-link eap620hd v2

Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agokernel: rtl836x: remove legacy platform_data support 21138/head
Shiji Yang [Fri, 12 Dec 2025 00:32:56 +0000 (08:32 +0800)] 
kernel: rtl836x: remove legacy platform_data support

There are no platform_data based devices using it anymore. Also move
header files to the driver folder.

Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21138
Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agorealtek: use devm_kzalloc() for serdes debugfs setup 21157/head
Markus Stockhausen [Sun, 14 Dec 2025 09:07:38 +0000 (10:07 +0100)] 
realtek: use devm_kzalloc() for serdes debugfs setup

This will free memory automatically during driver unloading.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21157
Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agorealtek: cleanup debugfs creation in serdes driver
Markus Stockhausen [Sun, 14 Dec 2025 09:03:47 +0000 (10:03 +0100)] 
realtek: cleanup debugfs creation in serdes driver

debugfs_create_dir() has a proper logic to handle existing directories.
Skip the manual test. Additionally quit early if directory creation fails.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21157
Signed-off-by: Robert Marko <robimarko@gmail.com>
10 days agorealtek: simplify backing serdes calculation
Markus Stockhausen [Sun, 14 Dec 2025 08:53:49 +0000 (09:53 +0100)] 
realtek: simplify backing serdes calculation

Calculating the backing serdes of a given frontend serdes does
not need any info about the control structure. Drop the reference.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21157
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 days agoodhcpd: update to Git HEAD (2025-12-13) 21150/head
Álvaro Fernández Rojas [Sat, 13 Dec 2025 11:53:39 +0000 (12:53 +0100)] 
odhcpd: update to Git HEAD (2025-12-13)

cf51aeb93220 odhcpd: fix captive_portal_uri reset
e8b7fdea8d5e dhcpv4: fix DNS server option
b84553e496a3 router: Modify relayed RA PIO P flag according to interface policy
da3e2a9829cc router: Modify relayed RA PIO A flags according to interface policy
bad7138b70f0 README.md: update dhcp ubus events

https://github.com/openwrt/odhcpd/compare/ca00527e5fc3...cf51aeb93220

Also remove duplicated /usr/share/libubox/jshn.sh include.

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
13 days agoimage: add CONFIG_EXTRA_IMAGE_NAME 20984/head
David Woodhouse [Sat, 29 Nov 2025 16:18:26 +0000 (16:18 +0000)] 
image: add CONFIG_EXTRA_IMAGE_NAME

This allows an optional tag to be put in the .config file which is
included in the filename of the resulting images, so it's easier to
build images with different functionality for the same target hardware.

Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Link: https://github.com/openwrt/openwrt/pull/20984
Signed-off-by: Petr Štetiar <ynezz@true.cz>