]> git.ipfire.org Git - thirdparty/openwrt.git/log
thirdparty/openwrt.git
12 hours agoqualcommax: ipq50xx: Add support for Zyxel SCR50AXE main master 21042/head
Robert Senderek [Fri, 10 Oct 2025 12:40:21 +0000 (14:40 +0200)] 
qualcommax: ipq50xx: Add support for Zyxel SCR50AXE

This is tri-band WiFi6E capable router. Also Zyxel Nebula managed so no real local GUI. To open device 4 screws must be located uder the label.
Four latches are on front and two on each side. Better start from ethernet port side where 3 small latches are easy to handle.
FCC shows It's identical to WSQ65 sold as Zyxel Multy M6E but that's nowhare to be found yet. WSQ65 is not covered by this PR

Speficiations:
* SoC: Qualcomm IPQ5018
* RAM: 1GB DDR3
* Flash: Winbond W25N02KWZEIR 256MB
* UART: PCB "J3"  is located left from front LED strip
              (VCC/TX/RX/     /GND)   3.3V 115200n8
* Wi-Fi1: IPQ5018 (2x2 2.4 Ghz 802.11b/g/n/ax)
* Wi-Fi2: QCN6102 (2x2:2 5 Ghz 802.11an/ac/ax)
* Wi-Fi3: QCN6122 (2x2:2 6 Ghz 802.11an/ac/ax)
* Ethernet: QCA8337 4xLAN 1Gbit / 1xWAN 1Gbit
* Buttons: WPS , Reset
* LEDs: 13 in total
   RGB power, RGB wan, RGB status (cloud), RGB wifi, Green wps
* FCCID: I8803891

*Flash Instructions starts with getting root:
connect uart to J3 connector next to the front LEDs
go to failsafe when this shows up in log:
"Press the [f] key and hit [enter] to enter failsafe mode"
execute:
mount_root
passwd -d root
reboot

logon as root:
look for 'Please press Enter to activate this console.'
login is root password is empty
execute:
fw_setenv DebugFlag=0x1
fw_setenv bootdelay=0x2
passwd -d root
backup ubi partition "rootfs" into safe space
reboot

*OpenWrt installation
stop uboot and execute:
setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.10
tftpboot *-factory.ubi
flash rootfs
reset

or:
tftpboot *-initramfs-uImage.itb
bootm
use sysupgrade as usual

*restore OEM from backup
stop uboot and execute:
setenv ipaddr 192.168.1.1
setenv serverip 192.168.1.10
tftpboot *-initramfs-uImage.itb
bootm
transfer rootfs.bin backup and execute:
ubiformat /dev/mtd16 -y -f /tmp/rootfs.bin

Signed-off-by: Robert Senderek <robert.senderek@10g.pl>
Link: https://github.com/openwrt/openwrt/pull/21042
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agoipq-wifi: update to Git HEAD (2026-01-07)
Robert Marko [Wed, 7 Jan 2026 10:03:54 +0000 (11:03 +0100)] 
ipq-wifi: update to Git HEAD (2026-01-07)

11715a4fe783 ipq5018: add SCR50AXE BDF's

Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: rtl931x: improve port media handling 21385/head
Jonas Jelonek [Sun, 4 Jan 2026 17:22:29 +0000 (17:22 +0000)] 
realtek: pcs: rtl931x: improve port media handling

The port media handling introduced before was to some extent just taken
over from the SDK. As a second step, improve that code now. Some code
can be deduplicated, a few statements removed and improved in general.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21385
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: rtl931x: add port media handling
Jonas Jelonek [Sun, 21 Dec 2025 13:45:36 +0000 (13:45 +0000)] 
realtek: pcs: rtl931x: add port media handling

SFP modules still do not work that well across different devices. One
missing piece seems to be the bunch of magic values and bits set by the
SDK depending on which media is used on a port.

Take over code from the SDK for port media handling [1]. This applies
different sequences depending on whether it's 10G fiber, 1G fiber or DAC
cables to make it work best for each variant. Place the call to that
code below the configuration of a SerDes mode but before actually
activating that mode and powering on the SerDes. The SDK and our code
for RTL930x do that similarly.

