NicGiga S100-0800S-M support landed in OpenWrt main on 2026-06-17
(PR #23579) and is in snapshot builds now. Quick landing page for anyone with
this switch.
Specs
- SoC: Realtek RTL9303 · RAM: 512 MiB DDR3 · Flash: 32 MiB SPI-NOR
- Ports: 8× 10G SFP+ (SerDes 2–9)
- Console: front-panel RJ45, 115200 8N1, Cisco-style pinout
- Target/profile:
realtek/rtl930x→nicgiga_s100-0800s-m
Close cousin of the TP-Link TL-ST1008F v2 (DTS derived from it), vendor U-Boot
board model RTL9303_8XGE.
Note: SFP presence with no MOD_DEF0
This board routes no software-readable MOD_ABS GPIO for the cages, so presence —
including hot-insert/remove — is detected by polling the SFP EEPROM over I2C.
That needed a generic kernel change, now upstream as 8ac44d24c3a1
(net-next, Reviewed/Tested-by Maxime Chevallier) and backported to OpenWrt in
PR #23836. Hot-plug works on current snapshots.
Flashing
32 MiB NOR. Attach a serial console (front RJ45, 115200 8N1) before
starting. RAM-boot the initramfs as a non-destructive trial, back up the OEM
firmware, validate, then sysupgrade.
Placeholders — substitute your own:
<TFTP_SERVER>— IP of your TFTP server<DEVICE_IP>— an unused IP on the same subnet for the switch during flashing<BACKUP_HOST>— where you copy the OEM backup off the device<LOAD_ADDR>— the RAM load address your U-Boot uses for TFTP (see note)<MGMT_IP>/<GATEWAY>/<DNS>— your post-flash management settings
1. Back up the OEM firmware first (flashback safety)
RAM-boot the OpenWrt initramfs (step 2 — writes nothing to flash), then from the
OpenWrt shell dump each MTD partition and copy it off:
cat /proc/mtd # confirm partition numbering first
for i in $(seq 0 5); do dd if=/dev/mtd$i of=/tmp/oem-mtd$i.bin; done
scp /tmp/oem-mtd*.bin user@<BACKUP_HOST>:/path/to/backups/
Keep the firmware partition (vendor OS) and u-boot especially — together they
let you restore stock later.
2. RAM-boot the initramfs over TFTP
Put openwrt-realtek-rtl930x-nicgiga_s100-0800s-m-initramfs-kernel.bin on your
TFTP server. Interrupt U-Boot on the console and load it into RAM:
setenv ipaddr <DEVICE_IP>
setenv serverip <TFTP_SERVER>
tftpboot <LOAD_ADDR> openwrt-realtek-rtl930x-nicgiga_s100-0800s-m-initramfs-kernel.bin
bootm <LOAD_ADDR>
<LOAD_ADDR>is a RAM address, not an IP — use the one your U-Boot uses for
TFTP loads (e.g.0x84f00000on Realtek rtl930x builds; check your boot log /
printenvif unsure). Env-var names may also vary between U-Boot builds.
Verify ports link, SFP modules detect, hot-plug works, MACs and LEDs are correct,
and dmesg shows no EIO spam on empty cages.
3. sysupgrade to flash permanently
cd /tmp
sysupgrade -n openwrt-realtek-rtl930x-nicgiga_s100-0800s-m-squashfs-sysupgrade.bin
The device reboots into OpenWrt on NOR.
4. First access after flashing
Default OpenWrt management is 192.168.1.1 (no password on first boot). Two
ways in:
-
Over the network: set your computer to the
192.168.1.0/24subnet, then
SSH (ssh root@192.168.1.1) or use LuCI if installed. -
Over the serial console (handy if you're remote or don't want to renumber
your machine): you're already on it from flashing — log in asrootand set
the switch to an address on your existing network directly:uci set network.lan.ipaddr='<MGMT_IP>' uci set network.lan.netmask='255.255.255.0' uci set network.lan.gateway='<GATEWAY>' uci set network.lan.dns='<DNS>' uci commit network service network restart
Either way, set a root password (passwd) and configure your VLANs from there —
the -n flash starts from defaults, so nothing from the initramfs trial carries
over.
Status
Snapshot-only (no stable release yet); tested on my unit. Reports from anyone
else with this switch are welcome. Thanks @jonasjelonek for the review and the
TL-ST1008F v2 work this was modeled on.
Wiki / ToH: https://openwrt.org/toh/nicgiga/s100-0800s-m