]> git.ipfire.org Git - thirdparty/openwrt.git/log
thirdparty/openwrt.git
3 weeks agosdk: set package as the root directory for base feed 20396/head
Christian Marangi [Mon, 13 Oct 2025 00:32:44 +0000 (02:32 +0200)] 
sdk: set package as the root directory for base feed

To produce consistent source entry for package compiled from non-SDK and
SDK build, set the "--root=package" flag for the base feed.

This will set the root directory for the base feed to the OpenWrt
core repository "package" directory.

This fix the reproducible problem of package build from SDK that have
the source entry set to "feeds/base/package/..." for every package
coming from the base feed.

Link: https://github.com/openwrt/openwrt/pull/20396
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
3 weeks agoscripts/feeds: implement support for --root option
Christian Marangi [Sun, 12 Oct 2025 23:59:52 +0000 (01:59 +0200)] 
scripts/feeds: implement support for --root option

Some feeds might need to set the source for their packages in a
different directory than the cloned one.

For example a feed "test" might be an entire repository and the relevant
packages that wants to be included are in the directory "foo".

In such scenario the source info in the package will result in something
like "feeds/test/foo/network/dnsmasq" instead of an expected entry like
"feeds/test/network/dnsmasq".

To give a more real-world example, this problem is currently present
with OpenWrt SDK where the SDK clone the entire OpenWrt core repository
as "base" feeds but the package are present in the "package" directory.

This cause every package to have the source entry set to
"feeds/base/package/..." conflicting with what a non-SDK build do with
setting the source entry to "feeds/base/..."

To solve this, actually enable support for "flags" in the feeds script
and implement a new option "--root" to set the root directory for the
defined feed to an inner directory.

The "flags" in the feed script are no more than argument option that can
be defined right after the "src-" type in the feed.conf file.

This feature was partially implemented but never actually used for
anything keeping it dormant with all the core piece there (the pattern
regex always accounted for these extra option but they were never passed
to the relevant functions)

An example of the "--root" flag is the following:

src-git --root=package base https://git.openwrt.org/openwrt/openwrt.git;main

With "--root" defined, the script will append "_root" to the feed name
clone directory and will create a symbolic link named with the feed name
and pointing to the feed name clone directory + the value in root.

From the previous example:

feed name: base -> clone directory: base_root
symbolic link: base -> base_root/package

The script internally reference the "_root" directory for every update
operation and OpenWrt build system transparently use the feed name
directory to reference feed packages producing consistent source info
entry.

Link: https://github.com/openwrt/openwrt/pull/20396
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
3 weeks agowifi-scripts: ucode: fix airtime_mode with hostapd-mini
Zhi-Jun You [Wed, 8 Oct 2025 06:55:06 +0000 (14:55 +0800)] 
wifi-scripts: ucode: fix airtime_mode with hostapd-mini

Currently wifi-scripts ucode appends airtime_mode to hostapd config file
unconditionally.
However this breaks bringing up interface with hostapd-mini
because the mini variant doesn't support airtime policy.

Fix this by changing the script to append airtime_mode only when
airtime_mode is set to greater than zero value in /etc/config/wireless.

Fixes: #20136
Fixes: #20314
Signed-off-by: Zhi-Jun You <hujy652@protonmail.com>
3 weeks agoucode: add fs.mkdtemp function
Felix Fietkau [Fri, 10 Oct 2025 12:19:58 +0000 (14:19 +0200)] 
ucode: add fs.mkdtemp function

Useful for creating temporary directories

Signed-off-by: Felix Fietkau <nbd@nbd.name>
3 weeks agouboot-ath79: update to v2025.10 20358/head
INAGAKI Hiroshi [Thu, 9 Oct 2025 13:19:20 +0000 (22:19 +0900)] 
uboot-ath79: update to v2025.10

Update the version of uboot-ath79 package to U-Boot v2025.10 release.

Tested on:

- NEC Aterm WG600HP (AR9344)
- NEC Aterm WG1400HP (QCA9558)

Signed-off-by: INAGAKI Hiroshi <musashino.open@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20358
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 weeks agorealtek: fix SFP ports on RTL83xx 20374/head
Lorenz Brun [Fri, 10 Oct 2025 21:11:38 +0000 (23:11 +0200)] 
realtek: fix SFP ports on RTL83xx

Right now the phylink capability function enables 2.5G and 10G modes on
Maple and Cypress, which they mostly (other than two SERDES on Cypress)
don't support. This causes these modes to be selected and break the link
as they are not supported by hardware.

I looked into doing this properly, but it cannot just be done based on
SoC, but needs to take the whole topology into account as a given MAC
might have very different capabilities depending on what SERDES are
assigned to it. So for now just use 1G and QSGMII for RTL83xx and 10G
for RTL93xx. This mostly works, except it will downgrade some 10G links
on RTL839x, but since there are also 1G SFPs on these this cannot be
solved without fully accounting for the global MAC and SERDES
configuration.

So this makes all of the 1G SFP slots work again, while keeping most of
the 10G SFP+ slots working at 10G with minimal changes.

Signed-off-by: Lorenz Brun <lorenz@brun.one>
Link: https://github.com/openwrt/openwrt/pull/20374
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 weeks agorealtek: Skip auto-MAC assignment for devices with MACs in DT 20241/head
Sven Eckelmann [Mon, 29 Sep 2025 16:30:12 +0000 (18:30 +0200)] 
realtek: Skip auto-MAC assignment for devices with MACs in DT

If the devicetree contains the appropriate nodes to configure the MAC
addresses for each physical DSA port, then these MAC addresses must be used
in OpenWrt and not some automatically generated ones. Otherwise the device
often ends up with addresses which are locally administered and not
matching any expected port-to-MAC scheme.

Devices which only get the MAC address for eth0 must still auto-generate
these MAC addresses until the devicetree was updated to also include the
correct ones.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20241
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 weeks agorealtek: Avoid empty lan mac in initial network setup
Sven Eckelmann [Sun, 5 Oct 2025 07:00:08 +0000 (09:00 +0200)] 
realtek: Avoid empty lan mac in initial network setup

If the lan_mac cannot be found, it is still used (as empty string) in
various operations. This is not valid and other 02_network scripts checking
for a non-empty string before using it. This should also be adopted for the
realtek 02_network.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20241
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 weeks agorealtek: Split initial network setup in functions
Sven Eckelmann [Sun, 5 Oct 2025 06:55:49 +0000 (08:55 +0200)] 
realtek: Split initial network setup in functions

Having everything in a big script without any structure makes it
unnecessary hard to get an overview or modify it without triggering
unexpected side effects.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20241
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
3 weeks agorealtek: dsa: Adjust prefix for bridge member functions 20360/head
Sven Eckelmann [Fri, 10 Oct 2025 09:49:56 +0000 (11:49 +0200)] 
realtek: dsa: Adjust prefix for bridge member functions

The preferred prefix for the Realtek DSA driver code is "rtldsa" and no
longer "rtl83xx". This makes sure that the different drivers have
non-conflicting prefixes and because of this non-conflicting function
names.

Suggested-by: Felix Baumann <felix.bau@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agorealtek: dsa: Fix name of RTL93xx switch_ops
Sven Eckelmann [Fri, 10 Oct 2025 09:49:56 +0000 (11:49 +0200)] 
realtek: dsa: Fix name of RTL93xx switch_ops

The RTL930x and the RTL931x SoC families share the same struct
dsa_switch_ops. This should be represented in the name of the object.

Suggested-by: Felix Baumann <felix.bau@gmx.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agorealtek: dsa: Add support for port isolation
Sven Eckelmann [Thu, 9 Oct 2025 12:59:16 +0000 (14:59 +0200)] 
realtek: dsa: Add support for port isolation

If two ports are in isolation mode then these ports are not supposed to be
able to communicate between each other. This can be achieved in the realtek
switch by removing the other isolated port(s) from the port list of an
isolated port.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agorealtek: dsa: Drop unused traffic_get helpers
Sven Eckelmann [Thu, 9 Oct 2025 13:01:06 +0000 (15:01 +0200)] 
realtek: dsa: Drop unused traffic_get helpers

The realtek driver is now in full control of the port matrix. It doesn't
need to rely on the current state of the HW to adjust it. The new port
matrix is calculated automatically using rtldsa_update_port_member() and
then written to the registers/tables.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agorealtek: dsa: Simplify port member handling
Sven Eckelmann [Thu, 9 Oct 2025 14:28:47 +0000 (16:28 +0200)] 
realtek: dsa: Simplify port member handling

It is not necessary to read the back the current port members for a
specific port for enabling/disabling a port. All these members which are
expected to be in the HW port matrix of an active port are already stored
in the port specific member "pm".

And when a port is disabled, the port must no longer forwarding traffic to
any other port. Just writing 0 to the members is therefore good enough and
no read-back of the old HW state is necessary.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agorealtek: dsa: Share port member configuration code
Sven Eckelmann [Thu, 9 Oct 2025 12:56:39 +0000 (14:56 +0200)] 
realtek: dsa: Share port member configuration code