Though we do not have any notion of media in pcs_config right now, do
similar to some SDK versions and set an appropriate media type for fiber
modes and SGMII (otherwise it doesn't work).

[1] https://github.com/plappermaul/realtek-doc/blob/51c3390e0e47ac068fd0100e7fa6c10355042d16/sources/rtk-dms1250/src/hal/phy/phy_rtl9310.c#L2302

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21385
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: add enum for port media
Jonas Jelonek [Sun, 21 Dec 2025 13:14:04 +0000 (13:14 +0000)] 
realtek: pcs: add enum for port media

The Realtek SDK includes a lot of code around specific port media,
usually having quite some differences between 10G fiber, 1G fiber and
DAC cables. For each type, several magic values are set which in the end
usually make different kinds of links work optimal.

While there is currently no way to get that media information from the
kernel, add some fields as an enum to have a notion of different media
kinds. In additional steps, code for the subtargets can be taken over
from the SDK to handle different media.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21385
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: drop some unneeded unused attributes 21410/head
Jonas Jelonek [Mon, 5 Jan 2026 15:07:59 +0000 (15:07 +0000)] 
realtek: pcs: drop some unneeded unused attributes

Drop the '__always_unused' tags from two functions which are actually
used. This was missed during the big transition before.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21410
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: fix naming of RTL931X sds config data
Jonas Jelonek [Mon, 5 Jan 2026 14:52:38 +0000 (14:52 +0000)] 
realtek: pcs: fix naming of RTL931X sds config data

Those config arrays still do not lineup with common conventions in the
driver in terms of naming. They are missing the driver and variant
prefix. Thus, line that up with how RTL930X code looks like.

- add 'rtpcs_' prefix since it's part of the PCS driver
- add '931x_' prefix because it's for RTL931X
- use 'cfg' instead of 'config' to shorten that a bit

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21410
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: use ARRAY_SIZE kernel macro
Jonas Jelonek [Mon, 5 Jan 2026 14:44:41 +0000 (14:44 +0000)] 
realtek: pcs: use ARRAY_SIZE kernel macro

In the RTL931X configuration code, the array size of configuration
arrays was still calculated with 'sizeof(...) / sizeof(...)'. There's a
dedicated macro in the kernel for exactly that usecase. Use that instead
to avoid possible errors and make the line shorter. The RTL930X code is
already doing it the good way.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21410
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: fix sds_config struct definition
Jonas Jelonek [Mon, 5 Jan 2026 14:07:48 +0000 (14:07 +0000)] 
realtek: pcs: fix sds_config struct definition

In kernel coding style, it is highly disregarded to hide structures
behind typedefs ([1]). The PCS driver still contains a typedef for the
sds_config which was taken over from the PHY driver.

- drop the typedef, just declaring it as a struct
- give it the common 'rtpcs_' prefix
- adjust all usage locations

[1] https://www.kernel.org/doc/html/v6.18/process/coding-style.html#typedefs

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21410
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorealtek: pcs: add myself as module author
Jonas Jelonek [Mon, 5 Jan 2026 13:04:34 +0000 (13:04 +0000)] 
realtek: pcs: add myself as module author

I have contributed quite a lot changes recently and should be made
responsible for most of the code that has been added to the PCS driver
after it has been introduced by Markus.

FWIW, add myself as another module author so anything I produced here
doesn't fall back to someone else, i.e. Markus as currently the single
module author.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21410
Signed-off-by: Robert Marko <robimarko@gmail.com>
12 hours agorockchip: fix kernel tag for backported patches 21419/head
Tianling Shen [Tue, 6 Jan 2026 04:02:40 +0000 (12:02 +0800)] 
rockchip: fix kernel tag for backported patches

These patches were actually merged in kernel 6.19 instead of 6.18,
fix them to avoid confusing when moving to new kernel version.

While at it, refresh the RK3528 PCIE L1ss patch since it was
accepted in 6.19 as well.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/21419
Signed-off-by: Robert Marko <robimarko@gmail.com>
21 hours agokernel: net: phy: realtek: fix C22-only mode on 2.5GE PHYs 21378/head
Daniel Golle [Mon, 5 Jan 2026 18:12:40 +0000 (18:12 +0000)] 
kernel: net: phy: realtek: fix C22-only mode on 2.5GE PHYs

Import 2 patches completing and fixing the RealTek's 2.5GE PHYs when being
used in Clause-22 mode.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
21 hours agokernel: net: phy: c45: check validity of 10GbE LPA
Daniel Golle [Sat, 3 Jan 2026 21:05:35 +0000 (21:05 +0000)] 
kernel: net: phy: c45: check validity of 10GbE LPA

Only use link-partner advertisement bits for 10GbE modes if they are
actually valid. Check LOCALOK and REMOTEOK bits and clear 10GbE modes
unless both of them are set.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
21 hours agokernel: net: phy: realtek: replace in-band AN hack
Daniel Golle [Sat, 3 Jan 2026 15:41:17 +0000 (15:41 +0000)] 
kernel: net: phy: realtek: replace in-band AN hack

Replace downstream hack for RealTek PHYs with a more clean solution
which could make it upstream.

As SGMII in-band AN is broken on some platforms, or simply expected to
be disabled by default in phy/sgmii mode (ie. on-board PHYs with MDIO
for out-of-band configuration and status), a hack for the RealTek PHY
driver was introduced to unconditionally disable SGMII in-band
autonegotiation.

Meanwhile the kernel has gained a proper interface for PHY and PCS to
report in-band AN capabilities and enable/disable in-band, matching
PHY and PCS capabilities.

Thanks to Bevan Weiss' knowledge about how RealTek PHY SerDes registers
are being handled in RealTek's SDK this can now be greatly improved:
 - report in-band capabilties
 - let phylink set in-band matching PCS and PHY capabilities
 - properly abstracted indirect access of SerDes registers

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
21 hours agokernel: net: phy: realtek: replace hack with proper fix
Daniel Golle [Sat, 3 Jan 2026 18:43:33 +0000 (18:43 +0000)] 
kernel: net: phy: realtek: replace hack with proper fix

RealTek's 2.5G PHYs suffer from an up to now inexplicable problem which
results in the SerDes mode not being properly setup and disabling
in-band AN leading to a timeout waiting for a busy-bit to clear. Up to
now there has been a crude work-around: resetting the PHY and trying
another time.

The cause has now been found as a wrong access to register PHYCR1 on
MDIO_MMD_VEND1 instead of MDIO_MMD_VEND2 when setting up ALDPS as well
as disabling the MDIO broadcast address 0.

In order to access MDIO_MMD_VEND2 on Clause-22-only busses a custom
.read_mmd and .write_mmd ops are implemented, mapping MDIO_MMD_VEND2 to
paged access as this is required.

Also, as ALDPS by design disables the SerDes PCS of the PHY in case the
link has been down for a while, move enabling ALDPS to the end of the
config_init function to not face problems when configuring the interface
mode and in-band AN.

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
27 hours agoucode: remove the fs.read_nb patch
Felix Fietkau [Tue, 6 Jan 2026 19:09:01 +0000 (19:09 +0000)] 
ucode: remove the fs.read_nb patch

It is obsolete since the io module was added

Signed-off-by: Felix Fietkau <nbd@nbd.name>
27 hours agoucode: add package for ucode-mod-io
Felix Fietkau [Tue, 6 Jan 2026 19:08:41 +0000 (19:08 +0000)] 
ucode: add package for ucode-mod-io

It was included in the last update

Signed-off-by: Felix Fietkau <nbd@nbd.name>
27 hours agowifi-scripts: move the "disabled" option to the wifi-iface section
Felix Fietkau [Tue, 6 Jan 2026 17:46:46 +0000 (18:46 +0100)] 
wifi-scripts: move the "disabled" option to the wifi-iface section

This helps for setups where the wifi interfaces are added dynamically
via procd data by avoiding automatically bringing up interfaces with
the default config. Internally, they are treated pretty much the same
by netifd.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
46 hours agouboot-bcm53xx: bump U-Boot to 2025.10
Linus Walleij [Sat, 3 Jan 2026 20:44:13 +0000 (21:44 +0100)] 
uboot-bcm53xx: bump U-Boot to 2025.10

Bump to the latest version used by other OpenWrt platforms so
we don't bitrot.

Tested on the D-Link DIR-890L.

Link: https://github.com/openwrt/openwrt/pull/21377
Signed-off-by: Linus Walleij <linusw@kernel.org>
2 days agobuild: restore opkg-related provides logic 21409/head
George Sapkin [Mon, 5 Jan 2026 14:26:47 +0000 (16:26 +0200)] 
build: restore opkg-related provides logic

Re-add opkg provides logic to CONTROL when USE_APK is not set and remove
virtual provider prefix.

Fixes: cefbf11 ("build: refactor provides logic")
Fixes: https://github.com/openwrt/openwrt/issues/21372
Fixes: https://github.com/openwrt/openwrt/issues/21382
Fixes: https://github.com/openwrt/openwrt/issues/21402
Signed-off-by: George Sapkin <george@sapk.in>
Link: https://github.com/openwrt/openwrt/pull/21409
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agoucode-mod-ubus: complete pending requests when disconnecting locally
Felix Fietkau [Sun, 4 Jan 2026 18:21:41 +0000 (18:21 +0000)] 
ucode-mod-ubus: complete pending requests when disconnecting locally

libubus only completes pending requests when the socket receives EOF.
When explicitly disconnecting, we need to call ubus_flush_requests().

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2 days agounetmsg: remove redundant socket close
Felix Fietkau [Sun, 4 Jan 2026 12:17:39 +0000 (12:17 +0000)] 
unetmsg: remove redundant socket close

channel.disconnect() already closes the fd via ubus_shutdown(),
so calling socket.close() afterwards is redundant and causes EBADF.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2 days agounetmsg: add timeout for outgoing auth requests
Felix Fietkau [Sun, 4 Jan 2026 10:07:33 +0000 (10:07 +0000)] 
unetmsg: add timeout for outgoing auth requests

Add a 10-second timeout for outgoing auth requests to prevent
connections from getting stuck when the remote peer goes silent
after the hello handshake but before responding to auth.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2 days agounetmsg: add null check in TX disconnect callback
Felix Fietkau [Sun, 4 Jan 2026 10:04:58 +0000 (10:04 +0000)] 
unetmsg: add null check in TX disconnect callback

The network may be deleted before the disconnect callback fires.
Check for null to avoid crash when accessing net.tx_channels.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
2 days agoairoha: an7581: correct led nodename 20482/head
Ziyang Huang [Sun, 19 Oct 2025 09:45:48 +0000 (17:45 +0800)] 
airoha: an7581: correct led nodename

Use standard name.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agoairoha: an7581: correct phy nodename
Ziyang Huang [Sun, 19 Oct 2025 09:51:28 +0000 (17:51 +0800)] 
airoha: an7581: correct phy nodename

Let node unit address same as reg.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agoairoha: an7581: move the switch led label from soc-level to board-level
Ziyang Huang [Sun, 19 Oct 2025 09:41:43 +0000 (17:41 +0800)] 
airoha: an7581: move the switch led label from soc-level to board-level

Different boards use different port map. For example, some board may use
a GE port as WAN. So defining the led label in board-level is better.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agoairoha: an7581: move the switch port label from soc-level to board-level
Ziyang Huang [Sun, 19 Oct 2025 09:37:39 +0000 (17:37 +0800)] 
airoha: an7581: move the switch port label from soc-level to board-level

Different boards use different port map. Defining the port labels in
board-level is better.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agoairoha: an7581: disable all switch port and phy by default
Ziyang Huang [Sun, 19 Oct 2025 09:45:24 +0000 (17:45 +0800)] 
airoha: an7581: disable all switch port and phy by default

Some board only use some of them, so enable as necessary in
board-level dts.

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
2 days agoairoha: an7581: correct the pinctrl-name of phy leds
Ziyang Huang [Sun, 19 Oct 2025 09:34:53 +0000 (17:34 +0800)] 
airoha: an7581: correct the pinctrl-name of phy leds

address the following issues:

    [    3.542844] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl
    [    3.552550] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl
    [    3.562449] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl
    [    3.574350] mdio_bus mt7530-0: Failed to setup PHY LED pinctrl

Signed-off-by: Ziyang Huang <hzyitc@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/20482
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agorealtek: eth: adapt prefix of ops structures 21345/head
Markus Stockhausen [Wed, 31 Dec 2025 14:04:46 +0000 (15:04 +0100)] 
realtek: eth: adapt prefix of ops structures

Convert all ops structures to the new rteth prefix.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21345
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agorealtek: eth: move netdev_ops to config structure
Markus Stockhausen [Wed, 31 Dec 2025 13:49:05 +0000 (14:49 +0100)] 
realtek: eth: move netdev_ops to config structure

Simplify netdev_ops initialization by moving the data
into the configuration structure.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21345
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agorealtek: eth: reorder configuration data
Markus Stockhausen [Wed, 31 Dec 2025 13:31:42 +0000 (14:31 +0100)] 
realtek: eth: reorder configuration data

The configuration data needs to reference the netdev_ops
in the future. Reorder it in a separate commit to avoid
confusion later.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21345
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agorealtek: eth: move cpu_port to config structure
Markus Stockhausen [Wed, 31 Dec 2025 13:20:38 +0000 (14:20 +0100)] 
realtek: eth: move cpu_port to config structure

There is no need to set the cpu port depending on the
given family. Remove it from the private control structure
and add the fixed value to the configuration structure.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21345
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agorealtek: eth: Rename configuration structure
Markus Stockhausen [Wed, 31 Dec 2025 13:09:58 +0000 (14:09 +0100)] 
realtek: eth: Rename configuration structure

The name of the configuration structure suggests that it
contains a list of registers. As it contains functions too
change the name according to other realtek drivers.

- "Invent" a new driver prefix "rteth"
- Rename the structure and variables to config/cfg

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21345
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agopackages: ethtool: restore CONFLICTS 21388/head
Eric Fahlgren [Sun, 4 Jan 2026 17:35:11 +0000 (09:35 -0800)] 
packages: ethtool: restore CONFLICTS

Inadvertent removal of 'CONFLICTS' breaks kconfig selection.
Restore it.

Fixes: ded99c2984b2 ("treewide: add explicit default variant part 2")
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21388
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agonat46: fix reproducible-build failure and use latest git 21284/head
John Audia [Thu, 25 Dec 2025 13:31:13 +0000 (08:31 -0500)] 
nat46: fix reproducible-build failure and use latest git

Bump to 2025-11-04 snapshot.

Added 100-gcc15-fix.patch which drops __DATE__/__TIME__ usage and provides
a stable fallback ("unknown"). This fixes build failures with GCC 15 and
-Werror=date-time in kernel builds.

% git log --oneline 04923c5..adb2f72
adb2f72e6fb8 get rid of spurious ubsan complaint for nat46_instance_t pairs field
d5f88686a4a8 Add a test harness which boots the kernel under kvm with a custom init which runs the tests
b983bab221f0 nat46-core: Fix FIXMEs about ICMPv6 parameter pointers
1aca482d6917 Add support for ignoring traffic class or TOS translation at the same time

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/21284
[Removed "Replace printk with pr_* macros" patch]
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agowifi-scripts: wdev.uc: fix mesh mode frequency handling 21373/head
Valent Turkovic [Sat, 3 Jan 2026 08:50:16 +0000 (09:50 +0100)] 
wifi-scripts: wdev.uc: fix mesh mode frequency handling

Mesh mode interface creation fails when the freq parameter is empty or
undefined. Unlike adhoc mode which checks if freq exists before using it,
mesh mode blindly constructs the iw command with freq parameter, resulting
in invalid syntax like:

  iw dev mesh0 mesh join ssid freq  NOHT

This causes the mesh interface to be created without joining the mesh
network, leaving it in a DOWN state with no channel assigned.

Fix by adding freq validation check similar to adhoc mode.

Tested on two routers in parallel as mesh peers:
- Xiaomi AX3000T (MediaTek MT7981)
- OpenWrt One (MediaTek MT7981)
- OpenWrt 6.6.119, 802.11s mesh on 5GHz (Channel 36, HE80)

Signed-off-by: Valent Turkovic <valent@meshpointone.com>
Link: https://github.com/openwrt/openwrt/pull/21373
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agoixp4xx: fix bug in Actiontec DTS file
Linus Walleij [Fri, 2 Jan 2026 20:15:28 +0000 (21:15 +0100)] 
ixp4xx: fix bug in Actiontec DTS file

This misassigned ethernet port bug was merged in the upstream
kernel.

Link: https://github.com/openwrt/openwrt/pull/21367
Signed-off-by: Linus Walleij <linusw@kernel.org>
3 days agokernel: QCOM SPI NAND: backport multiple fixes 21366/head
Hauke Mehrtens [Thu, 1 Jan 2026 18:40:06 +0000 (19:40 +0100)] 
kernel: QCOM SPI NAND: backport multiple fixes

These patches fix bugs in a patch we backported.

These patch were cherry picked from upstream Linux because it references
a patch we backported in the fixes tag.

The patches were reordered to match the ordering in the upstream Linux kernel.

Fixes: 93173aee96e7 ("qualcommbe: ipq95xx: Add initial support for new target")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: phylink: disable autoneg for interfaces that have no inband
Hauke Mehrtens [Thu, 1 Jan 2026 18:31:48 +0000 (19:31 +0100)] 
kernel: phylink: disable autoneg for interfaces that have no inband

This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

The first two patches are providing function needed by the last patch.

Fixes: 813ecda1f387 ("generic: backport phylink patches for PCS/PHY caps OPs")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: RTL8211FVD: restore disabling of PHY-mode EEE
Hauke Mehrtens [Thu, 1 Jan 2026 18:27:26 +0000 (19:27 +0100)] 
kernel: RTL8211FVD: restore disabling of PHY-mode EEE

This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 48c9e5509407 ("kernel: backport upstream Realtek PHY patches")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: mv88e6xxx: backport fixes
Hauke Mehrtens [Thu, 1 Jan 2026 18:21:08 +0000 (19:21 +0100)] 
kernel: mv88e6xxx: backport fixes

These patches fix bugs in a patch we backported.

These patch were cherry picked from upstream Linux because it references
a patch we backported in the fixes tag.

Fixes: c990f6e15669 ("linux: generic: net: dsa: mv88e6xxx LED support")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: reserved_mem: add missing IORESOURCE_MEM flag on resources
Hauke Mehrtens [Thu, 1 Jan 2026 18:17:00 +0000 (19:17 +0100)] 
kernel: reserved_mem: add missing IORESOURCE_MEM flag on resources

This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 9d3009f426d5 ("airoha: major backport of Airoha Ethernet driver feature support")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: as21xxx: backport patch improve PHY HW reset
Hauke Mehrtens [Thu, 1 Jan 2026 16:41:31 +0000 (17:41 +0100)] 
kernel: as21xxx: backport patch improve PHY HW reset

This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

The function phy_id_compare_vendor() is needed by the fix.
Refresh 782-05-v6.16-net-phy-Add-support-for-Aeonsemi-AS21xxx-PHYs.patch with the upstream code.

Fixes: 08a616b2163e ("generic: backport support for Aeonsemi AS21xxx PHY")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: pcs-mtk-lynxi: backport fix for in-band status capabilities
Hauke Mehrtens [Thu, 1 Jan 2026 16:38:07 +0000 (17:38 +0100)] 
kernel: pcs-mtk-lynxi: backport fix for in-band status capabilities

This patch fixes a bug in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 813ecda1f387 ("generic: backport phylink patches for PCS/PHY caps OPs")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: PHY: backport led fixes commit
Hauke Mehrtens [Thu, 1 Jan 2026 16:34:05 +0000 (17:34 +0100)] 
kernel: PHY: backport led fixes commit

This patch fixes a bug in some patches we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: r8169: backport upstream fix
Hauke Mehrtens [Thu, 1 Jan 2026 16:28:56 +0000 (17:28 +0100)] 
kernel: r8169: backport upstream fix

This fixes a bug introduced in a patch we backported.

This patch was cherry picked from upstream Linux because it references a
patch we backported in the fixes tag.

Fixes: 91ce7f606a62 ("generic: backport upstream v6.16 r8169 patches")
Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: move patches to backported
Hauke Mehrtens [Thu, 1 Jan 2026 01:34:27 +0000 (02:34 +0100)] 
kernel: move patches to backported

These formally pending patches were merged into upstream Linux some time
ago. Move them to the backports folder and add the kernel version they
were added to the file name.

Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agokernel: refresh upstreamed patches
Hauke Mehrtens [Thu, 1 Jan 2026 01:08:19 +0000 (02:08 +0100)] 
kernel: refresh upstreamed patches

Replace pending patches which are already integrated in upstream Linux
with their upstream versions.

These patches were exported with:
git format-patch -1 -k

Link: https://github.com/openwrt/openwrt/pull/21366
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 days agotreewide: add explicit default variant part 2 21380/head
Eric Fahlgren [Sun, 4 Jan 2026 00:04:51 +0000 (16:04 -0800)] 
treewide: add explicit default variant part 2

Add 'DEFAULT_VARIANT' to two packages, 'iw' and 'eapol-test',
that were missed in the first pass.  Refactor 'iw' and 'ethtool'
package definitions to be consistent with the pattern used in most
other packages.

Fixes: https://github.com/openwrt/openwrt/commit/f4fdb996
Fixes: https://github.com/openwrt/openwrt/commit/7a78dc4a
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21380
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 days agocli: fix typo in error reporting
Felix Fietkau [Sun, 4 Jan 2026 09:59:14 +0000 (10:59 +0100)] 
cli: fix typo in error reporting

Return the proper error code for COMMAND_FAILED

Signed-off-by: Felix Fietkau <nbd@nbd.name>
4 days agotreewide: replace remove_new with remove 21226/head
Rosen Penev [Fri, 19 Dec 2025 23:33:50 +0000 (15:33 -0800)] 
treewide: replace remove_new with remove

Preparation for kernel 6.18. It removes the former.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21226
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agoairoha: an7583: fix scuclk unit-address 20985/head
Aleksander Jan Bajkowski [Sat, 29 Nov 2025 17:58:17 +0000 (18:58 +0100)] 
airoha: an7583: fix scuclk unit-address

Fix the unit-address of the scuclk node.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20985
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agoairoha: en7583: dts: fix typo disable
Aleksander Jan Bajkowski [Sat, 29 Nov 2025 17:56:50 +0000 (18:56 +0100)] 
airoha: en7583: dts: fix typo disable

No functional changes intended.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20985
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agorealtek: pcs: rtl931x: soften early exit for USXGMII 21365/head
Jonas Jelonek [Fri, 2 Jan 2026 17:49:02 +0000 (17:49 +0000)] 
realtek: pcs: rtl931x: soften early exit for USXGMII

Now that the PCS driver keeps track of how many links are registered per
SerDes, we can also decide which real hardware mode to use when USXGMII
is set. While there is still no proper setup for 10G-QXGMII or XSGMII,
the existing USXGMII 10G-SXGMII setup seems to work properly.

Soften the condition when to exit early so that single 10G port USXGMII
can be setup properly.

Fixes: c18476d0c581 ("realtek: RTL931x: disable USXGMII SerDes setup")
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21365
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agorealtek: pcs: select OFF mode with no links on SerDes
Jonas Jelonek [Fri, 2 Jan 2026 18:50:10 +0000 (18:50 +0000)] 
realtek: pcs: select OFF mode with no links on SerDes

Because the PCS driver keeps track of the number of registered links for
each SerDes now, we now know when there is no link on a SerDes. In this
case, determine to turn off the SerDes in the mode mapper.

Though the phylink subsystem shouldn't attempt to config something
different when no link/port references a Serdes, be on the safe side.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21365
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agorealtek: pcs: cover number of links per SerDes for USXGMII
Jonas Jelonek [Fri, 2 Jan 2026 16:30:16 +0000 (16:30 +0000)] 
realtek: pcs: cover number of links per SerDes for USXGMII

A SerDes may supply multiple ports and depending on that number,
different hardware modes need to be used. While there are corresponding
modes in the kernel in some cases (e.g. USXGMII with 4 2.5G ports aka
10G-QXGMII), this doesn't always map to Realtek hardware modes. Use the
previously added link number accounting for that.

An obvious example of this is the SerDes on XGS12xx-12 switches which
is connected to an octa-PHY. This runs Realtek proprietary XSGMII mode
(10G-pumped SGMII interface) for which there is no corresponding mode
in the kernel.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21365
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agorealtek: pcs: keep track of number of links per SerDes
Jonas Jelonek [Wed, 24 Dec 2025 10:28:36 +0000 (10:28 +0000)] 
realtek: pcs: keep track of number of links per SerDes

Add a field to the rtpcs_serdes structure to keep track of how many
links (aka ports) are used on a single SerDes. This is needed to be
known to map kernel interface modes to SerDes hardware modes properly
(e.g. USXGMII --> USXGMII/10G-QXGMII/XSGMII).

While working in rtpcs_create, optimize referencing the SerDes instance
for cleaner code.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21365
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agorealtek: pcs: add missing SerDes modes
Jonas Jelonek [Wed, 24 Dec 2025 10:36:03 +0000 (10:36 +0000)] 
realtek: pcs: add missing SerDes modes

100Base-X mode was missing before in the enum rtpcs_sds_mode. So add it
to be able to support this mode too. Handle this mode in the
_determine_hw_mode mapper.

10G_QXGMII mode was missing in the mode mapper. Add it and map it to
USXGMII_10GQXGMII mode.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21365
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agomediatek: remove erroneous pipe action from BE7200 recipe 21376/head
Hannu Nyman [Sat, 3 Jan 2026 10:51:29 +0000 (12:51 +0200)] 
mediatek: remove erroneous pipe action from BE7200 recipe

Remove the errorneous pipe action from the BE7200 device package list.

It causes visible errors into config:

 perus@ub2510:/OpenWrt/aarch64$ make defconfig
 ...
 tmp/.config-target.in:55023:warning: ignoring unsupported character '|'
 tmp/.config-target.in:191877:warning: ignoring unsupported character '|'
 tmp/.config-target.in:191878:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285812:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285815:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285819:warning: ignoring unsupported character '|'
 tmp/.config-target.in:285820:warning: ignoring unsupported character '|'
 #
 # configuration written to .config
 #

 File tmp/.config-target.in:

  55020         select DEFAULT_urandom-seed
  55021         select DEFAULT_urngd
  55022         select DEFAULT_wpad-basic-mbedtls
  55023         select DEFAULT_|
  55024         help
  55025           Build firmware images for Routerich BE7200

Fixes: ff5e66a9208a ("mediatek: add support for Routerich BE7200")
Signed-off-by: Hannu Nyman <hannu.nyman@iki.fi>
Link: https://github.com/openwrt/openwrt/pull/21376
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agokernel: add kernel module sun6i_csi and ov5640 20085/head
Michel Promonet [Sun, 14 Dec 2025 15:58:32 +0000 (16:58 +0100)] 
kernel: add kernel module sun6i_csi and ov5640

This is adding SUN6I-CSI and OV5640 driver for AllWinner platform for NanoPi

Signed-off-by: Michel Promonet <michel.promonet@free.fr>
Link: https://github.com/openwrt/openwrt/pull/20085
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agomediatek: add support for device zbt-z8103ax-c 19823/head
Jörg Seitz [Sun, 21 Dec 2025 10:55:34 +0000 (11:55 +0100)] 
mediatek: add support for device zbt-z8103ax-c

- adopted MTD partition size increase from 64M to 128M
  -> this allows boot to complete
- moved MAC addressing stuff out of partition definitions
- all MAC addressing stuff is in .dtsi

Specifications:

SoC: MediaTek MT7981B
RAM: 256MiB
Flash: Winbond SPI-NAND 128 MiB
Switch: 1 WAN, 3 LAN (Gigabit) MediaTek MT7531
Buttons: Reset, Mesh
Power: DC 12V 1A
WiFi: MT7981B 2.4Ghz & 5.8Ghz

Led Layout from bottom to top:

    Power
    Mesh (RGB Led, user controllable, default set to OpenWrt Status)
    WLAN 2 GHz (user controllable)
    WAN (user controllable)
    LAN3
    LAN2
    LAN1
    WLAN 5 GHz (Not on front panel but blinks through enclosure,
               user controllable)

Buttons:

    Reset
    Mesh (user controllable, no default function)

Installation:

A. Through U-Boot menu:

 -  Prepare your connecting computer to use a static IP in
network 192.168.1.0/24
 -  Power down the router and hold in the Reset button.
 -  While holding in the button power up the router again.
 -  Hold the button in for 10 seconds and then release.
 -  Use your browser to go to 192.168.1.1
 -  If you see a GUI allowing for flashing firmware then
you got the right model.
 -  Upload the sysupgrade file.

Note: Recovery GUI can be used to recover from an incorrect
      firmware flash.

B. Through OpenWrt Dashboard:

    If your router comes with OpenWrt preinstalled
(modified by the seller), you can easily upgrade
by going to the dashboard (192.168.1.1) and then
navigate to System -> Backup/Flash firmware,
then flash the firmware

MAC Addresses were found in Factory partition:

offset 0x4 F8:5E:3C:xx:xx:aa --> Router Label -2
offset 0xa F8:5E:3C:xx:xx:bb --> Router Label -1
offset 0x24 F8:5E:3C:xx:xx:cc --> Router Label +1
offset 0x2a F8:5E:3C:xx:xx:yy --> printed on Router Label

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/19823
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agomediatek: extract DTS include for zbt z8103ax
Jörg Seitz [Sun, 21 Dec 2025 09:59:06 +0000 (10:59 +0100)] 
mediatek: extract DTS include for zbt z8103ax

- Use .dtsi for old z8103ax featuring a 64M Nand
- Prepare .dtsi for model C of z8103ax featuring a 128M Nand

This .dtsi is supposed to match boards labeled as hardware
revision Z8103AX_V01. Model variant D of zbt-z8103ax appears
to use very same board.

DTS include does also

- set wifi mac addresses in &wifi section
- set eth mac addresses in &eth section
- set LAN switch mac addresses in &switch section

All of the above allows to get rid of 11_fix_wifi_mac script

Signed-off-by: Jörg Seitz <github.joeterminal@xoxy.net>
Link: https://github.com/openwrt/openwrt/pull/19823
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agoopenssl: add kTLS support option 21306/head
Tan Zien [Sun, 28 Dec 2025 00:08:33 +0000 (08:08 +0800)] 
openssl: add kTLS support option

This commit add option to enable kTLS support, improving
performance by offloading TLS encryption and decryption to
kernel space.

- Reduced CPU usage by minimizing data copying between user space
  and kernel space.
- Enables the use of the sendfile() system call with encrypted
  sockets for zero-copy data transmission.
- Leverages hardware-accelerated NIC that support TLS offloading.

Signed-off-by: Tan Zien <nabsdh9@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21306
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agoairoha: replace patches with upstream version 21333/head
Aleksander Jan Bajkowski [Tue, 16 Dec 2025 21:02:34 +0000 (22:02 +0100)] 
airoha: replace patches with upstream version

Replace patches with version accepted upstream.

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/21333
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 days agomediatek: filogic: add support for Cudy AP3000 Wall v1 21266/head
Derek Denk [Wed, 31 Dec 2025 00:34:47 +0000 (17:34 -0700)] 
mediatek: filogic: add support for Cudy AP3000 Wall v1

This commit adds support for the Cudy AP3000 Wall v1.

SoC: MediaTek MT7981b
RAM: 256MiB
Flash: spi-nand spi0.0: 128 MiB
Wifi: MediaTek MT7981 2x2 DBDC 802.11ax 2T2R (2.4 / 5)
LEDs: 1 LED in two colors (red & white)
Buttons: 1 reset, 1 led on/off
Ethernet: 5x 1GbE
Power: PoE powered (standalone)

The stock firmware is a customized variant of OpenWrt, which implements
a signature check that only allows flashing official firmware. Cudy offers
intermediate OpenWrt firmware images on their website [1][2] which do not
implement the signature check. After flashing the intermediate image the
upstream official OpenWrt image can be installed.

The stock firmware can be recovered via TFTP using the U-Boot based boot
loader[3]. Set up a TFTP server on your computer with IP 192.168.1.88/24
serving the stock firmware from Cudy's website renamed to "recovery.bin".
Press and hold the reset button while powering on the device, wait for the
TFTP server to send the recovery.bin file, then release the reset button.
The router will take a couple of minutes to reboot and set up the stock
firmware.

[1] https://www.cudy.com/blogs/faq/openwrt-software-download
[2] https://drive.google.com/drive/folders/1BKVarlwlNxf7uJUtRhuMGUqeCa5KpMnj
[3] https://www.cudy.com/en-us/blogs/faq/how-to-recovery-the-cudy-router-from-openwrt-firmware-to-cudy-official-firmware

Signed-off-by: Derek Denk <derek.denk@live.com>
Link: https://github.com/openwrt/openwrt/pull/21266
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agomediatek: add support for Routerich BE7200 21235/head
Mikhail Zhilkin [Sat, 20 Dec 2025 15:43:45 +0000 (18:43 +0300)] 
mediatek: add support for Routerich BE7200

This PR adds support for Routerich BE7200 router.

Specification
-------------
- SoC       : MediaTek MT7987A Quad-core ARM Cortex-A53 2.0 GHz
- RAM       : 1024 MiB DDR4
- Flash     : SPI-NAND 512 MiB (Giga Device)
- WLAN      : MediaTek MT7992E, WiFi 7
  - 2.4 GHz : b/g/n/ax, MIMO 4x4
  - 5 GHz   : a/n/ac/ax, MIMO 4x4
- Ethernet  : 10/100/1000 Mbps x3 (LAN, Airoha AN8855AE)
              10/100/1000/2500 Mbps x1 (WAN, SoC internal phy)
- USB       : 3.0 x1
- Buttons   : Mesh, Reset
- LEDs      : 1x Status (blue), gpio-controlled
              1x WiFi (blue), gpio-controlled
              1x mesh (blue), gpio-controlled
              3x LAN activity (blue), gpio-controlled
              1x WAN activity (blue), gpio-controlled
              1x WAN no-link (red), gpio-controlled
- Power     : 12 VDC, 1.5 A

Installation
------------
1. Update stock firmware via the web interface (don't keep settings).

Update U-Boot (optional)
------------------------
After installing OpenWrt, you may want to install opensource U-Boot.
1. Install kmod-mtd-rw:
   apk update && apk add kmod-mtd-rw
2. Unlock bootloader:
   insmod mtd-rw i_want_a_brick=1
   mtd unlock BL2
   mtd unlock FIP
3. Download and write open-source BL2 and FIP:
   cd /tmp
   wget https://.../openwrt-mediatek-filogic-routerich_be7200-preloader.bin
   wget https://.../openwrt-mediatek-filogic-routerich_be7200-bl31-uboot.fip
   mtd write /tmp/openwrt-mediatek-filogic-routerich_be7200-preloader.bin BL2
   mtd write /tmp/openwrt-mediatek-filogic-routerich_be7200-bl31-uboot.fip FIP
4. Reboot the router.

Return to stock
---------------
1. Update OpenWrt wirh the vendor's firmware (don't keep settings).

Recovery (original U-Boot)
-----------------------------
1. Press Reset button and power on the router. After ~10 sec release
   the button;
2. Upload and flash squashfs-sysupgrade.itb image via the web interface.

Recovery (open-source U-Boot)
-----------------------------
1. Place OpenWrt
   'openwrt-mediatek-filogic-routerich_be7200-initramfs-recovery.itb'
   image on the tftp server (IP: 192.168.1.254)
2. Press Reset button and power on the router. After ~10 sec release
   the button.
3. Use OpenWrt initramfs system for recovery

Recovery (full disaster)
------------------------
Use UART and mtk_uartboot tool.
Link: https://github.com/981213/mtk_uartboot
USB power control
-----------------
Disable: echo disabled > /sys/devices/platform/usb-power/state
Enable: echo enabled > /sys/devices/platform/usb-power/state

UART
----
UART pins are silkscreened on the PCB. Don't connect Vcc.
Serial connection parameters: 115200, 8n1, 3.3V

MAC addresses
-------------
+---------+-------------------+-----------+
|         | MAC               | Algorithm |
+---------+-------------------+-----------+
| WAN     | 24:0f:5e:xx:xx:30 | label     |
| LAN     | 24:0f:5e:xx:xx:31 | label+1   |
| WLAN 2g | 24:0f:5e:xx:xx:32 | label+2   |
| WLAN 5g | 24:0f:5e:xx:xx:33 | label+3   |
+---------+-------------------+-----------+
The WLAN 2g MAC was found in 'Factory', 0x4

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21235
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agoarm-trusted-firmware-mediatek: add mt7987-spim-nand0 build
Mikhail Zhilkin [Sat, 20 Dec 2025 15:40:22 +0000 (18:40 +0300)] 
arm-trusted-firmware-mediatek: add mt7987-spim-nand0 build

This commit adds a new non-ubi spim-nand build for mt7987.

Signed-off-by: Mikhail Zhilkin <csharper2005@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21235
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agorealtek: dsa: rtl931x: configure phy ability source 21351/head
Jonas Jelonek [Thu, 1 Jan 2026 20:11:17 +0000 (20:11 +0000)] 
realtek: dsa: rtl931x: configure phy ability source

The MAC can get PHY abilities, link status, etc. via different ways. In
RTL931x, the corresponding register needs to be setup properly. By
default, all ports use out-of-band MDIO polling to retrieve that
information. Thus, PHY-backed ports usually work with the default
setting.

For SFP ports, there is no MDIO polling available. Instead, the SerDes
ability bus needs to be used to retrieve the link information.

So far, the bootloader (e.g. U-boot) had to properly initialize that
setting. Instead of relying on that, do that properly during MAC setup.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21351
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agounetmsg: fix variable shadowing bug in network_rx_cleanup_state()
Felix Fietkau [Fri, 2 Jan 2026 18:59:49 +0000 (18:59 +0000)] 
unetmsg: fix variable shadowing bug in network_rx_cleanup_state()

The for-in loop variable 'name' was shadowing the function parameter,
causing remote subscription cleanup to fail when hosts disconnect.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
5 days agorealtek: rtl838x: fix lan9 and lan10 on Netgear GS110TUP 21346/head
Jacob Potter [Wed, 31 Dec 2025 19:45:31 +0000 (14:45 -0500)] 
realtek: rtl838x: fix lan9 and lan10 on Netgear GS110TUP

The GS110TUP's lan9 port is connected via a QSGMII PHY to SERDES 2, and
therefore should use the SWITCH_PORT_SDS macro instead of SWITCH_PORT. This
was missed in e956adfe because the GS110TUP is not particularly well
documented and the old code was confusing.

lan10 is an SFP and doesn't have an onboard PHY, so also remove its
associated PHY references and update it to match other devices' SFP ports.

Fixes: https://github.com/openwrt/openwrt/issues/21324
Signed-off-by: Jacob Potter <jacob@j4cbo.com>
Link: https://github.com/openwrt/openwrt/pull/21346
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agomvebu: Add support for WD MyCloud EX2 Ultra 17779/head
Robert Senderek [Wed, 12 Nov 2025 09:08:37 +0000 (10:08 +0100)] 
mvebu: Add support for WD MyCloud EX2 Ultra

Hardware
--------
Marvell Armada 385 (MV88F6820)
1GB RAM
256MB NAND
1x 1Gbit
2x USB 3.0
2x SATA-III
UART: 115200 8N1 3.3V
RTC
Weltrend MCU WT6703F connected via UART1 for Power LED / PWM Fan / hw reset / WoL

Installation
------------
Connect UART 3.3V adapter to JP2  pins: 1-RX / 2-GND / 5-TX

Use USB2.0 FAT32 pendrive with openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin
 1. stop boot by pressing 1
 2. usb start
 3. fatload usb 0:1  0x02000000 openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin;bootm 0x02000000 -
 4. do backup mtd1 mtd3
 5. use sysupgrade

Or tftp
 1. stop boot by pressing 1
 2. setenv ethact egiga2;setenv serverip 192.168.11.114;setenv ipaddr 192.168.11.113
 3. tftpboot 0x02000000 openwrt-mvebu-cortexa9-wd_cloud-ex2-ultra-initramfs-kernel.bin; bootm 0x02000000 -
 4. do backup mtd1 mtd3
 5. use sysupgrade

or Evgeny Kolesnikov <evgenyz@gmail.com> method from his failed PR 2040

- Using original firmware's network settings obtain SSH access to the device.
- Put *-image-cfs-factory.bin and *-uImage-factory.bin images into device's /tmp directory.
- Write kernel (uImage) image 'flash_eraseall /dev/mtd1 && nandwrite --markbad -p /dev/mtd1 /tmp/*-uImage-factory.bin'.
- Write rootfs (image-cfs) image 'ubiformat /dev/mtd3 -f /tmp/*-image.cfs-factory.bin -y'.
- Reboot the device.

Installation (upgrade):

Use *-sysupgrade.bin in a usual way.
Weltrend MCU control is done via uart1 19200
install coreutils-stty
stty -F /dev/ttyS1 raw speed 19200
stty -F /dev/ttyS1 raw speed 19200

PWM Fan Control
off: 00
echo -n -e '\xfa\x02\x00\x00\x00\x00\xfb' > /dev/ttyS1
slow: 5F
echo -n -e '\xfa\x02\x00\x5f\x00\x00\xfb' > /dev/ttyS1
max: FF
echo -n -e '\xfa\x02\x00\xff\x00\x00\xfb' > /dev/ttyS1

Power LED Control
Blue
echo -n -e '\xfa\x26\x00\x11\x00\x01\xfb' > /dev/ttyS1
Red
echo -n -e '\xfa\x26\x00\x14\x00\x01\xfb' > /dev/ttyS1
Orange
echo -n -e '\xfa\x26\x00\x12\x00\x01\xfb' > /dev/ttyS1

more here: https://github.com/c-MM/mcm-daemon/blob/master/mcm.h

Signed-off-by: Robert Senderek <robert.senderek@10g.pl>
Link: https://github.com/openwrt/openwrt/pull/17779
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agotreewide: switch to HTTPS URL 21279/head
Yanase Yuki [Thu, 25 Dec 2025 04:48:18 +0000 (13:48 +0900)] 
treewide: switch to HTTPS URL

Avoids insecure plain HTTP.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agof2fs-tools: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:37:00 +0000 (13:37 +0900)] 
f2fs-tools: update project URL

