This commit adds support for Huasifei WH3000 Pro NAND version.
There is an eMMC already supported in OpenWrt. The only difference is NAND chip.
This commit adds common .dtsi and separate .dts
for eMMC and nand versions.
**Huasifei WH3000 Pro NAND**
Portable Wi-Fi 6 travel router based on MediaTek MT7981A SoC. MT7981B+MT7976CN+RTL8221B Dual Core 1.3GHZ with 5G modems module and PWM Fan.
**Specifications**
SoC: Filogic 820 MT7981A (1.3GHz)
RAM: DDR4 1GB
Flash: 256mb Winbond SPI NAND
WiFi: 2.4GHz and 5GHz with 3 antennas
Ethernet:
1x WAN (10/100/1000M)
1x LAN (10/100/1000/2500M)
USB: 1x USB 3.0 port
Two buttons: reset and mode (BTN_0)
LEDS: blue, red, blue+red=pink
UART: 3.3V, TX, RX, GND / 115200 8N1
M.2 (WWAN) slot
**Installation via U-Boot rescue**
1. Set static IP 192.168.1.2 on your computer and default route as 192.168.1.1
2. Connect to the WAN port and hold the reset button while booting the device.
3. Wait for the LED to blink 5 times, and release the reset button.
4. Open U-boot web page on your browser at http://192.168.1.1
5. Select the OpenWRT sysupgrade image, upload it, and start the upgrade.
6. Wait for the router to flash the new firmware.
7. Wait for the router to reboot itself.
**Installation via sysupgrade**
Just flash sysupgrade file via [LuCI upgrade page](http://192.168.1.1/cgi-bin/luci/admin/system/flash) without saving the settings.
**Installation via SSH**
Upload the file to the router `/tmp` directory, `ssh root@192.168.1.1` and issue a command:
```
sysupgrade -n /tmp/openwrt-mediatek-filogic-huasifei_wh3000-pro-nand-squashfs-sysupgrade.bin
```
Signed-off-by: Fil Dunsky <filipp.dunsky@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22694
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Migrate timer handling (removed in 6.13) and netdev dummy initialization
(removed in 6.16) to new methods with guards to not break older kernels.
This resolves compilation errors due to missing del_timer_sync(),
from_timer() and init_dummy_netdev().
Signed-off-by: Stefan Kalscheuer <stefan@stklcode.de>
Link: https://github.com/openwrt/openwrt/pull/22775
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This version fixes some security problems:
* Client impersonation while resuming a TLS 1.3 session
(CVE-2026-34873)
* Entropy on Linux can fall back to /dev/urandom (CVE-2026-34871)
* PSA random generator cloning (CVE-2026-25835)
* Compiler-induced constant-time violations (CVE-2025-66442)
* Null pointer dereference when setting a distinguished name
(CVE-2026-34874)
* Buffer overflow in FFDH public key export (CVE-2026-34875)
* FFDH: lack of contributory behaviour due to improper input validation
(CVE-2026-34872)
* Signature Algorithm Injection (CVE-2026-25834)
* CCM multipart finish tag-length validation bypass (CVE-2026-34876)
* Risk of insufficient protection of serialized session or context data
leading to potential memory safety issues (CVE-2026-34877)
* Buffer underflow in x509_inet_pton_ipv6() (CVE-2026-25833)
Changelog: https://github.com/Mbed-TLS/mbedtls/releases/tag/mbedtls-3.6.6
Size increases by 470 bytes on aarch64:
343995 bin/packages/aarch64_generic/base/libmbedtls21-3.6.5-r1.apk
344465 bin/packages/aarch64_generic/base/libmbedtls21-3.6.6-r1.apk
Link: https://github.com/openwrt/openwrt/pull/22787
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Include the column utility to allow simple formatting of columnar
output.
Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22782
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Version 6.19 - Feb 14, 2026
* Feature: support HW timestamp configuration (--set-hwtimestamp-cfg)
* Feature: display HW timestamp source (-T)
* Feature: support PLCA notifications (--get/set-plca-cfg)
* Feature: add PSE priority management support (--show/set-pse)
* Feature: support PSE notifications (--show/set-pse)
* Feature: support configuring RSS on IPv6 Flow Label (-n/-N)
* Feature: support FEC bit error histograms (--show-fec)
* Feature: register dump decoding for TI K3 CPSW and its ALE table (-d)
* Fix: fix missing headers in text output
* Fix: fix print_string when the value is NULL (-Werror=format-security)
* Fix: fix JSON output of SFP diagnostics
* Fix: fix duplicated JSON keys in module info
* Misc: clarify that symmetric RSS may be on by default (-x/-X)
* Misc: add AppStream metainfo file to %files section
Link: https://github.com/openwrt/openwrt/pull/22780
Signed-off-by: Nick Hainke <vincent@systemli.org>
The ramips now supports 6.18 kernel as testing.
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
The MODULE_DEVICE_TABLE macro was using an incorrect parameter 'match'
instead of the actual device table name 'mt7621_nfc_id_table'.
This fixes the reference to use the correct symbol name, ensuring
proper device table registration for module autoloading.
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
Fix fe_clean_rx to handle the changed frag_cache layout on newer kernels.
For kernels >= 6.13 the fragment cache needs to be converted from its
encoded_page value instead of using the old va field. Add an ifdef
to use frag_cache.encoded_page & PAGE_MASK and virt_to_page for those
kernels, keep the old path for older kernels.
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
Refreshed patches for ramips/patches-6.18 by running
make target/linux/refresh
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
Replace previous bgpio_init usage with a full gpio_chip registration so the driver
integrates cleanly with the kernel GPIO core.
Add drivers/gpio/gpio-ralink.c implementing a gpio_chip with:
- get/set, direction_input/direction_output, get_direction
- get_multiple/set_multiple to support efficient multi-bit ops
- DT handling for determining ngpios (reads "ngpios" or falls back to gpio-ranges)
- MAX_NGPIOS cap and safe defaults
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
Update patch 831-03-mmc-mtk-sd-use-default-PATCH_BIT1-2-values-for-mt762.patch
to a newer version compatible with kernel 6.18.
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
Remove symbols no longer present in version 6.18,
add new 6.18 kernel symbols.
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
This is an automatically generated commit.
When doing `git bisect`, consider `git bisect --skip`.
Signed-off-by: Mieczyslaw Nalewaj <namiltd@yahoo.com>
Link: https://github.com/openwrt/openwrt/pull/21418
Signed-off-by: Robert Marko <robimarko@gmail.com>
The Realtek mdio bus operations are based on the port number. As
of now the driver exposes a single bus with a 1:1 mapping between
phy and port. This will change in the future when the driver
exposes multiple busses. This will need a mapping - e.g.
- bus 0, phy 23 -> read/write port 23
- bus 1, phy 0 -> read/write port 24
Provide a rtmdio_phy_to_port() indirection function that will
lookup the port number based on a bus and a phy. For now it
will only run some basic sanity checks and return the given
input address (because of 1:1 mapping).
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22731
Signed-off-by: Robert Marko <robimarko@gmail.com>
When the mdio driver gets enhanced for multiple busses it must
snchronize reads/writes to the single controller. Add a lock
to the control structure and guard the critical operations.
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22731
Signed-off-by: Robert Marko <robimarko@gmail.com>
Make use of regmap in all device specific set_rx_mode() functions.
Adapt the constant prefixes to the rest of the driver. While we
are here:
- align the RTL931x function name with the other targets
- replace constants with GENMASK()
- use new lowercase style for hexadecimal values
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22757
Signed-off-by: Robert Marko <robimarko@gmail.com>
The ethernet driver currently uses the legacy sw() macros. Add a
regmap to the driver that is derived from the parent mfd (like in
the mdio drivers). As a first consumer make use of that in the IRQ
functions.
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22757
Signed-off-by: Robert Marko <robimarko@gmail.com>
This symbol is selected by CONFIG_BPF, which was already enabled
on generic config-6.18.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This symbol is selected by CONFIG_BPF, which was already enabled
on generic config-6.12.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This symbol depends on the specific CPU type, so we should not
set it globally.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This symbol is selected by CONFIG_BUILTIN_DTB. However, we didn't
enable it in generic config-6.18.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Add missing dependency kmod-ptp to fix the build error. We also
add symbol CONFIG_PTP_1588_CLOCK_OPTIONAL explicitly for kmod-ptp
because it is selected by CONFIG_PTP_1588_CLOCK. Fix:
Package kmod-iavf is missing dependencies for the following libraries:
ptp.ko
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
cryptd has been decoupled from crypto-misc in the 6.18 kernel. Fix:
ERROR: module '/home/runner/work/Actions_/Actions_/openwrt/build_dir/target-i386_pentium4_musl/linux-x86_generic/linux-6.18.20/crypto/cryptd.ko' is missing.
make[3]: *** [modules/crypto.mk:873: /home/runner/work/Actions_/Actions_/openwrt/bin/targets/x86/generic/packages/kmod-crypto-misc-6.18.20-r1.apk] Error 1
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22730
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This adds support for the Wavlink "Halo Base Pro".
SOC: MT7621DAT
RAM: 128MiB
Flash: 16MiB NOR
WiFi: MT7603EN + MT7613BEN
Buttons:
- The touch sensor was originally for WPS, but this has been moved to the
pair button which is no longer used to prevent accidental touches
LEDs:
- On original firmware, the status LEDs light up as follows:
- Purple = booting, Blue = working, Red = error
Partitions:
- factory contains unique WiFi EEPROM and default MAC addresses
- vendor partition has an unknown purpose
Stock MAC address allocation:
- LAN1: xx:xx:xx:xx:xx:80
- LAN2/WAN: xx:xx:xx:xx:xx:81
- WiFi 2.4G: xx:xx:xx:xx:xx:82
- WiFi 5G: xx:xx:xx:xx:xx:83
LAN Ports:
- lan1 is the normal white LAN port
- lan2 is labelled "LAN/Backhaul", which can either be LAN or WAN.
- Since this device is intended to be part of a mesh, this will usually
be a LAN port, hence why it's assigned to lan2 here
Notes:
- I've chosen "Halo Base Pro" as the device model, despite the website URL
showing WL-WN535M3, as the label only states "Halo Base Pro".
- Only the 5GHz WiFi address is labelled on the device
Signed-off-by: William Latter <williamlatter77@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22400
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
MediaTek T-PHY controller supports multiple usb2.0, usb3.0 ports,
PCIe and SATA. ARM mediatek and ramips/mt7621 targets require this
package to make the XHCI work properly.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22094
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Compared to the "mediatek,mt8173-xhci", this is a more generic and
reasonable compatible string. On the driver side, they are identical.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22094
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
The USB t-phy driver includes some magic register init values. This
should be beneficial for the USB stability and performance.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22094
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
MT7621 USB phys are compatible with the MediaTek T-PHY controller.
The vendor SDK also enabled this driver for MT7621.
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/22094
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This was replaced upstream with a proper rng device that feeds into
/dev/random. No need for this anymore.
Signed-off-by: Rosen Penev <rosenp@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22766
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Remove unit name leading 0s to fix the following dtc warnings:
danube_arcadyan_arv752dpw22.dts:263.11-273.4: Warning (pci_device_reg): /fpi@10000000/pci@e105400/usb@0f,0: PCI unit address format error, expected "f,0"
danube_arcadyan_arv752dpw22.dts:275.11-285.4: Warning (pci_device_reg): /fpi@10000000/pci@e105400/usb@0f,2: PCI unit address format error, expected "f,2"
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
The dtc will treat "spi" node as an SPI controller. This resulted
in lots of false warning reports. Workaround it by renaming the
pinctrl node name to "spi-pins". This patch fixes the following
dtc warnings:
vr9.dtsi:326.18-336.6: Warning (spi_bus_bridge): /fpi@10000000/pinmux@e100b10/spi: incorrect #address-cells for SPI bus
vr9.dtsi:326.18-336.6: Warning (spi_bus_bridge): /fpi@10000000/pinmux@e100b10/spi: incorrect #size-cells for SPI bus
ar9.dtsi:286.18-296.6: Warning (spi_bus_bridge): /fpi@10000000/pinmux@e100b10/spi: incorrect #address-cells for SPI bus
ar9.dtsi:286.18-296.6: Warning (spi_bus_bridge): /fpi@10000000/pinmux@e100b10/spi: incorrect #size-cells for SPI bus
amazonse.dtsi:166.18-176.6: Warning (spi_bus_bridge): /fpi@10000000/pinmux@e100b10/spi: incorrect #address-cells for SPI bus
amazonse.dtsi:166.18-176.6: Warning (spi_bus_bridge): /fpi@10000000/pinmux@e100b10/spi: incorrect #size-cells for SPI bus
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/18843
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
When building on a host with e2fsprogs >= 1.47.0 installed, configure
detects the system libblkid probe API (blkid_probe_get_partitions etc.)
and sets ac_cv_lib_blkid_blkid_get_cache=yes. This causes plausible.c
to be compiled with HAVE_BLKID_PROBE_GET_PARTITIONS defined, but the
host build links against the internal blkid stub, resulting in:
plausible.c: error: unknown type name 'blkid_probe'
Override the configure cache variables to prevent detection of the
system libblkid probe API, ensuring the internal stub is used
consistently.
Signed-off-by: seuros <openwrt@seuros.com>
Link: https://github.com/openwrt/openwrt/pull/22368
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
The RTL8231 LED driver is using the .brightness_set op, which according
to the documentation should not sleep. Since the RTL8231 is controlled
via an MDIO bus, this is not the case.
When using a non-offloaded LED driver such as netdev, this may currently
trigger kernel warnings:
WARNING: CPU: 0 PID: 14 at kernel/time/timer.c:1754 call_timer_fn.isra.0+0x84/0x8c
timer: led_timer_function+0x0/0x1d8 preempt leak: 00000100 -> 00000000
Switch to the .brightness_set_blocking op to indicate the operation
might sleep.
Fixes: 6ef6014887 ("realtek: Add pinctrl support for RTL8231")
Signed-off-by: Sander Vanheule <sander@svanheule.net>
This reverts commit a2fa1db797.
These patches stop secondary CPUs before restart and wait for them
to go offline, fixing the mt7621 reboot deadlock without needing to
disable CONFIG_LIST_HARDENED.
Signed-off-by: Rany Hany <rany_hany@riseup.net>
Link: https://github.com/openwrt/openwrt/pull/22724
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
rteth_930x_decode_tag() and rteth_931x_decode_tag() are basically
the same. The only difference is the port bitmask. Luckily on the
RTL930x devices the unused fifth bit is always zero and the mask
can be aligned with RTL931x. Take over the RTL931x reason debugging
for both targets.
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22717
Signed-off-by: Robert Marko <robimarko@gmail.com>
Use the new PHY_C22() macro for this RTL9301 device.
Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de>
Link: https://github.com/openwrt/openwrt/pull/22721
Signed-off-by: Robert Marko <robimarko@gmail.com>
Set the SerDes mode to OFF early in the setup process to have a clear
starting point. This was part of the media handling before as a leftover
from the SDK code import. In the SDK, this function didn't only care
about applying some media settings but was also some kind of mode
setting for fiber modes.
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22786
Signed-off-by: Robert Marko <robimarko@gmail.com>
Right now we operate with distinct media types for fiber using different
speeds. This is more of a leftover from the SDK then it really makes
sense design-wise. The set_media function from the SDK did a lot more
than just setting some media-specific parameters. As part of
deconstructing this, also reduce the fiber types to a single media type
and handle the speed-agnostic parts based on the hw_mode for now.
This also drops the check for 100M speed around a block of writes. This
check has it's origin in SDK code where a switch statement just didn't
handle this case. However, the rest of the SDK doesn't handle this case
either. While the explicit 100M support isn't verified yet, there's no
need to keep that check.
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
Link: https://github.com/openwrt/openwrt/pull/22786
Signed-off-by: Robert Marko <robimarko@gmail.com>