Installation
------------
1. Disassemble the device
2. Create solder bridge on R85, R86, Solder 4-pin header on J4.
3. Connect UART console.
4. In U-Boot shell, enter the following commands to prepare flashing
```
enable_phy
extra_para set extra-para score 100
extra_para set extra-para fwFlag good
```
5. Use `mtkupgrade` command to TFTP flash openwrt-mediatek-filogic-tplink_fr365-v1-squashfs-factory.bin
6. Reboot the device
Yonghyu Ban [Wed, 19 Mar 2025 08:11:54 +0000 (17:11 +0900)]
mediatek: allow mounting ubifs by its device and partition name
Since not every device sets an ubifs partition name as the same as their
parent mtd partition, this change allows mount_ubi_part to usable in
other devices
**Huasifei WH3000 Pro**
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: eMMC 8GB
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: power/reset and mode (BTN_0)
LEDS: blue, red, blue+red=pink
UART: 3.3V, TX, RX, GND / 115200 8N1
**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-squashfs-sysupgrade.bin
```
**Factory MAC**
You can find your Factory MAC which is mentioned on the box at `/dev/mmcblck0p2` partition `factory` starting from `0x4`
```
dd if=/dev/mmcblk0p2 bs=1 skip=4 count=6 | hexdump -C
```
Fixed `green` to `blue` LED in dts, added `SUPPORTED_DEVICES += huasifei,fudy-pro` - to make sysupgrade compatible with factory QWRT/Lede fork firmware.
- update dropbear to latest stable 2025.88;
for the changes see https://matt.ucc.asn.au/dropbear/CHANGES
- rewrite 100-pubkey_path.patch
- refresh remaining patches
Signed-off-by: Konstantin Demin <rockdrilla@gmail.com>
The operating mode of a SerDes must be aligned with the attached PHY or
SFP module. That does not only require to change the protocol (e.g. SGMII,
10Gbase-R, ...) but also the speed (e.g. 1.25G). For this the SerDes must
be re-initialized properly.
- It must be taken into power down
- The PLL speed must be set
- Maybe the CMU (clock management unit) must be resetted
- The new mode must be set
- The state machine must be resetted
- The power must be reactivated
Until now this sequence is bugged. First the driver relies on a clean
setup from U-Boot (rtk network on) and second trying to to change mode
and PLL speeds does not work at all. And not to forget: Currently two
adjacent SerDes cannot drive SGMII/HSGMII at the same time. Fix this by
taking care about the right SerDes/PLL/CMU command init order.
P.S. This code is inspired by the work of Jan Hofmann, who tried to
enable parallel SGMII/HSGMII mode. The only missing bit was a proper CMU
reset sequence.
Signed-off-by: Jan Hoffmann <jan@3e8.eu> Signed-off-by: Markus Stockhausen <markus.stockhausen@gmx.de> Link: https://github.com/openwrt/openwrt/pull/19220 Signed-off-by: Robert Marko <robimarko@gmail.com>
perf will attempt to run shellcheck on the test shell scripts, however
there is no point in doing this in OpenWrt and while perf checks for
shellcheck presence on your host it can fail to build in some cases.
Robert Marko [Thu, 10 Jul 2025 13:05:39 +0000 (15:05 +0200)]
perf: disable BUILD_BPF_SKEL
BUILD_BPF_SKEL was set to 1 by default in upstream commit: 9925495d96efc14d885ba66c5696f664fe0e663c ("perf build: Default
BUILD_BPF_SKEL, warn/disable for missing deps")
Prior to that, it was disabled by default and you had to enable it to
build BPF skeleton support.
So in order to fix perf compilation with kernel 6.12, lets disable
BUILD_BPF_SKEL.
Felix Fietkau [Wed, 9 Jul 2025 15:16:27 +0000 (17:16 +0200)]
ath79: revert wmac node names
Changing the node names arbitrarily broke existing configurations, which
rely on the device path in /etc/config/wireless.
Revert that part of the change without altering the compatible strings.
John Audia [Tue, 8 Jul 2025 19:43:12 +0000 (15:43 -0400)]
ncurses: Add -std=gnu17 to CFLAGS to avoid a GCC15 error when building with glibc
Without the newly introduced flag, building with libc ends in errors such the below.
There is an upstream fix[1], but backporting it is not straight forward.
Daniel Golle [Wed, 9 Jul 2025 01:55:35 +0000 (02:55 +0100)]
xcrypt: work-around broken use of VARIANT with BUILDONLY
Split the xcrypt package build into two Makefiles and a common part for
the version definition in order to work-around build problems when
combining VARIANT with BUILDONLY and scoped InstallDev.
This is done in order to skip build of libcrypt-compat in case we are
not building against glibc in order to prevent libcrypt.so shared
library being present in staging_dir and by that breaking multiple
packages which then will link against it.
Fixes: e3cf7088f1 ("libcrypt-compat: introduce package") Signed-off-by: Daniel Golle <daniel@makrotopia.org> Link: https://github.com/openwrt/openwrt/pull/19353 Signed-off-by: Robert Marko <robimarko@gmail.com>
Felix Fietkau [Mon, 7 Jul 2025 17:38:53 +0000 (19:38 +0200)]
mt76: update to Git HEAD (2025-07-07)
6df761e0e6c7 mt76: fix signature of platform_driver remove funtions for newer kernels 5724be1a6b12 wifi: mt76: Replace strlcpy() with strscpy() c4a114e2b8c9 wifi: mt76: fix queue assignment for deauth packets 243e572d89fc wifi: mt76: add a wrapper for wcid access with validation e41c7785589f wifi: mac80211: get tx power per link d70f62b8f1c7 wifi: mt76: fix vif link allocation 7b3cd3274a24 wifi: mt76: mt7996: Fix secondary link lookup in mt7996_mcu_sta_mld_setup_tlv() cf89b6218043 wifi: mt76: mt7996: Rely on for_each_sta_active_link() in mt7996_mcu_sta_mld_setup_tlv() d71108eedab1 wifi: mt76: mt7996: Do not set wcid.sta to 1 in mt7996_mac_sta_event() 32f8c5849ed1 wifi: mt76: mt7996: Fix mlink lookup in mt7996_tx_prepare_skb ffff9f71e29d wifi: mt76: mt7996: Fix possible OOB access in mt7996_tx() afe63e758196 wifi: mt76: mt7996: Fix valid_links bitmask in mt7996_mac_sta_{add,remove} 68dd28b99dad wifi: mt76: mt7996: Add MLO support to mt7996_tx_check_aggr() 293778652452 wifi: mt76: mt7996: Move num_sta accounting in mt7996_mac_sta_{add,remove}_links a94166b21e20 wifi: mt76: Get rid of dma_sync_single_for_device() for MMIO devices 87873d854e51 wifi: mt76: mt7925: Fix null-ptr-deref in mt7925_thermal_init() 06ba3d5e91f4 wifi: mt76: mt792x: Limit the concurrent STA and SoftAP to operate on the same channel b9f4e0df317d wifi: mt76: mt792x: improve monitor interface handling ec95319fd3fb wifi: mt76: mt7921s: Introduce SDIO WiFi/BT combo module card reset dd2d862251cb firmware: add missing mt7990 eeprom files 05eaa56bc7a4 firmware: update mt7992 firmware to 20250328 32ca2b6db354 firmware: update mt7996 firmware to 20250328
The upstream submission for this mandates the node to be named wifi
instead of wmac. Change all ath79 entries to match the new names and
remove the compatibility patch.
Felix Fietkau [Sun, 6 Jul 2025 17:23:59 +0000 (19:23 +0200)]
ath9k: add back previous DT compatible strings for ahb
The ath9k ahb patch was updated to match the latest upstream version,
however the openwrt DT files still use the older names.
Add those as extra entries in order to remain compatible until DT files
are fixed.
Fixes: 88f4c32060f7 ("mac80211: update to version 6.14.11") Signed-off-by: Felix Fietkau <nbd@nbd.name>
airoha: backport upstream patch for Flow Offload support for AN7581
Backpot upstream patch for Flow Offload support for AN7581 and refresh
all affected patch. To correctly work a dedicated firmware is needed to
use the dedicated Network Coprocessor (NPU).
This also introduce good cleanup and moves the driver in a dedicated
Airoha directory. While currently not totally usable (due to lack of
firmware blob) this is needed to backport support for external PHY/SFP
support.
Refresh all affected patch.
Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k Tested-by: Andrew LaMarche <andrewjlamarche@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18166 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Backport some upstream patch for Airoha ethernet driver in preparation
for Flow Offload support.
Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k Tested-by: Andrew LaMarche <andrewjlamarche@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18166 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Replace PCIe patch with upstream version and update DTS with new PBUS
CSR property now required.
Tested-by: Aleksander Jan Bajkowski <olek2@wp.pl> # tested on Quantum W1700k Tested-by: Andrew LaMarche <andrewjlamarche@gmail.com> Link: https://github.com/openwrt/openwrt/pull/18166 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Harrison Boyd [Tue, 1 Jul 2025 22:59:05 +0000 (22:59 +0000)]
config: drop kernel config symbols removed before v6.6
Since we don't support any kernel versions below v6.6, Kconfig options
that were removed upstream before 6.6 are no longer relevant and should be
dropped.
This commit removes the following obsolete kernel config options:
- KERNEL_UBSAN_NULL: Removed in v4.18 (3ca17b1f3628)
- KERNEL_DEBUG_LL_UART_NONE: Removed in v4.0 (6f5194553c84)
- KERNEL_SLABINFO: Removed in v4.15 (5b36577109be)
- KERNEL_RESOURCE_COUNTERS: Removed in v3.18 (5b1efc027c0b)
- KERNEL_MM_OWNER: Removed in v3.16 (f98bafa06a28)
- KERNEL_MEMCG_SWAP: Removed in v6.1 (e55b9f96860f)
- KERNEL_MEMCG_SWAP_ENABLED: Removed in v5.7 (2d1c498072de)
- KERNEL_DEVPTS_MULTIPLE_INSTANCES: Removed in v4.7 (eedf265aa003)
- KERNEL_DEVKMEM: Removed in v5.13 (bbcd53c96071)
- KERNEL_SECURITY_SELINUX_DISABLE: Removed in v6.4 (f22f9aaf6c3d)
Ian Ladd [Wed, 2 Jul 2025 14:54:47 +0000 (10:54 -0400)]
libnetfilter-conntrack: bump to 1.1.0
Updates libnetfilter-conntrack to version 1.1.0.
Removes patches which should no longer be needed according to changelog for
libnetfilter-conntrack 1.1.0
Mbed TLS 3.6 is a long-term support (LTS) branch. It will be supported with bug-fixes and security fixes until at least March 2027.
Security Advisories
For full details, please see the following links:
Race condition in AESNI support detection [1]
Heap buffer under-read when parsing PEM-encrypted material [2]
Unchecked return value in LMS verification allows signature bypass [3]
Out-of-bounds read in mbedtls_lms_import_public_key() [4]
Timing side-channel in block cipher decryption with PKCS#7 padding [5]
NULL pointer dereference after using mbedtls_asn1_store_named_data() [6]
Misleading memory management in mbedtls_x509_string_to_names() [7]
Changes between 3.5.0 and 3.5.1:
Fix x509 application adds trusted use instead of rejected use.
Issue summary: Use of -addreject option with the openssl x509 application
adds a trusted use instead of a rejected use for a certificate.
Impact summary: If a user intends to make a trusted certificate rejected
for a particular use it will be instead marked as trusted for that use.
(CVE-2025-4575)
Aligned the behaviour of TLS and DTLS in the event of a no_renegotiation
alert being received. Older versions of OpenSSL failed with DTLS if a
no_renegotiation alert was received. All versions of OpenSSL do this for TLS.
From 3.2 a bug was exposed that meant that DTLS ignored no_rengotiation.
We have now restored the original behaviour and brought DTLS back into line
with TLS.
Eric Fahlgren [Tue, 1 Jul 2025 21:02:41 +0000 (14:02 -0700)]
imagebuilder: implement STRIP_ABI option for manifest target
When using apk as the package manager, imagebuilder make command
make manifest STRIP_ABI=1
does not strip package names of their ABI-version suffix. The ASU
server relies on this to validate builds, so many snapshot build
requests are failing.
Fix this by using the already existing package data parser in
make-index-json.py and augment it to write the result in manifest
format.
Fixes: https://github.com/openwrt/openwrt/issues/19274 Signed-off-by: Eric Fahlgren <ericfahlgren@gmail.com> Link: https://github.com/openwrt/openwrt/pull/19278 Signed-off-by: Robert Marko <robimarko@gmail.com>
Felix Fietkau [Tue, 1 Jul 2025 18:48:14 +0000 (20:48 +0200)]
ubus: update to Git HEAD (2025-07-01)
27839f854a58 ubusd: make txq_len field signed b35b2bc63e8e ubusd: treat EACCES on write like EAGAIN 713e9d19b2b6 ubusd: retry write on EINTR 8bb523ab20e0 ubusd: fix txq_len accounting b1b783c74742 ubusd: add another tx attempt on enqueueing the first message for a client
qualcommax: ipq50xx: Add support for Yuncore AX830
Specifications:
SOC: Qualcomm IPQ5018 (64-bit dual-core ARM Cortex-A53 @ 1.0Ghz)
Memory: 512MB DDR3L
Standard: 802.11ax/ac/b/g/n
Flash: SPI NOR 8MB (Winbond W25Q64DW) + NAND 128MB (Winbond W25N01GWZEIG)
2.4G Frequency: 2.4GHz - 2.484GHz
2.4G Wi-Fi standard: 802.11b/g/n/ax
5.8G Frequency: 4.9~5.9G
5.8G Wi-Fi Standard: 802.11 a/n/ac/ax
Interface:
Optional 1(Without 8081):
1 * 10/100 /1000Mbps RJ45 WAN Port and PoE port;
1* Gigabit Console port;
Optional 2(With 8081):
1 * 10/100/1000/2500Mbps RJ45 WAN port and PoE port,
1*10/100/1000Mbps LAN port
Buttons: 1 * Reset button, press 10 seconds to revert to default setting
Antenna: Build in 4*4dBi dual band MIMO Antenna
Data Rate: 3000Mbps (2.4G 600Mbps, 5.8G 2400Mbps)
End Users: 128+
2.4G RF Power: ≤ 23dBm
5.8G RF Power: ≤ 23dBm
DC: 12V----2A
PoE: 48V (IEEE 802.3at)
LED Light: Sys, WAN, LAN
Power Consumption: ≤ 20W
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=ax830
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
```
Ondrej Cierny [Fri, 27 Jun 2025 02:39:37 +0000 (19:39 -0700)]
download: improve rawgit tar reliability
Packages that depend on rawgit can fail on systems with the tar UID
issue (https://bugzilla.redhat.com/show_bug.cgi?id=913406).
Fix this by adding tar flags to overwrite UID/GID, as in the
dl_tar_pack method.
Until now the rt-loader only works on U-Boot driven devices where the
environment (e.g. coprocessor) is usually setup properly. Devices like
the ZyXEL GS1920 series use BootBase as start environment and skip
some of the basic initialization steps. rt-loader will fail in these
cases. Take care about the CP0 registers.
Additionally enhance the documentation of the printf implementation.
It was optimized during the different revisions of the initial PR.
Kazuhiro Ito [Sun, 29 Jun 2025 07:47:31 +0000 (16:47 +0900)]
x86: 64: Enable PCI MMCONFIG
Some devices can't boot since kernel 6.6 without PCI MMCONFIG.
Fixes: https://github.com/openwrt/openwrt/issues/18228 Fixes: https://forum.openwrt.org/t/openwrt-24-10-x86-64-boot-hangs-after-pci-nvme-initialization/229086 Signed-off-by: Kazuhiro Ito <kzhr@d1.dion.ne.jp> Link: https://github.com/openwrt/openwrt/pull/19256 Signed-off-by: Robert Marko <robimarko@gmail.com>
The bootloader of many Realtek switches only supports gzipped kernel images.
With limited flash space that might get critical in future versions. For better
compression allow support for compressed images. For this a new loader was
developed. Several ideas have been taken over from the existing lzma loader
but this has been enhanced to make integration simpler. What is new:
- Loader is position independent. No need to define load addresses
- Loader identifies device memory on its own
- Loader uses "official" upstream kernel lzma uncompress
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/lib/decompress_unlzma.c
- Loader uses "official" UNMODIFIED nanoprintg that is used by several
bare metal projects. https://github.com/charlesnicholson/nanoprintf
Compiled the loader ist just under 12KiB and during boot it will show:
rt-loader
Found RTL8380M (chip id 6275C) with 256MB
Relocate 2924240 bytes from 0x80100000 to 0x8fce0000
Extract kernel with 2900144 bytes from 0x8fce521c to 0x80100000...
Extracted kernel size is 9814907 bytes
Booting kernel from 0x80100000 ...
[ 0.000000] Linux version 6.12.33 ...
[ 0.000000] RTL838X model is 83806800
...