Use redirected new URL.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agoadb: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:34:59 +0000 (13:34 +0900)] 
adb: update project URL

It seems old website has been retired.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agoiw: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:33:10 +0000 (13:33 +0900)] 
iw: update project URL

It seems project URL has been changed.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agoiproute2: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:31:10 +0000 (13:31 +0900)] 
iproute2: update project URL

It seems project URL has been changed.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agoebtables: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:27:51 +0000 (13:27 +0900)] 
ebtables: update project URL

Website has been moved to netfilter.org.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agosysfsutils: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:25:06 +0000 (13:25 +0900)] 
sysfsutils: update project URL

Project has been moved to GitHub.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agoreadline: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:21:45 +0000 (13:21 +0900)] 
readline: update project URL

It seems domain has been changed.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agolibxml2: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:18:57 +0000 (13:18 +0900)] 
libxml2: update project URL

It seems old website has been retired.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agotreewide: update SELinux project URL
Yanase Yuki [Thu, 25 Dec 2025 04:15:57 +0000 (13:15 +0900)] 
treewide: update SELinux project URL

It seems old website has been retired.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agolantiq: remove intel.com from URL
Yanase Yuki [Thu, 25 Dec 2025 04:09:46 +0000 (13:09 +0900)] 
lantiq: remove intel.com from URL