The leave and join callbacks for DSA were using their own implementation of
the port member handling code. This makes the implementation of additional
functionality based on the port member matrix complicated because it needs
to be implemented in both places and also in the new code path for the
introduced feature.

By sharing this code, it is much easier to guarantee that all code paths
behave the same. This approach is already implemented by other DSA drivers
like qca8k, mt7530 or ksz.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agorealtek: Switch booleans in rtl838x_port to single bits
Sven Eckelmann [Thu, 9 Oct 2025 11:56:19 +0000 (13:56 +0200)] 
realtek: Switch booleans in rtl838x_port to single bits

In upstream kernel, it is not well received to use a lot of simple booleans
in structs. It is preferred to use 1-bit bitfields [1] and consolidate the
booleans together.

[1] https://www.kernel.org/doc/html/v6.16/process/coding-style.html#using-bool

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20360
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agoipq-wifi: add Yuncore AX850
Robert Marko [Sun, 12 Oct 2025 09:59:34 +0000 (11:59 +0200)] 
ipq-wifi: add Yuncore AX850

It seems that adding Yuncore AX850 was missed during the board support,
and this breaks buildbots for ipq50xx with:
ERROR: unable to select packages:
  ipq-wifi-yuncore_ax850 (no such package):
    required by: world[ipq-wifi-yuncore_ax850]
make[4]: *** [/builder/shared-workdir/build/include/image.mk:396: target-dir-90b51871] Error 1
make[4]: *** Waiting for unfinished jobs....

So, add the required meta package.

Fixes: 5d2994a73e20 ("qualcommax: ipq50xx: Add support for Yuncore AX850")
Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agoipq-wifi: update to Git HEAD (2025-10-09)
Robert Marko [Sun, 12 Oct 2025 09:49:16 +0000 (11:49 +0200)] 
ipq-wifi: update to Git HEAD (2025-10-09)

20e5a5a32656 qca4019: add Linksys MR6350 BDF

Signed-off-by: Robert Marko <robimarko@gmail.com>
3 weeks agokernel: add missing cpe id for linux
Florian Eckert [Tue, 30 Sep 2025 12:48:36 +0000 (14:48 +0200)] 
kernel: add missing cpe id for linux

No 'PKG_CPE_ID' is stored for the kernel package Makefile. This commit
adds this.

Signed-off-by: Florian Eckert <fe@dev.tdt.de>
3 weeks agouboot-rockchip: add u-boot device tree back for Radxa ROCK 4D 20376/head
Tianling Shen [Sat, 11 Oct 2025 04:38:22 +0000 (12:38 +0800)] 
uboot-rockchip: add u-boot device tree back for Radxa ROCK 4D

This was removed by mistake.

Fixes: 292cca0e5c72 ("uboot-rockchip: Update to 2025.10")
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20376
Signed-off-by: Nick Hainke <vincent@systemli.org>
3 weeks agouboot-mvebu: update to version 2025.10 20380/head
Stefan Kalscheuer [Sat, 11 Oct 2025 09:45:34 +0000 (11:45 +0200)] 
uboot-mvebu: update to version 2025.10

Update package to the latest stable version.
All patches automatically refreshed.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20380
Signed-off-by: Nick Hainke <vincent@systemli.org>
3 weeks agotools/mkimage: update to version 2025.10 20379/head
Stefan Kalscheuer [Sat, 11 Oct 2025 15:54:34 +0000 (17:54 +0200)] 
tools/mkimage: update to version 2025.10

Update package to the latest stable version.
All patches need to be updated.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20379
Signed-off-by: Nick Hainke <vincent@systemli.org>
3 weeks agouboot-tools: update to version 2025.10
Stefan Kalscheuer [Sat, 11 Oct 2025 11:01:34 +0000 (13:01 +0200)] 
uboot-tools: update to version 2025.10

Update package to the latest stable version.
All patches automatically refreshed.

Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/20379
Signed-off-by: Nick Hainke <vincent@systemli.org>
3 weeks agouboot-mediatek: update to U-Boot v2025.10 20349/head
Daniel Golle [Wed, 8 Oct 2025 17:57:16 +0000 (18:57 +0100)] 
uboot-mediatek: update to U-Boot v2025.10

The most relevant change is the removal of the empty board_init()
functions by u-boot/u-boot@70a4d1fa1dd, which makes many patches not
apply anymore and also requires most board defconfigs to be updated
by adding "# CONFIG_BOARD_INIT is not set" to them.

Also some config symbols have been renamed and downstream boards
had to be adapted accordingly:

