v4.0.0-rc3 — issue #99 switch-core self-recovery
Pre-releasev4.0.0-rc3 — issue #99 switch-core self-recovery
Release candidate, not GA. Supersedes v4.0.0-rc2.
Headline — issue #99 switch-core self-recovery
The Ethernet driver (rtl8196e-eth v2.18) now detects a wedged switch core and resets it
at runtime instead of riding the soft-lockup to a watchdog reboot — restoring the deep
recovery the original Realtek SDK shipped and our from-scratch rewrite had dropped:
- Deep switch-core reset. When the cheap in-poll ring resync repeatedly fails to clear a
RUNOUT storm, a worker performs the vendorFullAndSemiReset(switch-core clock cycle +
full reset) and re-brings-up the datapath — recovering a live unit with no reboot. - TX-done hang watchdog. A 1-second check catches a TX path the switch stops draining (a
stall the RX detectors can't see) and triggers the same reset. - Clear-RUNOUT-on-progress. Transient runouts now self-clear, matching the stock receive
path.
You'll see it in the log if it engages, e.g. eth0: switch core reset done (#1). The rc2
watchdog post-mortem record (v6) is kept, so a recurrence is either healed visibly
or fully captured in /userdata/panic/history. No throughput regression (TCP RX ~94, TX
~69 Mbit/s).
Also in rc3 (rolls up the rc2 development cycle)
- Dual kernel × two boards — four images.
BOARD(lidl/sengled-e39-g8c) ×
KERNEL(6.18/7.1) selection; both kernel lines now carry identical drivers. - Bootloader V2.9 — closes the post-flash boot loop on a kernel flash and a 16 MiB
full-flash. - Sengled G4 NCP radio firmware validated (#130);
flash_efr32.shgains aBOARD=
selector + board-match guard. - Flash robustness — user-added files under
/userdatasurvive a userdata reflash. - Quiet boot, harmonized init-script output, and a portable per-release iperf3 bench.
See 3-Main-SoC-Realtek-RTL8196E/CHANGELOG.md for the full per-component detail.
Install
rc3 uses the per-board image layout, so this is a full reflash (not kernel-only). Pull
the branch and flash:
git fetch origin && git checkout v4.0.0-rc3
# Lidl board, 6.18 kernel (defaults):
./3-Main-SoC-Realtek-RTL8196E/flash_remote.sh -y kernel <gw-ip>
# (or a full install / other BOARD/KERNEL — see 32-Kernel/CLAUDE-less docs)
Reporting
If you hit a lockup anyway, please attach the boot-after line from
dmesg | grep "previous boot ended in panic" (or /userdata/panic/history) and any
switch core reset done / TX-done descriptor … stuck / RX runout not clearing lines
from dmesg.