Given the quite massive delta between 25.12.x and main for rtl838x/ rtl838x/ rtl93xx specifically, that would probably be a worthwhile test.
That's what I gathered from skimming the last pages of this thread. So I went ahead with today's snapshot, and after it scared me with a kernel trace when flashing ...
sysupgrade log
Tue Mar 17 01:10:16 UTC 2026 upgrade: Saving config files...
Tue Mar 17 01:10:21 UTC 2026 upgrade: Commencing upgrade. Closing all shell sessions.
Command Hangup
-ash: can't set tty process group: Not a tty
[1]+ Hangup sysupgrade openwrt-realtek-rtl838x-panasonic_m24eg-pn28240k-squashfs-sysupgrade.bin
root@OpenWrt:/tmp# Watchdog handover: fd=3
- watchdog -
Watchdog does not have CARDRESET support
Tue Mar 17 01:10:23 UTC 2026 upgrade: Sending TERM to remaining processes ...
Tue Mar 17 01:10:27 UTC 2026 upgrade: Sending KILL to remaining processes ...
[ 156.182461] stage2 (2828): drop_caches: 3
Tue Mar 17 01:10:34 UTC 2026 upgrade: Switching to ramdisk...
mount: mounting /dev/mt[ 163.735453] ------------[ cut here ]------------
d[ 163.797124] WARNING: CPU: 0 PID: 2828 at fs/super.c:695 0x802b42a8
b[ 163.879787] VFS: Busy inodes after unmount of jffs2 (jffs2)
l[ 163.879824] Modules linked in: nft_fib_inet nf_flow_table_inet nft_reject_ipv6 nft_reject_ipv4 nft_reject_inet nft_reject nft_redir nft_quota nft_numgen nft_nat nft_masq nft_log nft_limit nft_hash nft_flow_offload nft_fib_ipv6 nft_fib_ipv4 nft_fib nft_ct nft_chain_nat nf_tables nf_nat nf_flow_table nf_conntrack lzo nfnetlink nf_reject_ipv6 nf_reject_ipv4 nf_log_syslog nf_defrag_ipv6 nf_defrag_ipv4 lzo_rle lzo_decompress lzo_compress libcrc32c i2c_mux_pca954x crypto_acompress gpio_button_hotplug(O) crc32c_generic
o[ 164.554053] CPU: 0 PID: 2828 Comm: busybox Tainted: G O 6.6.127 #0
[ 164.654852] Stack : 00000000 80828cb4 00000000 77e693c8 00000000 00000000 00000000 00000000
[ 164.765027] 00000000 00000000 00000000 00000000 00000000 00000001 81b6fcd0 9508d2b0
[ 164.875208] 81b6fd68 00000000 00000000 81b6fc28 00000038 807cfda4 00000000 ffffffea
[ 164.985390] 00000186 81b6fbec 00000186 00000000 807ea03c 81b6fcb0 81b6fdd8 802b42a8
[ 165.095571] 00000009 77e693c8 00000000 7fa68cf0 808c9500 8045ed0c 00000000 80a90000
[ 165.205753] ...
[ 165.237860] Call Trace:
[ 165.237960] [<807cfda4>] 0x807cfda4
[ 165.316006] [<802b42a8>] 0x802b42a8
[ 165.361910] [<8045ed0c>] 0x8045ed0c
[ 165.407820] [<80105ca8>] 0x80105ca8
[ 165.453640] [<80105cb0>] 0x80105cb0
[ 165.499504] [<807a5f38>] 0x807a5f38
[ 165.545396] [<80127360>] 0x80127360
[ 165.591237] [<802b42a8>] 0x802b42a8
[ 165.637102] [<80127420>] 0x80127420
[ 165.683060] [<802b42a8>] 0x802b42a8
[ 165.728937] [<80134eb0>] 0x80134eb0
[ 165.774872] [<80494d4c>] 0x80494d4c
[ 165.820798] [<80361b30>] 0x80361b30
[ 165.866639] [<802d028c>] 0x802d028c
[ 165.912550] [<802b57c4>] 0x802b57c4
[ 165.958372] [<802dc920>] 0x802dc920
[ 166.004237] [<80146018>] 0x80146018
[ 166.050100] [<802bacf0>] 0x802bacf0
[ 166.095991] [<80105138>] 0x80105138
[ 166.141832] [<802bbec4>] 0x802bbec4
[ 166.187722] [<80137c2c>] 0x80137c2c
[ 166.233565] [<802bcc44>] 0x802bcc44
[ 166.279431] [<80101330>] 0x80101330
[ 166.325312]
c[ 166.345001] ---[ end trace 0000000000000000 ]---
k8 on /overlay failed: Resource busy
Tue Mar 17 01:10:44 UTC 2026 upgrade: Perf[ 166.603046] do_stage2 (2828): drop_caches: 3
orming system upgrade...
Unlocking firmware ...
Writing from <stdin> to firmware ...
Appending jffs2 data from /tmp/sysupgrade.tgz to firmware..
.
Writing from <stdin> to firmware ...
Tue Mar 17 01:11:28 UTC 2026 upgrade: Upgrade completed
Tue Mar 17 01:11:29 UTC 2026 upgrad[ 212.002208] reboot: Restarting system
... it is working fine, and even booting slightly faster than 24.10. I'll probably stick with the snapshot now, given that this will never use anything that doesn't come with the base system.
LGS328MPC 89€ - 28 ports 1G/10G RTL930x - POE (yet supported)
I've been running OpenWrt on the LGS328MPC since yesterday using the official snapshot build. Overall, the switch is working.
The only issue I've found so far is that two devices get a link, but no traffic passes. I still need to investigate whether this is an OpenWrt bug or something else.
Additional note: for flashing, I followed the instructions linked below. Unfortunately, the switch would always hang when loading the image with the documented tftpboot command. What worked for me instead was:
tftpboot 0x81000000 <TFTP IP>:openwrt-realtek-rtl930x_nand-linksys_lgs328mpc-v2-initramfs-kernel.bin
After that, I was able to continue the installation process successfully.
Reference:
https://github.com/openwrt/openwrt/commit/f88135b7cd13f860df2be2ccdcecc6c6c7544e5e
Got a GS2210-24 and GS2210-8HP looking for DTS. They are basically identical to the GS1920-24HP v1, the first has no PoE, the second only the first 8 ports and the comboports lan25/lan26.
I've already booted the image, but how should this be modeled in DTS?
Just include the rtl8392_zyxel_gs1920-24hp-v1.dts and disable PoE for the GS2210-24?
Just include the rtl8392_zyxel_gs1920-24hp-v1.dts, but then turn off the 16 PoE ports and the last two combo ports?
Or copy stuff around and build a hierarchy of include? Or split it into some modular set of DTSs?
Hi
Does POE already work in the snapshot @LGS328MPC 89€ - 28 ports 1G/10G RTL930x - POE
Hi,
I haven’t tested PoE yet due to lack of devices and time (I’m still in the initial setup phase). However, I’ve already received some basic PoE splitters that I plan to use with ESP32 devices. I should be able to test them on the switch over the next few days and report back.
The middle 8 ports (lan9–lan16) show an active link (both physical link up and correct negotiation speed), but there is no observable traffic passing through them.
The other 16 1G ports are working fine. I will test the SFP+ ports as soon as I get a DAC cable.
PoE doesn't seem to be working yet.
LACP bonding. I have experimented with this and in case anyone else is hunting around this is working between two OpenWRT realtek devices. This may be obvious if you know the backend but I didn't realise that I would need to remove the ports from the bridge device before they would work - otherwise I would see bond-0: (slave lan7): Error: Device is in use and cannot be enslaved. I remember similar settings from Cisco devices so guessed when adding ports to VLANs that would be the case.
Hope this is useful, planning to use this for aggregating a few 2.5Gb onto a 10Gb.
config device 'switch'
option name 'switch'
option type 'bridge'
option macaddr 'A:B:C:D:E:F'
list ports 'lan1'
list ports 'lan2'
list ports 'lan3'
list ports 'lan4'
list ports 'lan5'
list ports 'lan6'
# list ports 'lan7'
# list ports 'lan8'
list ports 'bond-0'
config bridge-vlan 'lan_vlan'
option device 'switch'
option vlan '1'
list ports 'lan1:u*'
list ports 'lan2:u*'
list ports 'lan3:u*'
list ports 'lan4:u*'
list ports 'lan5:u*'
list ports 'lan6:u*'
# list ports 'lan7:u*'
# list ports 'lan8:u*'
list ports 'bond-0:u*'
config device
option name 'switch.1'
option macaddr 'A:B:C:D:E:F'
config interface '0'
option proto 'bonding'
option bonding_policy '802.3ad'
list slaves 'lan7'
list slaves 'lan8'
option xmit_hash_policy 'layer3+4'
option ad_select 'bandwidth'
option lacp_rate 'fast' # LACPDUs
option monitor_interval '100' #miimon
View the results with cat /proc/net/bonding/bond-0
Is that on 25.12 with 6.12, or on snapshot with 6.18?
snapshot on 6.18 here.
Can you add vlans ontop of bond0?
Does this even work correctly like it should through switch asic or does it go through cpu -between bond0 and other lan ports, because those bond0 lan ports are not in the same bridge as all other lan ports?
also some hints in https://github.com/openwrt/openwrt/pull/21740
maybe some tipps can go into the switch image generation and some into a how-to-switch guide? (or busybox contributions)
like:
Just because I wasted a lot of time in this problem: Before testing this, make sure that you select ip-full as package. The busybox implementation always converts:
ip link add dev bond0 type bond mode balance-xor miimon 100 xmit_hash_policy layer2+3into round-robin. And of course, this cannot be offloaded.
or
bond0 and it's slaves are not required to be "up" before adding to the bridge.
Just that the bond0 and it's slaves are configured correctly. And then bond0 can be configured to be a bridge slave. In the end all bridge slaves, bond slaves, bond and bridge can be set "up".
oh yeah, I found that hashing layer2+3 didn't work but figured that layer3+4 would always be better. My bond would come up as round-robin when I changed settings, then another restart of the network would bring it up as LACP again.
Where is best to document this? The wiki has lots of comments on individual switch hardware pages but is there a more central place?
Yeah, I have this as tagged and that bond is used to access the management SSH so I know it's working on .1 - if .1 is a special case I have other VLANs in use and can try testing a few clients over the bond.
Just gave this a home. https://openwrt.org/docs/guide-user/network/bonding
Thanks. Having a place to share knowledge is a good starting point.
I think starting with a "terminology / glossary" kind of section would help newcomers to the topic. Explaining the terms "trunk", "bond", "team", "LACP", etc.
WDYT ?
EDIT: I remember having read a post with some of those terms explained recently, but now I can't find it...
It's helpful also to spell out the acronym (LACP - Link Aggregation Conrol Protocol).
Yes, but I think that acroym is missing a "t". ![]()
Thanks, I've edited the page and had a go at explaining the settings as far as I know them. I'm not sure about every permutation, but I think we should steer people towards 802.3ad bonding with more aggressive failover settings for the best experience. I favour the faster LACP PDU rate also, 30s failover is not a pleasant user experience.