u-boot/u-boot@0fd9a3480a0 ("env: Rename OVERWRITE_ETHADDR_ONCE to
                            ENV_OVERWRITE_ETHADDR_ONCE")

u-boot/u-boot@5fb88fa725d ("env: Rename SYS_REDUNDAND_ENVIRONMENT to
                            ENV_REDUNDANT")

u-boot/u-boot@123682c7651 ("env: Rename SYS_RELOC_GD_ENV_ADDR to
                            ENV_RELOC_GD_ENV_ADDR")

u-boot/u-boot@0f44d5549ed ("env: Rename SYS_MMC_ENV_DEV to
                            ENV_MMC_DEVICE_INDEX")

u-boot/u-boot@31617b880ab ("env: Rename SYS_MMC_ENV_PART to
                            ENV_MMC_EMMC_HW_PARTITION")

u-boot/u-boot@ffc4914703a ("env: Rename ENV_MMC_PARTITION to
                            ENV_MMC_SW_PARTITION")

u-boot/u-boot@fb5235239aa ("env: Rename DEFAULT_ENV_FILE to
                            ENV_DEFAULT_ENV_TEXT_FILE")

(also renamed USE_DEFAULT_ENV_FILE to USE_ENV_DEFAULT_ENV_TEXT_FILE)

Remove upstreamed patches:
 * 001-mtd-spinand-winbond-add-Winbond-W25N04KV-flash-suppo.patch
   u-boot/u-boot@fe37fb8214e

 * 002-mtd-spinand-gigadevice-sync-supported-chips-with-lin.patch
   u-boot/u-boot@506ceddffdc

 * 003-net-mediatek-correct-the-AN8855-TPID-value-in-port-i.patch
   u-boot/u-boot@70db2be9fba

 * 004-01-serial-mediatek-fix-register-names-and-offsets.patch
   u-boot/u-boot@6e15d3f91aa

 * 004-02-serial-mediatek-enable-baudrate-accuracy-compensatio.patch
   u-boot/u-boot@6952209ef22

 * 005-clk-mediatek-add-dummy-clk-enable-disable-ops-for-ap.patch
   u-boot/u-boot@1bf21212976

 * 006-env-Fix-possible-out-of-bound-access-in-env_do_env_s.patch
   u-boot/u-boot@0ffd456516b

 * 130-01-env-mtd-add-the-missing-put_mtd_device.patch
   u-boot/u-boot@39ae954b04e

 * 130-02-env-mtd-initialize-saved_buf-pointer.patch
   u-boot/u-boot@7e842bd3315

 * 170-cmd-bootmenu-permit-to-select-bootmenu-entry-with.patch
   u-boot/u-boot@8c986521c3c

Signed-off-by: Daniel Golle <daniel@makrotopia.org>
4 weeks agouboot-rockchip: Update to 2025.10 20331/head
Tianling Shen [Tue, 7 Oct 2025 13:49:29 +0000 (21:49 +0800)] 
uboot-rockchip: Update to 2025.10

Removed upstreamed patches, rebased local patches.

Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
Link: https://github.com/openwrt/openwrt/pull/20331
Signed-off-by: Nick Hainke <vincent@systemli.org>
4 weeks agorealtek: pcs: add setup_serdes callback to rtpcs_cfg 20352/head
Jonas Jelonek [Wed, 8 Oct 2025 19:37:30 +0000 (19:37 +0000)] 
realtek: pcs: add setup_serdes callback to rtpcs_cfg

Add a callback for a serdes setup function to rtpcs_cfg to allow each
SoC variant to define its own SerDes setup routine.

Call the setup_serdes operation in pcs_config if it is defined.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20352
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: pcs: add more SerDes access helpers
Jonas Jelonek [Wed, 8 Oct 2025 08:19:25 +0000 (08:19 +0000)] 
realtek: pcs: add more SerDes access helpers

Add more SerDes access helpers for the upcoming code import from PHY
driver. There, similar helpers are used to read and write full SerDes
registers or only parts of them (aka bitfields).

The helpers are expected to replace the following used in PHY SerDes
code:
  - rtl9300_sds_field_r
  - rtl9300_sds_field_w
  - rtsds_931x_read
  - rtsds_931x_read_field
  - rtsds_931x_write
  - rtsds_931x_write_field

Mark the helpers as unused for now to make the compiler happy. This will
be removed as soon as they are used.

Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20352
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agox86/64: enable 8250_DW 20353/head
Patrick Oppenlander [Thu, 9 Oct 2025 02:35:21 +0000 (13:35 +1100)] 
x86/64: enable 8250_DW

This driver is required for the serial port on headless embedded AMD Ryzen
Embedded V3000 devices such as the SolidRun BEDROCK V3000.

Signed-off-by: Patrick Oppenlander <patrick.oppenlander@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20353
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoairoha: spi: use airoha snfi driver for EN7523 20365/head
Mikhail Kshevetskiy [Fri, 10 Oct 2025 00:15:42 +0000 (03:15 +0300)] 
airoha: spi: use airoha snfi driver for EN7523

There are two spi drivers for en7523/an7581/an7583:
 * en7581-snand (spi-airoha-snfi.c)
 * en7523-spi (spi-en7523.c)
The first one supports DMA, but until recently it has several nasty
issues. The second do things properly but does not support DMA.
Recently the first driver was greatly improved, so there is no sence
keep both drivers anymore.

This patch removes en7523-spi driver and use DMA capable driver instead.
Unfortunately there is a nasty en7523 specific issue.

We found that some serial console may pull TX line to GROUND during board
boot time. Airoha uses TX line as one of it's BOOT pins. This will lead
to booting in RESERVED boot mode. It was found that some flashes operates
incorrectly in RESERVED mode if DMA used.

This patch also adds a hack that turns off DMA and prints big fat warning
if booting in reserved mode was detected. This slow down flash operations
but does not kill your data.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoairoha: clk: add support of reset controller
Mikhail Kshevetskiy [Fri, 10 Oct 2025 00:24:28 +0000 (03:24 +0300)] 
airoha: clk: add support of reset controller

This allows us use more easily port en7581 drivers to en7523.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoairoha: net: fix building for en7523
Mikhail Kshevetskiy [Fri, 10 Oct 2025 00:15:42 +0000 (03:15 +0300)] 
airoha: net: fix building for en7523

Latest an7581/an7583 improvements breaks en7523. This patch just fixes
en7523 building.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20365
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agokernel: bump 6.12 to 6.12.51 20315/head
John Audia [Mon, 6 Oct 2025 10:11:18 +0000 (06:11 -0400)] 
kernel: bump 6.12 to 6.12.51

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

All patches automatically rebased.

Build system: x86/64
Build-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc
Run-tested: flogic/xiaomi_redmi-router-ax6000-ubootmod, ramips/tplink_archer-a6-v3, x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20315
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoboot: airoha: apply network driver fixes
Mikhail Kshevetskiy [Sat, 4 Oct 2025 00:02:28 +0000 (03:02 +0300)] 
boot: airoha: apply network driver fixes

This series improve network reliability.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoboot: airoha: snfi: remove dirty hack required for both u-boot & linux
Mikhail Kshevetskiy [Fri, 3 Oct 2025 23:54:24 +0000 (02:54 +0300)] 
boot: airoha: snfi: remove dirty hack required for both u-boot & linux

This patch removes dirty hack used to:
 * operate with flash
 * pass flash page settings to linux driver via SNFI registers

It has been proven that spinand flash page size is actually unnecessary.
We can get all required data from dirmap requests. Thus this patch
series drops the hack and do things properly.

After this fix (and corresponding linux fix) the hack is not needed
anymore.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoboot: airoha: speed up spinand flash operations using dma
Mikhail Kshevetskiy [Fri, 3 Oct 2025 23:48:43 +0000 (02:48 +0300)] 
boot: airoha: speed up spinand flash operations using dma

This patch series greatly improve flash operation speed in u-boot.
The measurement shows:

With DMA:
  => mtd read.benchmark spi-nand0 $loadaddr 0 0x8000000
  Reading 134217728 byte(s) (65536 page(s)) at offset 0x00000000
  Read speed: 8131kiB/s

Without DMA:
  mtd read.benchmark spi-nand0 $loadaddr 0 0x8000000
  Reading 134217728 byte(s) (65536 page(s)) at offset 0x00000000
  Read speed: 2062kiB/s

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoairoha: spi: remove snfi driver dirty hack
Mikhail Kshevetskiy [Sat, 4 Oct 2025 06:36:32 +0000 (09:36 +0300)] 
airoha: spi: remove snfi driver dirty hack

This patch series removes dirty hack that reads flash page settings from
SNFI registers during driver startup.

Before these patches the airoha spi snfi driver needs to know spinand
flash page size. The driver can't get it from spinand subsystem, so the
following approach was implemented:
 * bootloader know the flash page size (and some other parameters)
 * to operate properly the bootloader writes flash page size (and some
   other parameters) to SNFI registers
 * bootloader starts linux
 * after linux start SNFI registers keeps the values stored by bootloader
 * linux snfi driver reads flash parameters from SNFI registers.

This works, but we can do better. It has been proven that flash page size
is actually unnecessary. We can get all required data from dirmap requests.

This patch series drops the hack and do things properly.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoairoha: spi: snfi driver fixes & improvements
Mikhail Kshevetskiy [Sat, 4 Oct 2025 06:22:16 +0000 (09:22 +0300)] 
airoha: spi: snfi driver fixes & improvements

This patch series greatly improve airoha snfi driver and fix a
number of serious bugs.

Fixed bugs:
 * Fix reading/writing of flashes with more than one plane per lun
 * Fill the buffer with 0xff before writing
 * Fix reading of flashes supporting continuous reading mode
 * Fix error paths

Improvements:
 * Add support of dual/quad wires spi modes in exec_op(). This also
   fix flash reading/writing if dirmap can't be created.
 * Support of dualio/quadio flash reading commands

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agokernel: mtd: spinand: continuous mode fixes
Mikhail Kshevetskiy [Sat, 4 Oct 2025 06:17:33 +0000 (09:17 +0300)] 
kernel: mtd: spinand: continuous mode fixes

Continuous reading mode is broken for some spi controllers. There are two
possible bug scenarios:

1) "continuous mode" flash and spi controller without dirmap support,
   but with restriction on transfer length in adjust_op_size()

2) "continuous mode" flash and spi controller with dirmap support for a
   single flash page

In the first case, any read that exceeds the limit specified in adjust_op_size()
will result in an EIO error. The limit may even be less than a size of a single
flash page. In this case, any read will result in an error.

In the second case, any read larger than flash page size will result in an EIO
error or spinand driver spoofing (because the spi controller driver returns
more bytes than were actually read).

This patch series tries to fix continuous reading (spinand driver side).
Unfortunately these fixes can't resolve "spinand driver spoofing" case.
Spi controller drivers might need fixes as well.

Signed-off-by: Mikhail Kshevetskiy <mikhail.kshevetskiy@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20295
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoppp: fix PKG_MIRROR_HASH 20322/head
Petr Štetiar [Mon, 6 Oct 2025 19:41:03 +0000 (19:41 +0000)] 
ppp: fix PKG_MIRROR_HASH

Current PKG_MIRROR_HASH is wrong, but it went unnoticed, because the
tarball is being fetched from @OPENWRT project mirrors. Can be
reproduced with:

 make package/ppp/{download,check} FIXUP=1 DL_DIR=/tmp PKG_MIRROR_HASH=''

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/20322
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoebtables: fix PKG_MIRROR_HASH
Petr Štetiar [Mon, 6 Oct 2025 19:41:03 +0000 (19:41 +0000)] 
ebtables: fix PKG_MIRROR_HASH

Current PKG_MIRROR_HASH is wrong, but it went unnoticed, because the
tarball is being fetched from @OPENWRT project mirrors. Can be
reproduced with:

 make package/ebtables/{download,check} FIXUP=1 DL_DIR=/tmp PKG_MIRROR_HASH=''

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/20322
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agotools: xxhash: fix PKG_MIRROR_HASH
Petr Štetiar [Mon, 6 Oct 2025 19:41:03 +0000 (19:41 +0000)] 
tools: xxhash: fix PKG_MIRROR_HASH

Current PKG_MIRROR_HASH is wrong, but it went unnoticed, because the
tarball is being fetched from @OPENWRT project mirrors. After
042996b46bd revert the correct hash can be reproduced with:

 make tools/xxhash/{download,check} FIXUP=1 DL_DIR=/tmp PKG_MIRROR_HASH=''

Signed-off-by: Petr Štetiar <ynezz@true.cz>
Link: https://github.com/openwrt/openwrt/pull/20322
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoqualcommax: ipq50xx: Add support for Yuncore AX850 19712/head
Shubham Vishwakarma [Wed, 30 Jul 2025 10:21:22 +0000 (15:51 +0530)] 
qualcommax: ipq50xx: Add support for Yuncore AX850

Specifications:
SOC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
Flash: SPI NOR 8MB (Winbond W25Q64DW) + NAND 128MB (Winbond W25N01GWZEIG)
Memory: 512MB DDR3L
Standard: 802.11ax/ac/b/g/n
2.4G Frequency: 2.4GHz - 2.484GHz
2.4G Wi-Fi standard: 802.11b/g/n/ax
5G Frequency: 5.150GHz~5.850GHz
5G Wi-Fi Standard: 802.11 a/n/ac/ax
Buttons: 1 * Reset button, press 10 seconds to revert to default setting
2.4G Antenna: 2*2.4GHz/5.8GHz dual band antenna: 4dBi
5G Antenna: 2*5.8G antenna: 4dBi
Data Rate: 2.4GHz: 574Mbps, 5GHz:4800Mbps
Power: PoE 802.3at,DC2.0 12V/2A
Max Power Consumption: < 22W
LED Light: WAN, LAN, tricolor LED(sys-red, 2.4G-green, 5.8G-blue)

BACKUP YOUR STOCK FIRMWARE:
- Put openwrt-*-initramfs-uImage.itb to your
  TFTP server and rename it to initramfs.bin
- Enable serial console and enter to u-boot cli
  and exec these commands:
    ```
    tftpboot <your_tftp_server_ip>:initramfs.bin
    bootm
    ```
- Once boot completed and you get the openwrt shell
  execute below commands:
    ```
    device=ax850
    mkdir -p /tmp/fw_backup; cd /tmp/fw_backup
    rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1)
    rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1)
    dd if=/dev/${rootfs} of=rootfs_${rootfs} bs=1M
    dd if=/dev/${rootfs_1} of=rootfs_1_${rootfs_1} bs=1M
    cp /sys/firmware/fdt fdt.dtb
    md5sum * > md5sum
    tar -cvzf /tmp/${device}.tar.gz .
    sum=$(md5sum /tmp/${device}.tar.gz | cut -d' ' -f1)
    mv /tmp/${device}.tar.gz /tmp/${device}_${sum}.tar.gz
    echo "stock fw backup saved to: /tmp/${device}_${sum}.tar.gz"
    ```
- Upload/save your backup to a safe place.

STOCK FIRMWARE RECOVERY:
- Boot initramfs image
- Upload your backed-up stock fw tarball to the device
  using scp or download it from the device using wget.
- Enter device ssh cli or tty and exec:
    ```
    cd /tmp && wget <your_web_server_ip>/${stock_fw_backup}.tar.gz`
    tar -xpzf ${stock_fw_backup}.tar.gz
    rootfs=$(cat /proc/mtd | grep \"rootfs\" | cut -d: -f1)
    rootfs_1=$(cat /proc/mtd | grep \"rootfs_1\" | cut -d: -f1)
    ubiformat /dev/${rootfs} -y -f /tmp/rootfs_${rootfs}
    ubiformat /dev/${rootfs_1} -y -f /tmp/rootfs_1_${rootfs_1}
    reboot
    ```

INSTALLATION:
1. initramfs method
- Put openwrt-*-initramfs-uImage.itb to your
  TFTP server and rename it to initramfs.bin
- Enable serial console and enter to u-boot cli
  and exec these commands:
    ```
    tftpboot <your_tftp_server_ip>:initramfs.bin
    bootm
    ```
- Once boot completed and you get the openwrt shell
  execute below commands:
    ```
    cd /tmp && wget <your_web_server_ip>/factory.ubi`
    export rootfs=$(cat /proc/mtd | grep rootfs | cut -d: -f1)
    export rootfs_1=$(cat /proc/mtd | grep rootfs_1 | cut -d: -f1)
    ubiformat /dev/${rootfs} -y -f factory.ubi
    ubiformat /dev/${rootfs_1} -y -f factory.ubi
    reboot
    ```

2. u-boot factory.ubi image method
- Put factory.ubi to your TFTP server and
  enter u-boot cli and exec these commands:
    ```
    tftpboot <your_tftp_server_ip>:factory.ubi
    #After downloading is finished:
    flash rootfs
    flash rootfs_1
    reset
    ```

Signed-off-by: Shubham Vishwakarma <shubhamvis98@fossfrog.in>
Link: https://github.com/openwrt/openwrt/pull/19712
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agopackage: do not sign individual APK packages
Paul Spooren [Wed, 8 Oct 2025 09:42:51 +0000 (11:42 +0200)] 
package: do not sign individual APK packages

APK, unlike OPKG, can sign individual packages and not just indexes.
Since OpenWrt uses a distributed build infrastructure and only the build
master owns the private keys, signing of individual buildworkers doesn't
work. Right now, each buildworker creates a temporary build key to sign
packages, then transmits the package index to the buildmaster for a
signature.

As a result, all individual packages contain a nonsensical signature,
making them harder to reproduce. This commit removes the individual
package signing.

Since APK requires signatures per default, explicitly allow installation
of unsigned packages during the build process.

The config option here is for historical reasons misleading,
SIGNED_PACKAGES refers to the package index, not the individual
packages.

Signed-off-by: Paul Spooren <mail@aparcar.org>
4 weeks agoucode: add patches that make it easier to deal with non-blocking fds
Felix Fietkau [Thu, 9 Oct 2025 07:56:10 +0000 (09:56 +0200)] 
ucode: add patches that make it easier to deal with non-blocking fds

This allows creating pipes for subprocesses to use as stdin/out/err
and polling them from a uloop process.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
4 weeks agoucode: fix reusing the current environment in uloop.process()
Felix Fietkau [Wed, 8 Oct 2025 17:50:20 +0000 (19:50 +0200)] 
ucode: fix reusing the current environment in uloop.process()

Signed-off-by: Felix Fietkau <nbd@nbd.name>
4 weeks agomediatek: fix wrong reset_gpio 20116/head
Rosen Penev [Mon, 6 Oct 2025 20:42:05 +0000 (13:42 -0700)] 
mediatek: fix wrong reset_gpio

Should be reset-gpio. Also added GPIO_ACTIVE_HIGH for clarity.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoipq40xx: clkreq-gpio to clkreg-gpios
Rosen Penev [Mon, 6 Oct 2025 20:38:22 +0000 (13:38 -0700)] 
ipq40xx: clkreq-gpio to clkreg-gpios

The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoipq40xx: wake-gpio to wake-gpios
Rosen Penev [Mon, 6 Oct 2025 20:37:16 +0000 (13:37 -0700)] 
ipq40xx: wake-gpio to wake-gpios

The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agotreewide: perst-gpio to perst-gpios
Rosen Penev [Mon, 6 Oct 2025 20:34:42 +0000 (13:34 -0700)] 
treewide: perst-gpio to perst-gpios

The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agotreewide: enable-gpio to enable-gpios
Rosen Penev [Mon, 6 Oct 2025 20:28:44 +0000 (13:28 -0700)] 
treewide: enable-gpio to enable-gpios

The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agotreewide: replace numbers with GPIO_ACTIVE
Rosen Penev [Sun, 21 Sep 2025 04:11:32 +0000 (21:11 -0700)] 
treewide: replace numbers with GPIO_ACTIVE

The latter is more descriptive in terms of what's going on.

Mostly found with

git grep gpios\  | grep 0\>
git grep gpios\  | grep 1\>

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agotreewide: reset-gpio to reset-gpios
Rosen Penev [Thu, 18 Sep 2025 23:50:21 +0000 (16:50 -0700)] 
treewide: reset-gpio to reset-gpios

The former is deprecated. Fixes dtc warning.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agotreewide: gpio to gpios
Rosen Penev [Sun, 21 Sep 2025 04:19:03 +0000 (21:19 -0700)] 
treewide: gpio to gpios

The former is deprecated.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20116
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agopackages: bump APK to improve reproducibility
Paul Spooren [Sat, 4 Oct 2025 18:53:51 +0000 (20:53 +0200)] 
packages: bump APK to improve reproducibility

The package bump to version rc6 incorporates two recent changes, first, the
stored `mtime` honors SOURCE_DATE_EPOCH, making a prior "touch" obsolete.
Secondly the order of files added to created packages is now sorted, improving
reproducibility, too.

Signed-off-by: Paul Spooren <mail@aparcar.org>
4 weeks agoodhcpd: update to Git HEAD (2025-10-07) 20332/head
Goetz Goerisch [Tue, 7 Oct 2025 13:53:56 +0000 (15:53 +0200)] 
odhcpd: update to Git HEAD (2025-10-07)

f0d855358b86 ndp: Allow NS loopback for master iface
f770588f5ed6 dhcpv4: move dhcpv4_init() to end of dhcpv4.c
2bb556ed0dd6 dhcpv4: rename valid_until_cb()
65986596a60d dhcpv4: reorder more functions
13e6c7271228 dhcpv4: rename setup_dhcpv4_addresses()
14a480dc9d26 dhcpv4: rename handle_addrlist_change()
0cf95c471d77 dhcpv4: move and rename handle_dhcpv4()
869e2942f3f1 dhcpv4: replace ip4toa() with inet_ntop()
2a8dd31261b6 dhcpv4: move dhcpv4_free_assignment()
d514cb558ef3 dhcpv4: move dhcpv4_fr_stop() up
2649ee838c05 dhcpv4: move struct dhcpv4_dnr to header
057e238b0934 dhcpv4: reorder some more functions
bdaffc2e7683 dhcpv4: move find_assignment_by_hwaddr()
354ed627425c dhcpv4: move the remaining forward declaration
0b0ddaa9a1a4 dhcpv4: rename a variable in dhcpv4_assign()
63617a2d2df0 odhcpd: print compiled-in features in help message
01f571dcf9fd ubus: don't expose ipv4leases if not supported
57495fc4c3d3 ubus: minor correctness fix
3b3a3336470f ubus: improve correspondence between DHCPv[46]
031e1c799f59 dhcpv4: dhcpv4_fr_rand_delay() fixups
11c8ef57da64 dhcpv4: update dhcpv4_msg_to_string()
efafcbdbb0ab dhcpv4: remove some magic numbers
aa04946ac65a dhcpv4: rename cookie variable
99c35f35971c dhcpv4: simplify dhcpv4_fr_send() a bit
f26abfdd27c0 dhcpv4: make the cookie explicit in struct dhcpv4_message
80b881e860e0 dhcpv4: simplify dhcpv4_setup_interface()
5eac9c56ff3b router: fix SLAAC on subnets > 64

Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20332
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
4 weeks agoipq806x: fix wifi node 20325/head
Rosen Penev [Tue, 7 Oct 2025 00:39:54 +0000 (17:39 -0700)] 
ipq806x: fix wifi node

In the conversion to nvmem of eax500 and unifi-ac-hd, the address was
set to 0 as is the case with most platforms, but not this one.

The wifi node also needs to be wrapped in a bridge node.

Matches every other device in ipq806x.

Fixes: 148f82ad4525 ("ipq806x: use nvmem for wifi mac")
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20325
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoiw: bump to 6.17 20321/head
Aleksander Jan Bajkowski [Mon, 6 Oct 2025 18:46:12 +0000 (20:46 +0200)] 
iw: bump to 6.17

Changelog:
  a52bda0 (HEAD, tag: v6.17) bump version to 6.17
  c5bfa2a iw: add support to print link level information in station dump
  efaf786 iw: Add support to set per-radio RTS threshold in multi-radio wiphy
  009ad3b update nl80211.h
  aef3798 iw: don't set stupid socket buffer size
  8d52fb4 iw: scan: Add partial Multi-Link element printing
  cfc0695 iw: print HE mcs correctly when mcs_len
  8e4808f iw: Add command to enable/disable EPCS
  85b79b3 update nl80211.h
  612f9f5 iw: Prevent segfault in ftm get stats
  1558e60 iw: print NO-EHT flags for reg get command
  59660a3 iw: fix EHT capabilities on Big Endian platforms
  8ea80d3 iw: scan: Add printing of EHT Operation Element
  7c0511b util: rename hz to Hz vol 2
  c2a12a5 util: rename hz to Hz
  0cc98ae iw: scan: Decode additional WPA3 group ciphers
  f04e5c5 iw: scan: Decode additional WPA3 AKM suite types
  41a07a8 iw: fix HE operation on Big Endian platforms
  c41971e iw: fix HE capabilities on Big Endian platforms
  a6ad3f1 iw: scan: add eht capability parsing
  4c85991 iw: util: update and clean up eht capa printing
  a0a7dde iw: scan: replace passed ie buffer with ie context
  7bc2a84 iw: print tx power per link for MLD
  478ddd4 iw: add output for wiphy interface combinations
  93e2309 update nl80211.h
  966c590 iw: scan: add enum for element IDs
  422419e scan: Add printing of HE Operation Element
  d088c8a update nl80211.h
  73231dd iw: fix formats under MIPS64/PPC
  8609336 iw: remove sizer section and related code
  c8b9e77 util: clarify comment about 'parsed' pointer
  b29da20 iw: add puncturing support
  cce9897 iw: refactor frequency help

Signed-off-by: Aleksander Jan Bajkowski <olek2@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20321
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agokernel: bump 6.6 to 6.6.110 20320/head
Goetz Goerisch [Mon, 6 Oct 2025 16:48:33 +0000 (18:48 +0200)] 
kernel: bump 6.6 to 6.6.110

Changelog: https://cdn.kernel.org/pub/linux/kernel/v6.x/ChangeLog-6.6.110
Signed-off-by: Goetz Goerisch <ggoerisch@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20320
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoramips: add support for Cudy C200P 20165/head
Marcin Leksmark [Tue, 23 Sep 2025 16:37:25 +0000 (18:37 +0200)] 
ramips: add support for Cudy C200P

This patch adds support for Cudy C200P.

Specifications:

    SoC: MediaTek MT7621AT
    RAM: 256 MB (DDR3)
    Flash: 16 MB (NOR)
    POE Chip: IP804AR

Interfaces:

    Switch: 1 WAN, 4 LAN (Gigabit)
    Gigabit RJ45 PoE Ports on 2~5
    Max Power on a Single PoE Ports  30W
    PoE Ports : The PoE ports comply with IEEE 802.3at/af standards.
    Ports: 1 USB-A 3.0 Ports

LED:

    System
    PoE Max Status
    Link/ACT/PoE Status of Each PoE Port

Physical Buttons:

  Reset Button

Power Input:

  DC Jack

Power Methods:

    DC: 54V 1.11A
    802.3at/af PoE
    Passive PoE: 24/48V

Max Power Consumption (W):

  Total: 60W
    PoE: 55W
    PoE (when USB Device is plugged in): 50W
    No PoE: 5W

Installation:

To install OpenWRT, you need the intermediate firmware from Cudy. (U-boot is locked). After installing the intermediate firmware, you can install OpenWRT via sysupgrade.

Recovery:

TFTP available.
1. Place the recovery.bin in the serving directory of your TFTP server.
2. Set your IP to 192.168.1.88/24.
3. Press the “Reset” button of Cudy router and hold it. Before the Cudy router is powered on and before TFTP start to download the firmware, don't release the “Reset” button.
4. Power on the Cudy router.
5. You can release the reset button only when TFTP starts downloading firmware.
6. When the SYSTEM LED turns solid green, the upgrade is complete.

Serial:

1. Serial connection parameters: 115200 / 8N1
2. Serial connection voltage: 3.3V

PoE is not supported at the time of PR. The IP804R chip is not yet supported by OpenWRT.

Signed-off-by: Marcin Leksmark <lexmark3200@wp.pl>
Link: https://github.com/openwrt/openwrt/pull/20165
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorules.mk: do not set CCACHE_NOHASHDIR 20317/head
Erik Karlsson [Mon, 6 Oct 2025 13:46:36 +0000 (15:46 +0200)] 
rules.mk: do not set CCACHE_NOHASHDIR

Not hashing CWD is potentially unsafe since it involves deliberately
poisoning the cache in certain situations in exchange for performance
gain. It can lead to debug information pointing out either no longer
existing or much worse incorrect source files, possibly leading
developers onto a false track and wasting a lot of time.

If one wishes to save build time by sharing the cache between multiple
source trees, this can be achieved safely by enabling reproducible
debug information, like this:

CONFIG_CCACHE_DIR="$(HOME)/.ccache"
CONFIG_REPRODUCIBLE_DEBUG_INFO=y

Note that CWD hashing gets disabled implicitly when reproducible debug
information is enabled. The CCACHE_NOHASHDIR option is only for
disabling CWD hashing in cases where it is not safe to do so.

Signed-off-by: Erik Karlsson <erik.karlsson@iopsys.eu>
Link: https://github.com/openwrt/openwrt/pull/20317
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: rtl930x: add XGS1250-12 B1 device 20150/head
Thomas Martitz [Wed, 24 Sep 2025 12:49:07 +0000 (14:49 +0200)] 
realtek: rtl930x: add XGS1250-12 B1 device

The A1 and B1 devices are largely the same. The differences
seem to be:
- RTL8218D (A1) vs RTL8218E (B1) PHY for the eight 1 Gbps TP ports
- Aquantia (A1) vs RTL8261N (B1) PHY for the three 10 Gbps TP ports

RTL8218D/E share the same driver and support was added already by
commit c8c187f0f0 ("realtek: add support for RTL8218E").

The RTL8261N is also already supported but it's located at
different addresses compared to the A1 device. This requires
the device tree to be split. As a result, the devices are require
different images.

I found the smi addresses on the forum:
https://forum.openwrt.org/t/support-for-rtl838x-based-managed-switches/57875/3622
And I can conform on my B1 device that this is working.

Co-developed-by: Mathias Kresin <dev@kresin.me>
Signed-off-by: Thomas Martitz <thomas.martitz@mailbox.org>
Link: https://github.com/openwrt/openwrt/pull/20150
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl931x: Allow to overwrite LED portmask 20300/head
Harshal Gohel [Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)] 
realtek: rtl931x: Allow to overwrite LED portmask

There are switches which share the same overall hardware design but remove
just a couple of components for the low cost variant. For example, a 8+2
(ethernet+SFP) switch might have a low cost variant which only has 8
ethernet ports. In this case, the PCB will be shared but components for SFP
will just be dropped.

The LED shift registers will be the same between the two switches but the
ports are different. But since the rtl930x_led_init code is trying to
calculate the number of LEDs using the LED ports, the ethernet status ports
will then suddenly be shifted by two ports.

It is therefore necessary to have a mechanism to overwrite the detection of
the ethernet ports in the LED initialization and force some ports to
"virtually there" for the LED controller.

This functionality was already implemented for Plasma Cloud PSX8 (RTL930x)
but some devices using RTL931x might also benefit from a similar feature.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl931x: Cleanup LED set initialization
Harshal Gohel [Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)] 
realtek: rtl931x: Cleanup LED set initialization

The LED sets must be configured before per-port LEDs are actually assigned.
At the same time, the LED set configuration was basically unreadable and
the RTL930x from commit 2cfb1ecf1035 ("rtl930x: Rework per port LED
configuration") does a better job. Instead of moving the old implementation
around, just adopt the one from RTL930x.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl931x: Add support for active-low LEDs
Sven Eckelmann [Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)] 
realtek: rtl931x: Add support for active-low LEDs

RTL930x received support for specifying active low/high LEDs in commit
bec9e79a99ad ("realtek: dsa: support active-high LEDs"). But this was
completely forgotten on RTL931x.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl931x: Switch LED init to dev_* message helper
Sven Eckelmann [Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)] 
realtek: rtl931x: Switch LED init to dev_* message helper

The usage of pr_* helper inside a device driver should be avoided. The
dev_* helper provide more context about which device the message actually
is.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl930x: Clean up LED set initialization
Sven Eckelmann [Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)] 
realtek: rtl930x: Clean up LED set initialization

The integration of the LED set initialization for RTL931x added also minor
improvements in the coding style. Just adopt them also for RTL9301x.

Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl930x: Fix out-of-bounds check in LED set configuration
Sven Eckelmann [Tue, 15 Jul 2025 17:53:07 +0000 (19:53 +0200)] 
realtek: rtl930x: Fix out-of-bounds check in LED set configuration

of_property_count_u32_elems returns the number of u32 and not the number of
bytes. It must therefore be checked against the number of u32 in set_config
and not the bytes in set_config.

Fixes: 2cfb1ecf1035 ("rtl930x: Rework per port LED configuration")
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agorealtek: rtl930x: Allow to overwrite LED portmask
Harshal Gohel [Fri, 11 Jul 2025 14:50:37 +0000 (14:50 +0000)] 
realtek: rtl930x: Allow to overwrite LED portmask

There are switches which share the same overall hardware design but remove
just a couple of components for the low cost variant. For example, a 8+2
(ethernet+SFP) switch might have a low cost variant which only has 8
ethernet ports. In this case, the PCB will be shared but components for SFP
will just be dropped.

The LED shift registers will be the same between the two switches but the
ports are different. But since the rtl930x_led_init code is trying to
calculate the number of LEDs using the LED ports, the ethernet status ports
will then suddenly be shifted by two ports.

It is therefore necessary to have a mechanism to overwrite the detection of
the ethernet ports in the LED initialization and force some ports to
"virtually there" for the LED controller.

Signed-off-by: Harshal Gohel <hg@simonwunderlich.de>
Co-developed-by: Sven Eckelmann <se@simonwunderlich.de>
Signed-off-by: Sven Eckelmann <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20300
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agopistachio: enable hash offload engine
Zoltan HERPAI [Thu, 29 May 2025 18:24:46 +0000 (18:24 +0000)] 
pistachio: enable hash offload engine

The cTX200 CPU has an integrated hash offload
engine. Enable the support for that.

[    2.212384] img-hash-accelerator 18149600.hash: Img MD5/SHA1/SHA224/SHA256 Hardware accelerator initialized

driver       : img-sha256
driver       : img-sha224
driver       : img-sha1
driver       : img-md5

Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
4 weeks agoiproute2: enable automatic color output by default 20281/head
George Tsiamasiotis [Thu, 2 Oct 2025 19:04:51 +0000 (22:04 +0300)] 
iproute2: enable automatic color output by default

Support for color output has existed in iproute2 since forever and we
never compile it out, even in tiny variants. As such, not requiring
people to constantly add -c to their ip commands is a nice QoL feature.

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20281
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoiproute2: split iproute2 configure and compile logic
George Tsiamasiotis [Thu, 2 Oct 2025 18:00:22 +0000 (21:00 +0300)] 
iproute2: split iproute2 configure and compile logic

Previously we relied on the iproute2 makefile automatically running the
configure script on first run. This does not allow control of some
configure options, or of when the configure script is re-run.

The motivating usecase here is ./configure --color=auto, though that is
not implemented in this commit.

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20281
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoiproute2: stop writing unused snapshot information
George Tsiamasiotis [Thu, 2 Oct 2025 18:37:58 +0000 (21:37 +0300)] 
iproute2: stop writing unused snapshot information

iproute2 already generates and uses a proper version string based off
of git since 2020 [1]. Since the aforementioned commit has already
removed the include for SNAPSHOT.h, this bit of code has had no effect
since then other than disabling the built-in configure script invocation.

[1]: https://git.kernel.org/pub/scm/network/iproute2/iproute2.git/commit/?id=fbef655568ee931a82ad463a6f46f01ce3fb27aa

Signed-off-by: George Tsiamasiotis <george@tsiamasiotis.gr>
Link: https://github.com/openwrt/openwrt/pull/20281
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agox86: rename and configure Mellanox Spectrum interfaces 17251/head
Til Kaiser [Sat, 12 Oct 2024 16:32:45 +0000 (18:32 +0200)] 
x86: rename and configure Mellanox Spectrum interfaces

This commit renames all management network ports of the
SN2100, SN2700, SN3420, and SN3700 switches based
on their PCI address during boot.

For the default network config, the management and
QSFP port(s) are put into the br-lan bridge.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agobase-files: add ucidef_set_interface_netdev_range function
Til Kaiser [Fri, 22 Nov 2024 14:20:10 +0000 (15:20 +0100)] 
base-files: add ucidef_set_interface_netdev_range function

The ucidef_set_interface* functions can be used to
add network interfaces to a default network configuration.
Such network interfaces often have the same base interface
name (e.g., eth* or lan*). On devices with many network ports,
adding all ports to the default config can become inconvenient.

This commit adds a new uci function ucidef_set_interface_netdev_range,
which adds network interfaces for a specific port range to a given
OpenWrt interface. The first parameter is the OpenWrt interface, the
second is the base interface name, the third is the port start, and
the fourth is the port end range.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agokernel: modules: add Mellanox Spectrum hotplug renaming script
Til Kaiser [Mon, 16 Dec 2024 18:26:20 +0000 (19:26 +0100)] 
kernel: modules: add Mellanox Spectrum hotplug renaming script

Currently, the interfaces of the Mellanox Spectrum Switch QSFP ports
are all labeled eth*. Their order doesn't match the faceplate and is
different for each model.

They could be named during boot, but this isn't sufficient because they
support port splitting. After such ports are split, their port naming
begins again with eth*, and the same is true after they are unsplit again.

A hotplug script is used here that reads from the sysfs file
phys_port_name, which contains p1, p2, p3, ... for unsplit ports
and p1s0, p1s1, p1s2 for split ports.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agokernel: modules: load e1000e driver during pre-init stage
Til Kaiser [Sat, 12 Oct 2024 16:32:08 +0000 (18:32 +0200)] 
kernel: modules: load e1000e driver during pre-init stage

Set the pre-init boot flag for the e1000e network device
driver so that it is loaded during the early pre-init
stage of the boot process instead of later.

Then, it is possible to rename its network ports via the
ucidef_set_network_device_path function from the
02_network script while booting.

Signed-off-by: Til Kaiser <mail@tk154.de>
Link: https://github.com/openwrt/openwrt/pull/17251
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: dts: rearrange mdio-bus for tplink_sg2xxx 20306/head
Daniel Tang [Sun, 5 Oct 2025 08:21:36 +0000 (08:21 +0000)] 
realtek: dts: rearrange mdio-bus for tplink_sg2xxx

This appears to have been missed in #19986.

Signed-off-by: Daniel Tang <tangrs@google.com>
Link: https://github.com/openwrt/openwrt/pull/20306
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agosunxi: add F1C100 (arm926ej-s) support
Zoltan HERPAI [Fri, 30 May 2025 21:30:38 +0000 (21:30 +0000)] 
sunxi: add F1C100 (arm926ej-s) support

This is Allwinner's ARM926EJ-S core, which is one of its early
products, reappearing in recent compact designs. The SoC includes
32/64Mb memory in the same physical package, and has display and USB
interfaces, allowing for very small footprint boards.

The target consists of basic 6.12 support, with u-boot. Instead of creating
a separate suniv target, as both the kernel and u-boot supports enough of
this SoC by now with minimal patching, add it into sunxi as a subtarget.

Link: https://github.com/openwrt/openwrt/pull/15022
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu>
4 weeks agonetifd: update to Git HEAD (2025-10-06)
Felix Fietkau [Mon, 6 Oct 2025 07:55:58 +0000 (09:55 +0200)] 
netifd: update to Git HEAD (2025-10-06)

649028013a3c config: fix overriding bridge-vlan sections via procd data

Signed-off-by: Felix Fietkau <nbd@nbd.name>
4 weeks agoodhcpd: update to Git HEAD (2025-10-02) 20278/head
Álvaro Fernández Rojas [Thu, 2 Oct 2025 13:53:39 +0000 (15:53 +0200)] 
odhcpd: update to Git HEAD (2025-10-02)

b14cf98 router: log “Sending a RA on lan” at LOG_DEBUG
c2810fe odhcpd: update cmake file
8c2c065 odhcpd: convert README to markdown
3b96480 odhcpd: allow the use of an alternative cfg file
7328bfe odhcpd: remove confusing #defines
cdb9e5b odhcpd: improve RFC9096 § 3.5 SLAAC compliance

RFC9096 § 3.5 SLAAC compliance introduces a new config option (odhcpd
piofolder), which may wear out the flash under certain conditions (for
example: ISPs with dynamic IPv6 prefixes which disconnect the clients
every X hours).
Therefore, setting "dhcp.odhcpd.piofolder" to persistent storage in the
router flash is not advisable and should be set to other kinds of
persistent storage such as USBs, SDs, NVMEs...
In order to prevent wearing out the router flash it's set to ephemeral
storage by default (tmp):
  uci set dhcp.odhcpd.piofolder="/tmp/odhcpd-piofolder"

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
4 weeks agouci: update to Git HEAD (2025-10-05)
Christian Marangi [Sun, 5 Oct 2025 12:34:57 +0000 (14:34 +0200)] 
uci: update to Git HEAD (2025-10-05)

272fc1348ea9 lua: CMakeLists: drop redundant cmake_minimum_required
5e69edac2ec4 CMakeLists: fix CMake warning for INCLUDE macro

Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
4 weeks agorealtek: RTL931x: disable USXGMII SerDes setup 20292/head
Markus Stockhausen [Fri, 3 Oct 2025 15:18:42 +0000 (11:18 -0400)] 
realtek: RTL931x: disable USXGMII SerDes setup

The first RTL931x devices make their way into OpenWrt. Their copper
ports are driven by different interfaces modes like 10G_QXGMII or
Realtek proprietary XSGMII. The DSA driver has no proper handling
for theses modes implemented yet. So a lot is auto-mapped to USXGMII
internally. As soon as the SerDes setup activates this (wrong) mode
the PHY connectivity breaks.

Disable this mode for now and rely on the proper U-Boot setup.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20292
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: drop source-only from NAND targets 20255/head
Markus Stockhausen [Wed, 1 Oct 2025 06:20:07 +0000 (02:20 -0400)] 
realtek: drop source-only from NAND targets

Now the NAND targets have real devices that need to be built.
Remove the source-only flag to make the images available.

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: add support for Linksys LGS352C
Markus Stockhausen [Wed, 1 Oct 2025 06:19:19 +0000 (02:19 -0400)] 
realtek: add support for Linksys LGS352C

Hardware specification
----------------------

* RTL9311 SoC, 2 MIPS Interaptiv cores @ 1000MHz
* 512MB DRAM
* 2MB NOR Flash
* 128MB NAND Flash
* 48 x 10/100/1000BASE-T ports
* 4 x 10G SFP+ ports
* LM63 controlled fan
* Power LED, Fault LED
* Reset button on front panel
* UART (115200 8N1) via RJ45

Installation using serial interface
-----------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Start network "rtk network on"
3. Load image "tftpboot <TFTP IP>:openwrt-realtek-rtl931x_nand-linksys_lgs352c-initramfs-kernel.bin"
4. Boot image "bootm"
5. Switch to first bootpartition "fw_setsys bootpartition 0"
5. Download sysupgrade "scp <IP>:openwrt-realtek-rtl931x_nand-linksys_lgs352c-squashfs-sysupgrade.bin /tmp/."
6. Install sysupgrade "sysupgrade /tmp/openwrt-realtek-rtl931x_nand-linksys_lgs352c-squashfs-sysupgrade.bin"

Installation using OEM webinterface
-----------------------------------

This is not possible because the OpenWrt NAND Flash layout is different
from the vendor layout. To be precise. Vendor uses:

- 64 MB vendor UBI root_data
- 32 MB vendor kernel+root 1 (~19 MB used)
- 32 MB vendor kernel+root 2 (~19 MB used)

OpenWrt uses:

- 64 MB vendor UBI (not touched)
- 10 MB OpenWrt kernel
- 22 MB Openwrt mtd-concat UBI
- 23 MB vendor kernel 2 (space reduced, vendor data unchanged)
- 09 MB OpenWrt mtd-concat UBI

Dual-boot with stock firmware using writable u-boot-env
-------------------------------------------------------

From stock to OpenWrt / primary image 1 (CLI as admin):
   - > boot system image1
   - > reboot

From OpenWrt to stock / boot image 2: (shell as root)
   - # fw_setsys bootpartition 1
   - # reboot

Debrick using serial interface
------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Load vendor image with "upgrade runtime <TFTP IP>:LGS352xxxxx.imag"
3. switch to primary partition "setsys bootpartition 0"
4. safe config "savesys"

Further documentation
---------------------
See https://openwrt.org/toh/linksys/lgs352c

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: add support for Linksys LGS328C
Markus Stockhausen [Wed, 1 Oct 2025 06:06:43 +0000 (02:06 -0400)] 
realtek: add support for Linksys LGS328C

Hardware specification
----------------------

* RTL9301 SoC, 1 MIPS 34KEc core @ 800MHz
* 512MB DRAM
* 2MB NOR Flash
* 128MB NAND Flash
* 24 x 10/100/1000BASE-T ports
* 4 x 10G SFP+ ports
* Power LED, Fault LED
* Reset button on front panel
* UART (115200 8N1) via RJ45

Installation using serial interface
-----------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Start network "rtk network on"
3. Load image "tftpboot <TFTP IP>:openwrt-realtek-rtl930x_nand-linksys_lgs328c-initramfs-kernel.bin"
4. Boot image "bootm"
5. Switch to first bootpartition "fw_setsys bootpartition 0"
5. Download sysupgrade "scp <IP>:openwrt-realtek-rtl930x_nand-linksys_lgs328c-squashfs-sysupgrade.bin /tmp/."
6. Install sysupgrade "sysupgrade /tmp/openwrt-realtek-rtl930x_nand-linksys_lgs328c-squashfs-sysupgrade.bin"

Installation using OEM webinterface
-----------------------------------

This is not possible because the OpenWrt NAND Flash layout is different
from the vendor layout. To be precise. Vendor uses:

- 64 MB vendor UBI root_data
- 32 MB vendor kernel+root 1 (~19 MB used)
- 32 MB vendor kernel+root 2 (~19 MB used)

OpenWrt uses:

- 64 MB vendor UBI (not touched)
- 10 MB OpenWrt kernel
- 22 MB Openwrt mtd-concat UBI
- 23 MB vendor kernel 2 (space reduced, vendor data unchanged)
- 09 MB OpenWrt mtd-concat UBI

Dual-boot with stock firmware using writable u-boot-env
-------------------------------------------------------

From stock to OpenWrt / primary image 1 (CLI as admin):
   - > boot system image1
   - > reboot

From OpenWrt to stock / boot image 2: (shell as root)
   - # fw_setsys bootpartition 1
   - # reboot

Debrick using serial interface
------------------------------

1. Press "a" "c" "p" during message "Enter correct key to stop autoboot"
2. Load vendor image with "upgrade runtime <TFTP IP>:LGS328xxxxx.imag"
3. switch to primary partition "setsys bootpartition 0"
4. safe config "savesys"

Further documentation
---------------------
See https://openwrt.org/toh/linksys/lgs352c

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agorealtek: Enhance MTD/ECC kernel configuration for NAND targets
Markus Stockhausen [Wed, 1 Oct 2025 06:01:48 +0000 (02:01 -0400)] 
realtek: Enhance MTD/ECC kernel configuration for NAND targets

The Realtek NAND kernel configuration has some shortcomings.
Fix this as follows:

- MTD_NAND_ECC_REALTEK selects MTD_NAND_ECC and this selects
  MTD_NAND_CORE. For consistency add both config options.

- The partition layout of the Linksys switches requires some tricky
  concatenation to keep dual boot active. Add CONFIG_MTD_VIRT_CONCAT

Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/20255
Signed-off-by: Robert Marko <robimarko@gmail.com>
4 weeks agoucode: fix parsing \xHH and \0OOO escape sequences
Felix Fietkau [Sun, 5 Oct 2025 09:30:48 +0000 (11:30 +0200)] 
ucode: fix parsing \xHH and \0OOO escape sequences

Both need to add add bytes, not UTF-8 sequences.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
4 weeks agohostapd: skip dynamic reconfiguration while not in enabled state
Felix Fietkau [Fri, 3 Oct 2025 13:32:25 +0000 (15:32 +0200)] 
hostapd: skip dynamic reconfiguration while not in enabled state

Interface might be down or scanning. Better do a full restart in order to avoid
messing up the runtime state.

Signed-off-by: Felix Fietkau <nbd@nbd.name>
4 weeks agokernel: ksmbd: revert upstream limit repeated connection 20192/head
Andrea Pesaresi [Fri, 26 Sep 2025 18:01:17 +0000 (20:01 +0200)] 
kernel: ksmbd: revert upstream limit repeated connection

The upstream commit https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/fs/smb?h=linux-6.6.y&id=fa1c47af4ff641cf9197ecdb1f8240cbb30389c1
and the extended for ipv6 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/fs/smb?h=linux-6.6.y&id=d9e157fcfebc126cd19b2333a6417a840c24e529
cause a regression if you try to get a connection on nautilus by a double click on share name.
When you do a double click on share name Nautilus try to connect two times, and ksmbd refusing it.
An issue is opened here https://github.com/namjaejeon/ksmbd/issues/512, at the moment, until we don't have a fix upstream I suggest to revert these two commits.

Signed-off-by: Andrea Pesaresi <andreapesaresi82@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20192
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agomediatek: CreatLentem clt-r30b1: Add Livinet Li228 as alt vendor model 20262/head
Andrii Kuiukoff [Wed, 1 Oct 2025 14:00:45 +0000 (17:00 +0300)] 
mediatek: CreatLentem clt-r30b1: Add Livinet Li228 as alt vendor model

Add Livinet Li228 as ALT2.
Fix typo in ALT1_MODEL: DXG21 -> DGX21

Signed-off-by: Andrii Kuiukoff <andros.ua@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20262
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agobase-files: commit and sync before removing defaults script. 20248/head
Markus Gothe [Thu, 25 Sep 2025 08:32:58 +0000 (10:32 +0200)] 
base-files: commit and sync before removing defaults script.

Improve the resilence against power failures during
boot-up by trying to sync the file system before
removing the script. The order of the operations
are important.

Signed-off-by: Markus Gothe <markus.gothe@genexis.eu>
Link: https://github.com/openwrt/openwrt/pull/20248
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoath79: asus: convert to nvmem for calibration 20269/head
Rosen Penev [Thu, 2 Oct 2025 03:07:37 +0000 (20:07 -0700)] 
ath79: asus: convert to nvmem for calibration

Userspace handling is deprecated.

Also handle 2.4ghz LED in ath9k instead of generic.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20269
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agotools/ninja: update to 1.13.1 20267/head
Rosen Penev [Mon, 29 Sep 2025 18:45:23 +0000 (11:45 -0700)] 
tools/ninja: update to 1.13.1

Jobserver support was merged upstream.

Switch to local tarball archives. Smaller and more standard.

Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20267
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoramips: add support for Plasma Cloud PAX1800-Lite 20152/head
Sven Eckelmann (Plasma Cloud) [Thu, 12 Oct 2023 11:57:32 +0000 (13:57 +0200)] 
ramips: add support for Plasma Cloud PAX1800-Lite

Plasma Cloud PAX1800-Lite is a dual-band Wi-Fi 6 router, based on MediaTek
MT7621A + MT79x5D platform.

Specifications:

- SOC:      MT7621AT (880 MHz)
- DRAM:     DDR3 448 MiB (Nanya NT5CC256M16DP-DI)
- Flash:    2 MiB SPI NOR (S25FL016K) + 128 MB SPI NAND (W25N02KVZEIR)
- Ethernet: 1x 10/100/1000 Mbps (SOC's built-in switch, with PoE+)
- Wi-Fi:    2x2:2 2.4/5 GHz (MT7905DAN + MT7975DN)
            (MT7905DAN doesn't support background DFS scan/BT)
- LED:      tri-color LED for status (red, blue, green)
- Buttons:  1x (reset)
- Antenna:  4x internal, non-detachable omnidirectional
- UART:     1x 4-pin (2.54 mm pitch, marked as "3V3 G/RX GND W/TX")
- Power:    12 V DC/2 A (DC jack)

MAC addresses:

WAN:     54:9C:27:xx:xx:00 (factory 0x3fff4, device label)
2.4 GHz: 54:9C:27:xx:xx:02 (factory 0x4, device label +2)
5 GHz:   54:9C:27:xx:xx:08 (factory 0xa, device label +8)

Flashing instructions:
======================

Various methods can be used to install the actual image on the flash.
Two easy ones are:

ap51-flash
----------

The tool ap51-flash (https://github.com/ap51-flash/ap51-flash) should be
used to transfer the image to the u-boot when the device boots up.

initramfs from TFTP
-------------------

The serial console (115200 8N1) must be used to access the u-boot shell
during bootup. It can then be used to first boot up the initramfs image
from a TFTP server (here with the IP 192.168.1.21):

    setenv serverip 192.168.1.21
    setenv ipaddr 192.168.1.1
    tftpboot 0x83001000 <filename-of-initramfs-kernel>.bin && bootm $fileaddr

The actual sysupgrade image can then be transferred (on the LAN port) to the
device via

    scp <filename-of-squashfs-sysupgrade>.bin root@192.168.1.1:/tmp/

On the device, the sysupgrade must then be started using

    sysupgrade -n /tmp/<filename-of-squashfs-sysupgrade>.bin

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agomt76: mt7915: add bf backoff limit table support
Sven Eckelmann (Plasma Cloud) [Wed, 2 Jul 2025 15:00:03 +0000 (17:00 +0200)] 
mt76: mt7915: add bf backoff limit table support

mt76 as support for generic rates power limits in the devicetree. But the
mt7915 supports beamforming and has another table for configuring the
backoff limits. These can be configured in the DT with the paths-*
properties. The path-*-bf are the ones relevant for beamforming and the
ones without -bf suffix for "traditional" path backoff.

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agomt76: Fix DTS power-limits on little endian systems
Sven Eckelmann (Plasma Cloud) [Mon, 30 Jun 2025 14:39:37 +0000 (16:39 +0200)] 
mt76: Fix DTS power-limits on little endian systems

The power-limits for ru and mcs and stored in the devicetree as bytewise
array (often with sizes which are not a multiple of 4). These arrays have a
prefix which defines for how many modes a line is applied. This prefix is
also only a byte - but the code still tried to fix the endianness of this
byte with a be32 operation. As result, loading was mostly failing or was
sending completely unexpected values to the firmware.

Since the other rates are also stored in the devicetree as bytewise arrays,
just drop the u32 access + be32_to_cpu conversion and directly access them
as bytes arrays.

Signed-off-by: Sven Eckelmann (Plasma Cloud) <se@simonwunderlich.de>
Link: https://github.com/openwrt/openwrt/pull/20152
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agonilfs-utils: update to 2.2.12 20261/head
Pavlo Samko [Wed, 1 Oct 2025 13:48:46 +0000 (16:48 +0300)] 
nilfs-utils: update to 2.2.12

Changelog: https://nilfs.sourceforge.io/download/ChangeLog-utils-v2

Signed-off-by: Pavlo Samko <bulldozerbsg@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20261
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoramips: Fix Hongdian H7920 v40 mac address 20256/head
Coia Prant [Wed, 1 Oct 2025 09:09:32 +0000 (17:09 +0800)] 
ramips: Fix Hongdian H7920 v40 mac address

After extracting the EEPROMs of different devices, only the 0x4 address is unique.

Use the 0x4 address as the LAN address, and the LAN+1 address as the WAN address.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20256
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoramips: Fix Hongdian H7920 v40 pinctrl default state
Coia Prant [Wed, 1 Oct 2025 07:55:57 +0000 (15:55 +0800)] 
ramips: Fix Hongdian H7920 v40 pinctrl default state

According to the MT7628 hardware datasheet:
- GPIO/4 was originally used for I2C, but is now used as the Modem Power.
- GPIO/5 was originally used for I2C, but is now used as the SIM card select. (n/a for this device)
- GPIO/6 was originally used for SPI CS1, but is now used as the Serial mode switch.
- GPIO/36 was originally used for PERST, but is now used as the GPS OE. (n/a for this device)
- GPIO/38 was originally used for WDT, but is now used as the Modem2 Power. (n/a for this device)
- GPIO/44 was used for WLED_AN, but is now controlled by `gpio-leds`.

Corrected pinctrl to ensure it works properly in the future.

Signed-off-by: Coia Prant <coiaprant@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/20256
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
4 weeks agoopenssl: update to 3.5.4 20275/head
John Audia [Thu, 2 Oct 2025 12:24:22 +0000 (08:24 -0400)] 
openssl: update to 3.5.4

release is Moderate.

This release incorporates the following bug fixes and mitigations:

Fix Out-of-bounds read & write in RFC 3211 KEK Unwrap.
(CVE-2025-9230)

Fix Timing side-channel in SM2 algorithm on 64 bit ARM.
(CVE-2025-9231)

Fix Out-of-bounds read in HTTP client no_proxy handling.
(CVE-2025-9232)

Reverted the synthesised OPENSSL_VERSION_NUMBER change for the release
builds, as it broke some exiting applications that relied on the previous
3.x semantics, as documented in OpenSSL_version(3).

Build system: x86/64
Build-tested: x86/64-glibc
Run-tested: x86/64-glibc

Signed-off-by: John Audia <therealgraysky@proton.me>
Link: https://github.com/openwrt/openwrt/pull/20275
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>