Intel doesn't have lantiq anymore.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agojansson: update project URL
Yanase Yuki [Thu, 25 Dec 2025 04:06:07 +0000 (13:06 +0900)] 
jansson: update project URL

Old website redirects to github.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agotreewide: remove lantiq dot com URL
Yanase Yuki [Thu, 25 Dec 2025 04:02:47 +0000 (13:02 +0900)] 
treewide: remove lantiq dot com URL

This website is offline.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agotreewide: use HTTPS URL for www.kernel.org
Yanase Yuki [Thu, 25 Dec 2025 03:54:10 +0000 (12:54 +0900)] 
treewide: use HTTPS URL for www.kernel.org

Avoids insecure plain HTTP.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agotreewide: use HTTPS URL for GNU websites
Yanase Yuki [Thu, 25 Dec 2025 03:49:19 +0000 (12:49 +0900)] 
treewide: use HTTPS URL for GNU websites

Avoids insecure plain HTTP.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agotreewide: update u-boot URL
Yanase Yuki [Thu, 25 Dec 2025 03:44:10 +0000 (12:44 +0900)] 
treewide: update u-boot URL

U-Boot website has been moved to docs.u-boot.org.

Signed-off-by: Yanase Yuki <dev@zpc.st>
Link: https://github.com/openwrt/openwrt/pull/21279
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agorealtek: rename smi-address dts property 21343/head
Markus Stockhausen [Wed, 31 Dec 2025 12:35:17 +0000 (13:35 +0100)] 
realtek: rename smi-address dts property

