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.
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.
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
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.
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
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>
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)
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.
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.
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>
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.
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.
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.
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.
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.
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
#
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
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
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.
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.
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
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.
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>
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
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
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
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' {} +
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
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.
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>
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:
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.
realtek: RTL930x: setup highmem registers during init
For some reason the highmem configuration of RTL930x
devices was totally missed until now. Take over the
setup from the SDK. This will avoid boot stalls on
switches with more than 256 MB RAM when switching
over to kernel 6.18.
realtek: determine memory size during initialization
For proper highmem initialization on RTL930x the size of the
installed memory is needed during early bootup. Enhance the
soc_info structure and fill the data from the registers.
While we are here remove the obsolete compatible variable from
the soc_info structure.
Adapt boot message to show the memory size.
old: SoC Type: Realtek RTL9301 rev B (6487)
new: Realtek RTL9301 rev B (6487) SoC with 512 MB
There is mix of variable naming in prom.c. Use a fixed
prefix of "rtl_" for all static variables. Additionally
remove the prefix from rtl83xx_set_system_type as it is
a generic function for all SoC types.
George Sapkin [Thu, 25 Dec 2025 15:16:18 +0000 (17:16 +0200)]
ca-certificates: provide a virtual package
Switch ca-certs provides to use the new virtual provides semantic that
enables ca-bundle and ca-certificates to be installed side-by-side.
Provide the new format virtual ca-certificates-any in ca-bundle.
Fixes: https://github.com/openwrt/openwrt/issues/21257 Signed-off-by: George Sapkin <george@sapk.in> Link: https://github.com/openwrt/openwrt/pull/21288 Signed-off-by: Robert Marko <robimarko@gmail.com>
George Sapkin [Sun, 28 Dec 2025 15:22:41 +0000 (17:22 +0200)]
build: provide virtual self in kmods
Add an implicit self-provide to kmods. apk can't handle self provides,
be it versioned or virtual, so opt for a prefix and a suffix instead.
Package name without a prefix/suffix is too generic and might conflict
with other packages, e.g. wireguard. This allows several variants to
provide the same virtual package without adding extra provides to the
default one, e.g. r8169 implicitly provides kmod-r8169-any and is marked
as default, so r8125 can explicitly provide @kmod-r8169-any as well.
George Sapkin [Thu, 25 Dec 2025 13:32:29 +0000 (15:32 +0200)]
build: add support for virtual provides
Allow defining virtual provides using the PROVIDES field by prefixing
them with @, e.g.:
PROVIDES:=@ca-certs
Virtual provides don't own the provided name and multiple packages with
the same virtual provides can be installed side-by-side. Packages must
still take care not to override each other's files.
Add an implicit self-provide to packages. apk can't handle self
provides, be it versioned or virtual, so opt for a suffix instead. This
allows several variants to provide the same virtual package without
adding extra provides to the default one, e.g. wget implicitly provides
wget-any and is marked as default, so wget-ssl can explicitly provide
@wget-any as well.
Filter out virtual provides when generating metadata.
Filter out virtual provides prefix and self provide where appropriate.
Co-authored-by: Goetz Goerisch <ggoerisch@gmail.com> Signed-off-by: John Audia <therealgraysky@proton.me> Link: https://github.com/openwrt/openwrt/pull/21329 Signed-off-by: Robert Marko <robimarko@gmail.com>
Eric Fahlgren [Mon, 3 Nov 2025 20:34:37 +0000 (12:34 -0800)]
mediatek: filogic: fix supported_devices list for gl-mt2500
The SUPPORTED_DEVICES sets for both Maxlinear (v1) and Airoha (v2)
devices were identical, so sysupgrade was unable to detect when an
incorrect image was being installed. This caused "soft bricking" of
devices when a v1 image was installed on a v2 device, and vice versa.
Fix this by making the supported_devices distinct for each device
version, by renaming the devices with a version-specific name.
This is reflected in the file name and the image metadata.