This device has one USB2.0 port, plus ethernet, 2x wifi, ethernet, xPON
and VoIP.
Installation instructions: (Assuming root shell via SSH or serial)
1. Place OpenWrt TRX file on a USB stick formatted VFAT
2. Plug in the stick to the modem
3. Type: mtd write -f -e tclinux /mnt/usb2_sda1/<name of file>.trx tclinux
At this point, both OpenWrt and the vendor OS will be installed
because the device has space for two operating systems. Switch the OS
to boot to OpenWrt:
WARNING: While you can install with SSH alone, you need serial to use
OpenWrt on EcoNet devices because the Ethernet driver has not yet been
developed.
Rany Hany [Sun, 23 Nov 2025 23:21:29 +0000 (23:21 +0000)]
wifi-scripts: ucode: add missing config.auth_type assignment for psk2
This ends up breaking wifi-station and wifi-vlan as it depends on
config.auth_type being either psk or psk-sae. When set to psk2,
this would be unset causing that feature to not work.
See discussion in https://github.com/openwrt/openwrt/issues/20705#issuecomment-3568446006
Sven Eckelmann [Sun, 23 Nov 2025 16:31:35 +0000 (17:31 +0100)]
realtek: Fix alignment of parameters
The parameters must be aligned based on the last opened parenthesis
(+1). If this not a multiple of the tab size (8) then the rest
alignment must be done using spaces.
Sven Eckelmann [Sun, 23 Nov 2025 16:16:04 +0000 (17:16 +0100)]
realtek: Switch to kernel integer types
uint(8|16|32|64)_t and int(8|16|32|64)_t types should not be used in
kernel code. The shorter s(8|16|32|64) and u(8|16|32|64) or the
endianness specific versions (le*, be*) must be used instead.
Sven Eckelmann [Sun, 23 Nov 2025 16:03:03 +0000 (17:03 +0100)]
realtek: Use short name for "unsigned long int"
It is preferred in the Linux kernel to use the short type name
"unsigned long" instead of "unsigned long int". The same is true
for short and the signed version of the types.
Sven Eckelmann [Sun, 23 Nov 2025 16:01:34 +0000 (17:01 +0100)]
realtek: Keep return statements on new line
It is not allowed in the Linux kernel to have the condition and
the actual statement(s) on the same line. This is required to
make it easier to identify the body of an if/do/while/for/..
Sven Eckelmann [Sun, 23 Nov 2025 15:57:21 +0000 (16:57 +0100)]
realtek: Fix spaces around braces, ops and keywords
The Linux kernel coding style has strict rules when spaces must be
added around operations or after keywords. The whole list is to
complex to summarize it here but can be found at
https://www.kernel.org/doc/html/v6.17/process/coding-style.html
Sven Eckelmann [Sun, 23 Nov 2025 15:50:29 +0000 (16:50 +0100)]
realtek: Clean up global array definitions
Global array initialization must have the open brace on the first
line and the next lines must be intended by one level. The closing
brace must be one a separate line.
Sven Eckelmann [Sun, 23 Nov 2025 14:25:05 +0000 (15:25 +0100)]
realtek: pcs: Fix overflow in rtpcs_930x_sds_clock_wait
It can happen that the calculation `start + (HZ / 1000) * timeout`
overflows `unsigned long`. This must be handled correctly to avoid too long
waits. Luckily, the `time_before()` helper already does this.
Sven Eckelmann [Sun, 23 Nov 2025 14:17:52 +0000 (15:17 +0100)]
realtek: pcs: Reduce nesting during calibration
It is preferred in the kernel to have less nesting of scopes. More common
is to perform pre-condition checks (like error handlers) and then react to
them.
Sven Eckelmann [Sun, 23 Nov 2025 13:54:27 +0000 (14:54 +0100)]
realtek: pcs: Drop return on end of void functions
There is nothing to return from a void function. And it doesn't change the
execution flow. The return at the end of a void function is therefore just
a NOP.
Sven Eckelmann [Sun, 23 Nov 2025 13:44:11 +0000 (14:44 +0100)]
realtek: Avoid line continuations in quoted strings
It is preferred to have the whole quoted string on a single line to make it
easier to find these lines in the source code (while grep'ing). And since
these quotes are inside a string, they will also add unwanted whitespaces.
At the same time, add the missing newine at the end of the `pr_debug`
lines.
Sven Eckelmann [Sun, 23 Nov 2025 13:31:12 +0000 (14:31 +0100)]
realtek: mdio: Drop extern declaration for internal function
There is no external component using these functions and these functions
are local to the current translation unit. These functions can therefore be
declared static.
The currently unused *_field functions were kept because they might be used
in the future.
Sven Eckelmann [Sun, 23 Nov 2025 13:12:52 +0000 (14:12 +0100)]
realtek: Keep extern declaration in headers
The common declarations should not be spread around in different source
files but kept inside the header files. This is unfortunately currently not
the best place to store them because soc_info is actually from non-DSA
code. But it is at least better than having them in diffent source files.
Sven Eckelmann [Sun, 23 Nov 2025 12:23:52 +0000 (13:23 +0100)]
realtek: Fix block comment style
In net code, it is preferred to have block comments which
* either are one line: `/* ... */`
* multiple lines with:
- starting with the first comment line directly: `/* ...`
- each line is intended with the first asterisk: ` * ...`
- the last line is just the end of the comment: ` */`
Sven Eckelmann [Sun, 23 Nov 2025 11:49:24 +0000 (12:49 +0100)]
realtek: Remove extern from function declarations
In contrast to variables, functions don't need extern declarations. It is
also preferred in the kernel not to use extern in front of function
declarations.
The extern+static parts in clk-rtl83xx.c were skipped because they are a
little bit unexpected ("extern *_dram_set_rate" are never used, "static
_sram_set_rate" are used but should from the C code perspective always be
NULL). This is left for an interested reader with the correct test HW and
some interests to dig in the code from commit 4850bd887c3a ("realtek: add
RTL83XX clock driver") for the *_dram_set_rate -> *_sram_set_rate
relocation and how these SRAM function pointers are set in this translation
unit.
Sven Eckelmann [Sun, 23 Nov 2025 11:43:28 +0000 (12:43 +0100)]
realtek: Enclose complex macros in parentheses
The macros will be inserted as is by the pre-compiler into places which
uses them. This can cause weird effects because this can break the syntax
or the ordering of operations. Just adding parentheses can avoid a lot of
these unexpected effects.
(for even more complex, multi-expression macros, `do {...} while (0)` is
required).
Sven Eckelmann [Mon, 24 Nov 2025 07:54:30 +0000 (08:54 +0100)]
realtek: dsa: Build check size of drop counter names
The commit 1cfd45ae0bad ("realtek: Add debugfs support for RTL9300") caused
previously an out of bounds access on the array holding the names of drop
counters (and incorrect names in the output) fur RTL839x because of a
missing comma. To avoid such situation in the future, calculate the size of
the array during compilation. And to ensure that this count matches the
actual number of counters in HW, compare this number during compile time
with the expected value.
Suggested-by: Hauke Mehrtens <hauke@hauke-m.de> Signed-off-by: Sven Eckelmann <sven@narfation.org> Link: https://github.com/openwrt/openwrt/pull/20905 Signed-off-by: Robert Marko <robimarko@gmail.com>
Sven Eckelmann [Sun, 23 Nov 2025 14:42:20 +0000 (15:42 +0100)]
realtek: dsa: rtl839x: Fix incorrect drop counter names
The counter names "CFM" and "VLAN_IGR_FLTR" were not separated by a comma
in the `rtl839x_drop_cntr` array. As result, these two headers were merged
to a single header "CFMVLAN_IGR_FLTR" and everything after that was shifted
by one. The last name (for the 45th counter) was also not defined and was
therefore accessing data outside the array.
Fixes: 1cfd45ae0bad ("realtek: Add debugfs support for RTL9300") Signed-off-by: Sven Eckelmann <sven@narfation.org> Link: https://github.com/openwrt/openwrt/pull/20905 Signed-off-by: Robert Marko <robimarko@gmail.com>
Jan Hoffmann [Thu, 20 Nov 2025 17:24:44 +0000 (18:24 +0100)]
mediatek: filogic: add factory image for Asus TUF-AX4200
The initramfs.trx image can be flashed from the web interface of factory
firmware.
Unfortunately, the default boot command of the bootloader does not load
the ramdisk in the FIT image. This means that the image can only be
built when the option TARGET_ROOTFS_INITRAMFS_SEPARATE is disabled.
Tested with firmware 3.0.0.4.388_33965 (U-Boot 2022.10 / 2.0.0.5).
1. Download the OpenWrt initramfs image. Copy the image to a TFTP server
2. Connect the TFTP server to the EAX17. Conect to the serial console,
interrupt the autoboot process by pressing '0' when prompted.
3. Download & Boot the OpenWrt initramfs image.
$ tftpboot openwrt.bin
$ bootm
4. Wait for OpenWrt to boot. Transfer the sysupgrade image to the device
using scp and install using sysupgrade.
MAC table, same as stock firmware:
LAN: 80:3F:5D:xx:xx:x1 partition "hw" at 0x44e (ASCII)
WAN: 80:3F:5D:xx:xx:x2 partition "hw" at 0x460 (ASCII)
2G: 80:3F:5D:xx:xx:x3
5G: 80:3F:5D:xx:xx:x4
* Installation with OEM WebUI:
Note: Make sure PC is connected on LAN1 port. The OEM firmware has an unknown root password and settings are kept after upgrading firmware. Therefore, a customized Openwrt firmware is needed to remove the root password on login, by adding `passwd -d root` to /etc/init.d/bootcount. The WebUI does a filename check so the customized firmware is named accordingly.
1. Download modified firmware file `WAVLINK_WN536AX6-A_M36AX6_V250320-WO-437baca-modified.bin` from https://github.com/ses1er/firmware-misc/tree/main/wavlink/wl-wn536ax6a
2. Log into WebUI on default IP: http://192.168.20.1
3. Browse to More (top menu) -> System -> Firmware Upgrade.
4. Under `Local Upgrade` section, check the device to be upgraded and upload downloaded modified firmware. Click `UPLOAD FILE`, then `APPLY`
5. Wait about 2 minutes (ignore progress bar), and browse to http://192.168.20.1. You should see LUCI login page. Username is root and no password.
6. Browse to `System -> Backup/Flash Firmware`, click on `Flash Image`, click `Browse` and locate `openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin` file.
7. Uncheck `Keep settings and retain the current configuration` and click `Continue`.
8. Router will now be set to IP 192.168.1.1 which is the Openwrt default.
* Installation with UART:
Note: Having UART connected while cold booting the device will result in a kernel panic when initializing wifi. I've found this workaround:
1. Power off the device and ensure UART is not connected to PC.
2. Power up the device, when lights come on, plug in UART.
3. Warm boots and soft restarts will not cause kernel panic for the duration of device being powered on. Repeat steps for subsequent cold boots.
1. Configure TFTP server with IP 192.168.1.66. Copy `openwrt-mediatek-filogic-wavlink_wl-wn536ax6a-initramfs.itb` to TFTP root.
2. Interrupt boot by pressing 0.
3. Run the following in Uboot console: `setenv serverip 192.168.1.66; setenv ipaddr 192.168.1.1; tftpboot 0x46000000 openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-initramfs.itb; bootm`
4. Transfer `openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin` to device:
(`scp -O openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin root@192.168.1.1:/tmp/`)
5. Run the following on device: `sysupgrade -n /tmp/openwrt-mediatek-filogic-wavlink_wl-wn536ax6-a-squashfs-sysupgrade.bin`
Signed-off-by: Qing W. <ses1er@gmail.com> Tested-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com> Link: https://github.com/openwrt/openwrt/pull/20760 Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
busybox: backport hexdump fix for Big Endian systems
hexdump isn't working properly on some Big Endian systems, producing
incorrect output such as:
hexdump -vn 5 -e '"fd" 1/1 "%02x:" 2/2 "%x:"' /dev/urandom
fdff:542c0054:17920017:
Which should be:
fdff:542c:1792:
This breaks the default ULA prefix generation on some systems. See:
https://github.com/openwrt/openwrt/issues/19844
The issue has already been fixed upstream, so we can backport the fix:
https://git.busybox.net/busybox/commit/libbb/dump.c?id=f5c7cae55fc3e19d074198bc12152486067ea8c7
JIT support in pcre2 allows for extra performance for regex operations in
applications that support it. As outlined in
https://pcre.org/current/doc/html/pcre2jit.html#SEC2 64-bit ARM is
supported.
I tested this on an GL.Inet MT6000 which is an aarch64 device and to my
knowledge everything works as expected. The primary application I tested
this on was haproxy, which makes use pcre for several operations.
If there are no known downsides or known breakages I suggest to
default-enable this feature for aarch64.
Nick Hainke [Wed, 10 May 2023 01:53:34 +0000 (03:53 +0200)]
toolchain: gcc: add fanalyzer config option
Add gcc config option for fanalyzer. As a result of this option, a static
analysis of the program flow is conducted, allowing interprocedural paths
to be identified and warnings to be issued if problems are identified.
Changelog:
Notable Changes
- Several updates and fixes for systemd
- Add new permissions and policy capabilities
- Drop reiserfs support (it was removed in kernel 6.13)
Nick Hainke [Sat, 22 Nov 2025 07:11:34 +0000 (08:11 +0100)]
selinux-policy: update to 2.8.3
Changelog:
- b1d7050 README
- 13f78a8 nlbwmon fix
- 9a98b2b ratelimit and nlbwmon rules
- a193e4b adds nlbwmon skel
- b5672a0 README: adds nlbwmon to wish list
- 2058100 adds radius and uam unreserved port
- 026b712 ratelimit for busybox ip
- 7661081 adds ratelimit sysagent skel and update README
- 3bea826 luci and rpcserver apk related
- ba8607d all sys agents can use inherited ssh server pipes
- 24b9396 README: adds some more items to wish list
- da7a02c ttyxperm: adds TIOCSERGETLSR
- 2fce9ee Revert "file_contexts.subs_dist: order matters with libselinux 3.8"
- 9a13714 file_contexts.subs_dist: order matters with libselinux 3.8
- a148827 README update
- 9d9a1ff iproute2 ip: ip mptcp monitor
- cf7efdc envtools: setenv
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
package: drop creating spurious tmp directory in feed directory
In implementing APK support it seems a a leftover was never removed that
creates an unused tmp directory in the package feed directory.
Drop it as it's not used anywhere. What is actually needed is the
creation of the $$(PDIR_$(1)) directory for the feed package directory
in the bin/packages directory.
This was a side effect of using INSTALL_DIR on $$(PDIR_$(1))/tmp that
indirectly creates the $$(PDIR_$(1)) parent directory.
generic: 6.12: backport b53 patches from netdev-next
These patches have been accepted in netdev-next for linux v6.19.
2b3013ac0302 net: dsa: b53: add support for bcm63xx ARL entry format 300f78e8b6b7 net: dsa: b53: add support for 5389/5397/5398 ARL entry format a7e73339ad46 net: dsa: b53: move ARL entry functions into ops struct e0c476f325a8 net: dsa: b53: split reading search entry into their own functions 1716be6db04a net: dsa: b53: provide accessors for accessing ARL_SRCH_CTL bf6e9d2ae1db net: dsa: b53: move writing ARL entries into their own functions 4a291fe72267 net: dsa: b53: move reading ARL entries into their own function a6e4fd38bf2f net: dsa: b53: b53_arl_read{,25}(): use the entry for comparision
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.