The rtl9300,smi-address property was first developed for the RTL930x
targets. So it got a device specific prefix. Nowadays it is used for
RTL931x targets too. Convert it to our gerneric realtek prefix.

find ./realtek -type f -exec sed -i 's/rtl9300,smi-address/realtek,smi-address/g' {} +

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21343
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agorealtek: rt-loader: allow piggy-backed uimage 21332/head
Markus Stockhausen [Tue, 30 Dec 2025 16:34:41 +0000 (17:34 +0100)] 
realtek: rt-loader: allow piggy-backed uimage

Until now rt-loader expects a piggy-backed lzma compressed data
stream. Be more flexible and allow a piggy-backed uimage as well.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21332
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agorealtek: rt-loader: rename flash loading function
Markus Stockhausen [Tue, 30 Dec 2025 16:32:45 +0000 (17:32 +0100)] 
realtek: rt-loader: rename flash loading function

The loading function searches the image on flash (or its memory
copy). Rename it to make clearer what the function does. Adapt
comments accordingly.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21332
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agorealtek: rt-loader: make search_image() generic
Markus Stockhausen [Tue, 30 Dec 2025 15:54:56 +0000 (16:54 +0100)] 
realtek: rt-loader: make search_image() generic

Until now search_image() is used for searching a uImage on
flash (or the memory mapped equivalent). In a future commit
this will be reused to search for a piggy-backed uimage.
Make this function generic by

