MAC addresses:
| Interface | MAC | Algorithm |
|:----------|:-----------------:|:--------------------------|
| WLAN 2.4G | 58:86:94:XX:XX:34 | label |
| WAN | 58:86:94:XX:XX:35 | label + 1 |
| LAN | 58:86:94:XX:XX:37 | label + 3 |
| WLAN 5G | 5A:86:94:XX:XX:37 | label + 3 with LA bit set |
- The WLAN 2.4G MAC address (label) is stored in factory partition, 0x4
Installation:
- Stock web interface:
1. Flash the **initramfs-factory** image through the web page.
2. Boot into OpenWrt and perform sysupgrade with **sysupgrade** image.
- Recovery mode:
1. Turn on the device and press the Reset button more than 10 seconds
to enter recovery mode.
2. Access the recovery web interface at 192.168.0.1/24 and flash the
**initramfs-factory** image.
3. Boot into OpenWrt and perform sysupgrade with **sysupgrade** image.
Gain SSH access:
Method 1:
1. Connect UART Adapter to the router
2. UART pins are enabled, set the root password with passwd command
start the dropbear instance on port 22
Method 2:
1. Login into web interface, and restore the router with SSH enabled configuration.
2. After reboot Default Web interface password will be 12345678
SSH password is empty
Flash instructions:
1. Connect to HX21, backup everything, especially 'Factory' part.
3. Write new FIP:
mtd write openwrt-mediatek-filogic-hx_21-bl31-uboot.fip FIP
4. Set static IP on your PC:
IP 192.168.1.254/24, GW 192.168.1.1
5. Serve OpenWrt initramfs image using TFTP server.
6. Wait for TFTP recovery to complete.
7. After OpenWrt has booted, perform sysupgrade.
8. To write new BL2
Install mtd-rw
opkg update && opkg install kmod-mtd-rw
insmod mtd-rw i_want_a_brick=1
mtd write openwrt-mediatek-filogic-imou_hx21-preloader.bin bl2
Radek Dostál [Sun, 9 Nov 2025 17:38:15 +0000 (18:38 +0100)]
ath79: re-enable build of TP-Link RE355 v1, RE450 v1 and RE450 v2
With previous patches these devices have only 128 KiB less space than
RE450 v3. It may be even possible to revert commit 65b6f1c1b251 ("ath79:
move TP-Link RE450 v1 & v2 and RE355 v1 to tiny target") but that was
not done as the device has only 8 MiB flash and will eventually run out of
it anyway.
Radek Dostál [Sun, 9 Nov 2025 16:35:51 +0000 (17:35 +0100)]
ath79: reduce config partition size for RE450 v1 and RE355 v1 to 0x20000
Dump of content of my RE450 v1 showed, that there are valid data only
up to 0x10420. Everything after is just 0xFF. This will also make
partition table identical to qca9563_tplink_re450-v2.dts, which seems
to be logical.
Marcin Leksmark [Thu, 11 Sep 2025 14:40:20 +0000 (16:40 +0200)]
ramips: add support for D-Link DIR-2660 A2
This patch adds support for D-Link DIR-2660 A2.
Based on the commit: https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=b5dd746cbb1aaf91f4b68e9f3eda97413550d904,
Both devices look identical, except for the A1/A2 designation.
You can safely install the A1 firmware for the A2 – I've been testing it for several months as a DUMB AP – without any problems.
Specifications:
* SoC: MediaTek MT7621AT
* RAM: 256 MB (DDR3)
* Flash: 128 MB (NAND)
* WiFi: MediaTek MT7615N (x2)
* Switch: 1 WAN, 4 LAN (Gigabit)
* Ports: 1 USB 2.0, 1 USB 3.0
* Buttons: Reset, WPS
* LEDs: Power (white/orange), Internet (white/orange), WiFi 2.4G (white),
WiFi 5G (white), USB 3.0 (white), USB 2.0 (white)
Notes:
* WiFi 2.4G and WiFi 5G LEDs are wired directly to the wireless chips
Installation:
* D-Link Recovery GUI: power down the router, press and hold the reset
button, then re-plug it. Keep the reset button pressed until the power
LED starts flashing orange, manually assign a static IP address under
the 192.168.0.xxx subnet (e.g. 192.168.0.2) and go to http://192.168.0.1
* Some modern browsers may have problems flashing via the Recovery GUI,
if that occurs consider uploading the firmware through cURL:
Tianling Shen [Thu, 13 Nov 2025 13:41:30 +0000 (21:41 +0800)]
mediatek: fix ubi size for zbtlink zbt z8102ax v2
According to the factory uboot and firmware[1], the ubi size is set
to 512 MiB (0x20000000) and it exceeds the size of the flash, after
that the uboot and kernel resizes it to 114.5 MiB (0x7280000) instead
of 114.125 MiB (0x7220000). The mismatch of the ubi size causes
kernel fails to read ubi volumes and throws panic.
Fixes: e34e874a11f0 ("mediatek: add support for Zyxel NWA90AX PRO") Signed-off-by: James Davis <james.l.davis@outlook.com> Link: https://github.com/openwrt/openwrt/pull/20759 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
Note: The LED color is amber or blue, depending on your router's color
(black/white).
MAC address
-----------
+-----------+-------------------+-----------+
| Interface | MAC | Algorithm |
+-----------+-------------------+-----------+
| WLAN 2.4G | B0:38:6C:xx:xx:xx | label |
| WLAN 5G | B2:38:6C:4x:xx:xx | |
| WAN | B0:38:6C:xx:xx:xx | label + 1 |
| LAN | B0:38:6C:xx:xx:xx | label + 3 |
+-----------+-------------------+-----------+
The WLAN 2.4G MAC address was found in 'Factory' partition, 0x4
Installation
------------
1. Download the OEM recovery software (ipTIME Firmware Wizard (11ac))
from the manufacturer's website
2. Download the *squashfs-factory.bin file from the OpenWrt website
3. Press a reset button, and power up the router (keep pressing the reset button)
4. Wait more than 10 seconds until the CPU LED stop blinking
5. Connect the router (LAN port) to the PC
6. Run the OEM recovery software and follow the instructions
7. Select the *squashfs-factory.bin file during the router recovery process
8. Wait for the router to boot from *squashfs-factory.bin
Limitation: Triggering the WLAN LED for activity on both phy0 (2.4GHz) and phy1 (5GHz)
----------
Currently, the UCI doesn't support triggering a single LED for activity
on multiple WLAN interfaces. As a temporary workaround, the LED is
configured to only indicate activity on `phy1`. If you wish to monitor
`phy0` instead, you must change the device from `phy1-ap0` to `phy0-ap0`
in the LuCI LED configuration.
Ziyang Huang [Sun, 19 Oct 2025 12:26:32 +0000 (20:26 +0800)]
airoha: an7581: enable NPU by default
There is no reason not to do this.
Use the following commands to enable hardware offloading:
uci set firewall.@defaults[0].flow_offloading='1'
uci set firewall.@defaults[0].flow_offloading_hw='1'
uci commit
Liangbin Lian [Thu, 13 Nov 2025 07:17:57 +0000 (15:17 +0800)]
uboot-rockchip: add dedicated uboot for LinkEase EasePi R1
The generic-rk3568 does not reset the gmac phy, causing the kernel to
fail to initialize gmac during cold boot with the error message
"mdio_bus stmmac-1: MDIO device at address 1 is missing."
Adding a dedicated uboot for EasePi R1 to resolve this issue.
The EasePi R1's DTS hasn't been merged into the Linux release yet,
so it cannot be submitted to the upstream u-boot.
Fixes: ef093299db ("uboot-rockchip: add support for LinkEase EasePi R1") Signed-off-by: Liangbin Lian <jjm2473@gmail.com> Link: https://github.com/openwrt/openwrt/pull/20772 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
this change allows one to selectively "hush" scripts from /etc/profile.d/ directory.
e.g., to skip "opkg to apk cheatsheet" message ("/etc/profile.d/apk-cheatsheet.sh") create empty file "/etc/profile.d/apk-cheatsheet.hush" using, for example, command "touch /etc/profile.d/apk-cheatsheet.hush"
Zhu Yujie [Wed, 19 Nov 2025 11:46:32 +0000 (19:46 +0800)]
siflower: 6.12: change .remove_new callback to .remove
Move back to .remove from .remove_new as kernel 6.12 unified the usage
of .remove and .remove_new (and .remove_new is expected to be dropped in
later version)
Zhu Yujie [Wed, 19 Nov 2025 09:09:52 +0000 (17:09 +0800)]
siflower: 6.12: apply trivial driver fixes
Apply trivial fixes for 6.12 files:
- Make functions static
- Add lots of missing header in drivers
- Fix no newline at end of file error and other new line error
- Drop deprecated validate function for xgmac
- Use devm for stmmac probe
- Remove host_ prefix from pcie_host_ops
Zhu Yujie [Fri, 14 Nov 2025 07:19:13 +0000 (15:19 +0800)]
siflower: spi: replace 'master' with 'controller' in driver
This change replaces the term 'master' with 'controller' in the
Siflower SPI driver (sf_qspi) to align with the Linux kernel's
inclusive language policy.
Zhu Yujie [Fri, 14 Nov 2025 07:15:44 +0000 (15:15 +0800)]
siflower: 6.12: refresh patches
This involves rebasing the patches and resolving any conflicts
arising from changes in the base kernel between the previous
supported version and 6.12.
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.
For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
Rany Hany [Sat, 15 Nov 2025 20:25:59 +0000 (20:25 +0000)]
wifi-scripts: bump reassociation_deadline default to 20000
Most users on forums face a broken 802.11r setup when having
a very simple 802.11r config (i.e., just ieee80211r enabled).
In most cases, simply bumping reassociation_deadline to
20000 fixes their problems and allows 802.11r to just work.
Reassociation Deadline is already set to 20 seconds on Cisco
equipment by default[1] which is why this value has been
chosen.
It is also mentioned on the OpenWRT Wiki as a value that should
be changed in order for 802.11r to work on Apple devices. I think
it would be better to change the defaults instead so users don't
have to do much work for a working setup.
Robert Marko [Wed, 19 Nov 2025 12:46:29 +0000 (13:46 +0100)]
include: rootfs: fix APK compressed scripts tarball support
APK will generate the compressed scripts.tar by default, however we rely
on using TAR support for updating the tarball on the fly and this does not
work when tarball is compressed and will cause the following errors:
staging_dir/host/bin/tar: Cannot update compressed archives
Try /staging_dir/host/bin/tar --help' or
staging_dir/host/bin/tar --usage' for more information.
So, lets simply decompress the scripts.tar.gz before usage and then
compress it after we are done.
Fixes: 5d85657f6dbb ("apk-tools: implement compression of on-device scripts.tar") Signed-off-by: Robert Marko <robimarko@gmail.com>
Lorenzo Bianconi [Sun, 16 Nov 2025 14:17:32 +0000 (15:17 +0100)]
mt76: Enable NPU support for Airoha AN7581 SoC
Airoha AN7581 SoC supports a Network Processor (NPU) to offload WiFi
traffic. Add the required bits to enable the support of it in the MT76
driver. This will be enabled by default if we are compiling for the
Airoha AN7581 SoC.
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ improve commit title/description ] Link: https://github.com/openwrt/openwrt/pull/20826 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
Hauke Mehrtens [Thu, 6 Nov 2025 22:08:04 +0000 (23:08 +0100)]
build: Add support for linking with DT_RELR
This adds the -Wl,-z,pack-relative-relocs linking options.
This reduces the size of some binaries.
This is only supported on i386, x86_64, aarch64 and loongarch64 in
binutils. This feature is not support for MIPS.
musl libc supports it since version 1.2.4 .
glibc supports it since vesion 2.36.
binutils ld supports it since version 2.38 for x86 and since version
2.43 for LoongArch.
This reduces the size of the armsr default root file system from
5,262,198 bytes to 5,200,950 bytes by 61,248 bytes.
David Bauer [Wed, 12 Nov 2025 18:51:13 +0000 (19:51 +0100)]
mpc85xx: relocate AP3825i simpleImage loader
The initramfs images beginning 24.10 do not boot on the AP3825i. The
space available for decompression preceeding the compressed image is not
enough, crashing the system.
To make existing installation instructions continue to work, link the
loader at an address following the loadaddress of the U-Boot image.
David Senoner [Tue, 20 May 2025 15:07:19 +0000 (17:07 +0200)]
ramips: Add support for TP-Link Archer A5 v6 (EU)
According to the TP-Link websites the Archer C50 v6 EU is the same model
as the Archer A5 v6 EU. Installation method is the same as the C50 v6, as
they are basically the same hardware.
The commit is based on e9ac1b1.
Nick Hainke [Thu, 1 May 2025 14:30:39 +0000 (16:30 +0200)]
kernel/qoriq: Restore kernel files for v6.6
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.
For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
Tianling Shen [Fri, 14 Nov 2025 10:37:40 +0000 (18:37 +0800)]
rockchip: backport eMMC CQE support
Backport eMMC Command Queuing support for RK3576/RK3588.
As the RK3576 device-tree has been upstreamed with the 'supports-cqe;'
property set by default, the kernel already tried to use CQE, which
results in system hang during suspend. This fixes the issue.
Eric Fahlgren [Sat, 15 Nov 2025 16:32:00 +0000 (08:32 -0800)]
apk-tools: implement compression of on-device scripts.tar
Default behavior for apk was to create an uncompressed scripts.tar
file. Due to the structure of tar files, with fixed block
size and null padding, this file becomes very large on OpenWrt
installations where there are typically two scripts per package.
This could cause the raw tar file to easily grow to over 500KB,
whereas the compressed file is generally around 20-30KB.
When stored in the /rom partition of a squashfs device, the file
is compressed and this is not an issue. But, as soon as you add
or delete a package, the scripts.tar file is fully expanded into
the /overlay partition and can cause issues on small-flash devices.
This issue was addressed in an upstream commit by detecting
whether the scripts.tar file is compressed (its name must be
exactly 'scripts.tar.gz'), and then retaining that compression by
reading/writing the file using a compressed stream.
This commit applies a cherrypicked patch for the upstream commit, and
compresses the scripts.tar during construction of the device rootfs.
The values provides are correct if after the @ it would be the bus
number and then device number. But it's actually, device and then
function for pcie devices.
kernel: mtdsplit: rework and make use of -ENOENT error
Rework each affected mtdsplit driver to make use of -ENOENT error
instead of -ENODEV to handle new kernel that checks error from parser on
subpartitions.
The only acceptable error is -ENOENT that skip the parser. This follow
pattern used upstream and also by an mtdsplit parser, mtdsplit_bcm_wfi,
and also by a workaround currently implemented for mtdsplit_mstc_boot.
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.
For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.
For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
Lorenzo Bianconi [Fri, 24 Oct 2025 12:44:03 +0000 (14:44 +0200)]
airoha: backport kernel part of WiFi MT76 offload patch
Backport the kernel parf of the WiFi MT76 offload patch. This is needed
as we have a dedicated package that only have mt76 related changes.
Add missing include in airoha_offload.h in order to enable MT76 NPU
offloading (and fix compilation error)
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
[ improve commit title/description and use proper patch ] Link: https://github.com/openwrt/openwrt/pull/20807 Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.
For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
Kyle Hendry [Sat, 2 Aug 2025 21:52:28 +0000 (14:52 -0700)]
kernel/bcm47xx: Restore kernel files for v6.6
This is an automatically generated commit which aids following Kernel patch
history, as git will see the move and copy as a rename thus defeating the
purpose.
For the original discussion see:
https://lists.openwrt.org/pipermail/openwrt-devel/2023-October/041673.html
Shiji Yang [Sun, 26 Oct 2025 09:30:29 +0000 (17:30 +0800)]
ramips: disable build TP-Link EAP235-Wall
After investigating the EAP235-Wall u-boot GPL code, it was found that
the u-boot of this device directly loads the kernel from the SPI NOR
Flash direct access address. However, due to hardware limitation, MT7621
can only remap the first 4MiB Flash. Excluding some partitions before
the kernel, this device can only boot kernels smaller than 0x360000.
This means that unless you install a modified bootloader, the mainline
OpenWrt will no longer work on this model.
Closes: https://github.com/openwrt/openwrt/issues/20500 Signed-off-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/20509 Signed-off-by: Robert Marko <robimarko@gmail.com>
Shiji Yang [Thu, 23 Oct 2025 00:56:47 +0000 (08:56 +0800)]
ramips: fix LZMA decompression error for TP-Link EAP615-Wall
Relocating the kernel load address to avoid the memory overlap issue.
Fixes: https://github.com/openwrt/openwrt/issues/19403 Signed-off-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/20509 Signed-off-by: Robert Marko <robimarko@gmail.com>
Shiji Yang [Thu, 23 Oct 2025 01:56:16 +0000 (09:56 +0800)]
ramips: enable LZMA loader for ZIO FREEZIO
Fix the kernel LZMA decompression error issue.
Fixes: https://github.com/openwrt/openwrt/issues/11815 Signed-off-by: Shiji Yang <yangshiji66@outlook.com> Link: https://github.com/openwrt/openwrt/pull/20509 Signed-off-by: Robert Marko <robimarko@gmail.com>
Andrii Kuiukoff [Tue, 14 Oct 2025 12:05:37 +0000 (15:05 +0300)]
ramips: add support for EDUP EP-RT2960S
EDUP EP-RT2960S has the similar hardware design as the SIMAX1800T.
The main difference is the arrangement of the GPIO pins
and the location of the MAC address.
TFTP Installation(recommend)
------------
1. Set local tftp server IP "192.168.1.254" and NetMask "255.255.255.0".
2. Rename initramfs-kernel.bin to "factory.bin" and put it in the root
directory of the tftp server. tftpd64 is a good choice for Windows.
3. Remove all Ethernet cables and WiFi connections from the PC, except
for the one connected to the EDUP EP-RT2960S. Start the TFTP server, plug
in the power adapter and wait for the OpenWrt system to boot.
4. Backup "firmware" partition and rename it to "firmware.bin". We need
it to back to the stock firmware.
5. Use "fw_printenv" command to list envs. If "firmware_select=2" is
observed then set u-boot env variable via command:
`fw_setenv firmware_select 1`
6. Apply sysupgrade.bin in OpenWrt LuCI.
Web UI Installation
------------
1. Apply update by uploading initramfs-factory.bin to the web UI.
2. Use "fw_printenv" command to list envs. If "firmware_select=2" is
observed then set u-boot env variable via command:
`fw_setenv firmware_select 1`
3. Apply squashfs-sysupgrade.bin in OpenWrt LuCI.
Return to Stock Firmware
----------------------------
Restore the backup firmware partition in the installation step 4.
MAC addresses
-------------
+---------+-------------------+
| | MAC example |
+---------+-------------------+
| LABEL | 24:D5:1C:xx:xx:xx |
| LAN | 24:D5:1C:xx:xx:xx |
| WAN | 24:D5:1C:xx:xx:xx |
| WLAN2G | 24:D5:1C:xx:xx:xx |
| WLAN5G | 26:D5:1C:xx:xx:xx |
+---------+-------------------+
Tips:
-----------
User can use `TFTP Installation` method to recover a brick device.
The CLI tools hostapd_cli and wpa_cli are compiled with
`TARGET_LDFLAGS_C` rather than the standard `TARGET_LDFLAGS`.
This variable is empty, leading to global linker options not being
applied.
Set this variable equal to `TARGET_LDFLAGS` right after the package.mk
include to make sure global linker options are applied, but local options
such as linking to crypto libraries are not.