- replacing "flash" with "image" in variables
- Search bytewise and do not rely on 4 byte alignment
- remove 2 obsolete variables
- move console output to caller

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21332
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agorealtek: rt-loader: enhance is_uimage()
Markus Stockhausen [Tue, 30 Dec 2025 15:43:37 +0000 (16:43 +0100)] 
realtek: rt-loader: enhance is_uimage()

Until now is_uimage() is only a crc check and the caller
still needs to check other bits of the uimage header. Make
this function what it is meant to be.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21332
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agopackage: ethtool: specify just one default variant 21363/head
Eric Fahlgren [Fri, 2 Jan 2026 16:20:15 +0000 (08:20 -0800)] 
package: ethtool: specify just one default variant

Inadvertently defining 'DEFAULT_VARIANT' on both ethool and
ethtool-full variants resulted in

    $ make defconfig
    tmp/.config-package.in:121615:error: recursive dependency detected!
    tmp/.config-package.in:121615:  symbol PACKAGE_ethtool-full is selected by PACKAGE_ethtool
    tmp/.config-package.in:121605:  symbol PACKAGE_ethtool depends on PACKAGE_ethtool-full

Fix this by simply undefining 'DEFAULT_VARIANT' on the ethtool-full
variant, which is ugly, but expedient.

Fixes: https://github.com/openwrt/openwrt/commit/f4fdb996
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21363
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agotreewide: add explicit default variant 21358/head
Eric Fahlgren [Fri, 2 Jan 2026 02:02:30 +0000 (18:02 -0800)] 
treewide: add explicit default variant

Some packages with variants did not specify the default among the
alternatives, so were left without any apk 'provider_priority'
for that package.  This caused the apk solver to select the wrong
variant, silently changing the requested package list.

Notable among these were busybox, procd and the hostapd/wpad suite.
This behavior presented in the imagebuilders when creating the
image as follows, silently replacing packages even when explicitly
requested:

    $ make image PACKAGES=busybox
    ...
    ( 14/148) Installing busybox-selinux (1.37.0-r6)
    ...

We add 'DEFAULT_VARIANT:=1' to the packages that were missing one,
providing apk with sufficient information to choose the correct
package.

See link below for further examples and discussion.

Link: https://github.com/openwrt/openwrt/pull/21288#issuecomment-3704101422
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21358
Signed-off-by: Robert Marko <robimarko@gmail.com>
5 days agoutil-linux: update to 2.41.3 21276/head
Wei-Ting Yang [Wed, 24 Dec 2025 15:20:12 +0000 (23:20 +0800)] 
util-linux: update to 2.41.3

Release notes:
https://www.kernel.org/pub/linux/utils/util-linux/v2.41/v2.41.3-ReleaseNotes

Also update URL to use HTTPS.

Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21276
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
5 days agotools: util-linux: update to 2.41.3
Wei-Ting Yang [Wed, 24 Dec 2025 15:16:00 +0000 (23:16 +0800)] 
tools: util-linux: update to 2.41.3

Release notes:
https://www.kernel.org/pub/linux/utils/util-linux/v2.41/v2.41.3-ReleaseNotes

Remove upstreamed:
110-meson-fix-a-bug-in-posixipc_libs-configuration.patch

Signed-off-by: Wei-Ting Yang <williamatcg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/21276
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
6 days agolibiwinfo: update to Git HEAD (2025-11-29) 21347/head
Hauke Mehrtens [Wed, 31 Dec 2025 20:33:08 +0000 (21:33 +0100)] 
libiwinfo: update to Git HEAD (2025-11-29)

2ebef3da84e8 iwinfo: Query hostapd for 'ssid2'

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Link: https://github.com/openwrt/openwrt/pull/21347
Signed-off-by: Robert Marko <robimarko@gmail.com>
7 days agorealtek: setup cpu port in soc_info structure 21327/head
Markus Stockhausen [Tue, 30 Dec 2025 13:07:32 +0000 (14:07 +0100)] 
realtek: setup cpu port in soc_info structure

A lot of soc_info usage has been reorganized. Nevertheless there
are some consumers left. A very critical one is the dsa/qos coding.
It makes use of the cpu_port in this shared structure. This is
totally broken as that info is never properly initialized. Fill
the cpu_port according to the identified hardware.

Remark: Looking at the prom.c history soc_info.cpu_port was never
setup since the beginning of time. So no "fixes" tag here.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/21327
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>