NETGEAR GS108T v3

The NETGEAR GS108T v3 is a Realtek based 8 port Gigabit L2 switch with 802.3af PoE PD (power input) on port 1 (yellow label underneath).

|

The GS108T v1 and v2 are unsupported; they apparently run eCos and don't have enough flash or RAM (v1 has 4 MiB flash and 16 MiB RAM) to run a modern OpenWrt.

Like other Realtek RLT383x devices, the GS108T v3 has a dual partition layout. You can select the active firmware image from within the OEM web UI, or set it through u-boot (serial needed). OpenWrt should be installed to the first partition (here called firmware - identified as mtd5).

NETGEAR GS108T v3 flash Layout
Layer0 raw NOR flash memory chip (Macronix MX25L25635E spi: mx25l25635e) 32768 KiB
Layer1 mtd0 u-boot 896 KiB mtd1 bdinfo 64 KiB mtd2 sysinfo 64 KiB mtd3 jffs2_cfg 1024 KiB mtd4 jfss2_log 1024 KiB mtd5 firmware 14848 KiB mtd9 runtime2 14848 KiB
Layer2 mtd6 kernel 1728 KiB mtd7 rootfs 13120 KiB
mountpoint /
filesystem OverlayFS
Layer3 mtd8 rootfs_data 10112 KiB
Size in KiB 896 KiB 64 KiB 64 KiB 1024 KiB 1024 KiB 1728 KiB 3008 KiB 10112 KiB 14848 KiB
Name loader bdinfo sysinfo jffs2_cfg jffs2_log kernel rootfs_data runtime2
mountpoint none none none none none none /rom /overlay none
filesystem none none none none none none SquashFS JFFS2 none
The switch will prompt you to create a Netgear cloud account to manage the device and offer you 'limited access' to the device until you do so. According to the Netgear knowledge base, however, this 'limited access mode' should still allow you to update the firmware.

There are two ways to work around this:

  • Block access to 8.8.8.8 from the device in your router's firewall.
  • Connect the switch to a computer without internet access.

This method bricked my GS108Tv3. Be prepared to open it up and solder a pin header for serial console. The holes are filled with solder, so a having desoldering tools is also highly recommended!

The OpenWrt ramdisk image can be flashed directly from the Netgear web UI. Netgear designates both firmware partitons with Image1 and Image2. OpenWrt commit message talks about Image0 - this is the first firmware partition, ie Image1 in 'Netgear speak'. Instructions below use the Netgear naming since that's what their web UI shows. You want to flash to the first partition to benefit from OpenWrt's sysupgrade capabilities.

The Netgear UI is a bit cumbersome, so follow the instructions carefully and double check everything.

  • By default, the switch will get a DHCP IP. If it doesn't find a DHCP server to talk to, it will autoconfigure itself to 192.168.0.239.
  • Log in to the web interface and browse to Maintenance > File Management > Dual Image > Dual Image Status to verify you are indeed booted into Image1.
  • Once you confirmed you booted to Image1, browse to Maintenance > Update > HTTP Firmware/File Update.
  • Pick 'Software' as File Type and make sure Image Name is set to 'Image1'.
  • Click on 'Browse' to select and upload the ramdisk image, then click 'Apply.'
  • The web page should refresh once the transfer is completed, and the 'Browse' button should be gone or greyed out.
  • Go to Maintenance > Reset Device Reboot to reboot the device.
  • Once OpenWrt has booted, hit Enter to activate the console and make sure you have a functional network connection to your computer. At this point, you can scp over the sysupgrade image to /tmp on the switch and just flash that: sysupgrade /tmp/openwrt-realtek-generic-netgear_gs108t-v3-squashfs-sysupgrade.bin.
OpenWrt configures the switch by default with a management VLAN ID 100 on the LAN, so be sure to set up your client with VLAN 100 to be able to connect to the switch. If you would like a 'clean' /etc/config/network without VLANs (replace macaddr values by your own!), you can start with the configuration below.
[..]
 
config device 'switch'
	option name 'switch'
	option type 'bridge'
	option macaddr 'xx:xx:xx:xx:xx:xx'
 
config bridge-vlan 'lan_vlan'
	option device 'switch'
	option vlan '1'
	option ports 'lan1 lan2 lan3 lan4 lan5 lan6 lan7 lan8'
 
config interface 'lan'
	option ifname 'switch.1'
	option proto 'static'
	option ipaddr '192.168.1.2/24'
	option ip6assign '60'
 
config device 'lan_switch_1_dev'
	option name 'switch.1'
	option macaddr 'xx:xx:xx:xx:xx:xx'
 
[...]

Specific values needed for tftp

Bootloader tftp server IPv4 address 192.168.1.1
Bootloader MAC address (special) N/A
Firmware tftp image Ramdisk image from latest OpenWrt release (NOTE: Name must contain “initramfs”)
TFTP transfer window FILL-IN seconds
TFTP window start approximately FILL-IN seconds after power on
TFTP client required IP address 192.168.1.111

Instructions

The instructions below presuppose a functional serial connection and TFTP server. See the links above if needed.

  • Power up the switch, and interrupt the bootloader by hitting the Escape key when the `Hit Esc key to stop autoboot` prompt displays.
  • OpenWrt can only boot off the first partition (this is hardcoded in the DTS). To make sure we are manipulating the first partition, issue the following commands: setsys bootpartition 0 && savesys.
  • Activate the network functionality by typing rtk network on and hitting Enter.
  • Transfer the OpenWrt RAM disk onto the router: tftpboot 0x8f000000 192.168.1.111:openwrt-realtek-generic-netgear_gs108t-v3-initramfs-kernel.bin
  • Boot the image with the bootm command.
  • Once OpenWrt has booted, hit Enter to activate the console and make sure you have a functional network connection to your computer. At this point, you can scp over the sysupgrade image to /tmp on the switch and just flash that: sysupgrade /tmp/openwrt-realtek-generic-netgear_gs108t-v3-squashfs-sysupgrade.bin.

Check the management VLAN ID 100 warning in the section above if you cannot (re)connect to OpenWrt after flashing and rebooting.

The GS108T v3 supports OpenWrt's generic sysupgrade framework. As such, you can just syupgrade through the OpenWrt web UI or on the command line.

Do make sure to verify checksums prior to flashing, whatever method you use.

Basic configuration After flashing, proceed with this.
Set up your Internet connection, configure wireless, configure USB port, etc.

FIXME Please fill in real values for this device, then remove the EXAMPLEs

The default network configuration is:

Interface Name Description Default configuration
br-lan EXAMPLE LAN & WiFi EXAMPLE 192.168.1.1/24
vlan0 (eth0.0) EXAMPLE LAN ports (1 to 4) EXAMPLE None
vlan1 (eth0.1) EXAMPLE WAN port EXAMPLE DHCP
wl0 EXAMPLE WiFi EXAMPLE Disabled

FIXME Please fill in real values for this device, then remove the EXAMPLEs

Numbers 0-3 are Ports 1-4 as labeled on the unit, number 4 is the Internet (WAN) on the unit, 5 is the internal connection to the router itself. Don't be fooled: Port 1 on the unit is number 3 when configuring VLANs. vlan0 = eth0.0, vlan1 = eth0.1 and so on.

Port Switch port
Internet (WAN) EXAMPLE 4
LAN 1 EXAMPLE 3
LAN 2 EXAMPLE 2
LAN 3 EXAMPLE 1
LAN 4 EXAMPLE 0

Buttons are listed for reference only. Reset buttons usually have predefined behaviour (OpenWrt failsafe).

The NETGEAR GS108T v3 sports a single button: a receded reset button.

BUTTON Event
Reset reset

See Attach functions to a push button on how use and configure the hardware button(s).

General
Brand NETGEAR
Model GS108T
Versions v3
Device Type Switch
Availability Available 2021
Comments - general Ethernet LEDs do not work on OpenWrt
OpenWrt Support
Supported Since Commit https://git.openwrt.org/?p=openwrt/openwrt.git;a=commit;h=8cbd6f51174995c639dfb14faed46b4ba33542b8
Supported Since Release
Supported Current Release snapshot
Unsupported
Hardware
Bootloader U-Boot
Target realtek
System-On-Chip Realtek RTL8380M
CPU MHz 500
Flash MB 32
RAM MB 128
Network
Ethernet 100M ports -
Ethernet Gbit ports 8
Switch Realtek RTL8380M
Modem -
VLAN Yes
Comments - network ports
Wireless
WLAN 2.4GHz -
WLAN 5.0GHz -
WLAN Hardware -
Detachable Antennas -
Comments - WLAN
Interfaces
USB ports -
SATA ports -
Serial Yes
JTAG ¿
Comments - USB & SATA ports
Misc
LED count ¿
Button count ¿
Power supply 12 VDC, 1.0 A, PoE 802.3af
Links
Forum Topic URL
WikiDevi URL https://wikidevi.wi-cat.ru/Netgear_GS108Tv3
OEM device homepage URL https://www.netgear.com/business/wired/switches/smart-cloud/gs108tv3/
Firmware OEM Stock URL https://www.netgear.com/support/product/gs108tv3.aspx#Firmware%20Version%207.0.6.2
Firmware OpenWrt Install URL
Firmware OpenWrt Upgrade URL
Edit the underlying data View/Edit data

Front:
gs108t_v3_-_front.jpg

Back:
gs108t_v3_-_back.jpg

Bottom label:
gs108t_v3_-_bottom.jpg

Note: This will void your warranty!

The device can be opened easily by unscrewing the two tiny screws on the back side. You can then slide off the top cover (towards the back).

binary comment

See Serial below for a picture of the PCB.

The through holes are filled with lead-free solder which melts at 375 °C. They can also be drilled using a 0.9mm bit. With a steady hand, you can also connect by keeping male headers pushed to the filled holes (but for stability reasons this obviously isn't recommended.

See the red rectangle on the below photograph for the location of the unpopulated UART header.

GS108Tv3

Pin layout:

  • J1.1: VCC, 3.3V (square pad)
  • J1.2: TX
  • J1.3: RX
  • J1.4: GND
Serial connection parameters for NETGEAR GS108T v3 115200, 8N1

See serial port for general information about serial port, serial port cable, etc.

No JTAG header is present on the PCB.

None so far.

BOOT Loader Version 1.0.0.5 (2019-03-15 17:08:23 UTC)

Board: RTL838x CPU:500MHz LXB:200MHz MEM:300MHz CPU : 500 MHz RAM : 128 MB FLASH: 32 MB

Model: GS108Tv3 MAC : 9C:C9:EB:D8:FF:C8

Hit Esc key to stop autoboot: 0 ## Booting image from partition … 0 ## Booting kernel from Legacy Image at 81000000 …

 Version:      7.0.4.6
 Created:      2020-05-20  19:17:15 UTC
 Data Size:    9307901 Bytes = 8.9 MB
 Checksum ... OK
 Uncompressing ... OK

Starting kernel … <181>1 2020-01-01T00:00:08.260Z: %0.0.0.0-1 TRAPMGR-5-SYSTEM_COLDSTART sal_snmp.c(772): Cold startup ESC[HESC[JPress any key to continue


BOOT Loader Version 1.0.0.2 (2018-08-31 17:05:26 UTC) Board: RTL838x CPU:500MHz LXB:200MHz MEM:300MHz CPU : 500 MHz RAM : 128 MB FLASH: 32 MB Model: GS108Tv3 MAC : BC:A5:xx:xx:xx:xx Hit Esc key to stop autoboot: 0 ## Booting image from partition ... 0 ## Booting kernel from Legacy Image at 81000000 ... Version: MIPS OpenWrt Linux-5.4.99 Created: 2021-02-23 10:17:51 UTC Data Size: 4273286 Bytes = 4.1 MB Checksum ... OK Uncompressing ... OK Starting kernel ... [ 0.000000] Linux version 5.4.99 (builder@buildhost) (gcc version 8.4.0 (OpenWrt GCC 8.4.0 r15853-8f7a905ffb)) #0 Tue Feb 23 10:17:51 2021 [ 0.000000] RTL838X model is 83806800 [ 0.000000] SoC Type: RTL8380 [ 0.000000] Kernel command line: [ 0.000000] printk: bootconsole [early0] enabled [ 0.000000] CPU0 revision is: 00019070 (MIPS 4KEc) [ 0.000000] MIPS: machine is Netgear GS108T v3 [ 0.000000] Registering _machine_restart [ 0.000000] Initrd not found or empty - disabling initrd [ 0.000000] Using appended Device Tree. [ 0.000000] Primary instruction cache 16kB, VIPT, 4-way, linesize 16 bytes. [ 0.000000] Primary data cache 16kB, 2-way, VIPT, cache aliases, linesize 16 bytes [ 0.000000] Zone ranges: [ 0.000000] Normal [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] Movable zone start for each node [ 0.000000] Early memory node ranges [ 0.000000] node 0: [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x0000000007ffffff] [ 0.000000] On node 0 totalpages: 32768 [ 0.000000] Normal zone: 288 pages used for memmap [ 0.000000] Normal zone: 0 pages reserved [ 0.000000] Normal zone: 32768 pages, LIFO batch:7 [ 0.000000] pcpu-alloc: s0 r0 d32768 u32768 alloc=1*32768 [ 0.000000] pcpu-alloc: [0] 0 [ 0.000000] Built 1 zonelists, mobility grouping on. Total pages: 32480 [ 0.000000] Kernel command line: console=ttyS0,115200 [ 0.000000] Dentry cache hash table entries: 16384 (order: 4, 65536 bytes, linear) [ 0.000000] Inode-cache hash table entries: 8192 (order: 3, 32768 bytes, linear) [ 0.000000] mem auto-init: stack:off, heap alloc:off, heap free:off [ 0.000000] Memory: 114512K/131072K available (5055K kernel code, 165K rwdata, 628K rodata, 9184K init, 207K bss, 16560K reserved, 0K cma-reserved) [ 0.000000] SLUB: HWalign=32, Order=0-3, MinObjects=0, CPUs=1, Nodes=1 [ 0.000000] NR_IRQS: 32 [ 0.000000] random: get_random_bytes called from 0x805b89fc with crng_init=0 [ 0.000000] timer_probe: no matching timers found [ 0.000000] CPU frequency from device tree: 500MHz [ 0.000000] clocksource: MIPS: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041786 ns [ 0.000018] sched_clock: 32 bits at 250MHz, resolution 4ns, wraps every 8589934590ns [ 0.008687] Calibrating delay loop... 497.66 BogoMIPS (lpj=995328) [ 0.047549] pid_max: default: 32768 minimum: 301 [ 0.053121] Mount-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.061254] Mountpoint-cache hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.080774] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns [ 0.091593] futex hash table entries: 256 (order: -1, 3072 bytes, linear) [ 0.099368] pinctrl core: initialized pinctrl subsystem [ 0.108728] NET: Registered protocol family 16 [ 0.183592] workqueue: max_active 576 requested for napi_workq is out of range, clamping between 1 and 512 [ 0.205290] clocksource: Switched to clocksource MIPS [ 0.213895] NET: Registered protocol family 2 [ 0.220593] tcp_listen_portaddr_hash hash table entries: 512 (order: 0, 4096 bytes, linear) [ 0.229956] TCP established hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.238482] TCP bind hash table entries: 1024 (order: 0, 4096 bytes, linear) [ 0.246320] TCP: Hash tables configured (established 1024 bind 1024) [ 0.253890] UDP hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.261215] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes, linear) [ 0.269704] NET: Registered protocol family 1 [ 0.850367] workingset: timestamp_bits=14 max_order=15 bucket_order=1 [ 0.875024] squashfs: version 4.0 (2009/01/31) Phillip Lougher [ 0.881510] jffs2: version 2.2 (NAND) (SUMMARY) (ZLIB) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc. [ 0.944788] Block layer SCSI generic (bsg) driver version 0.4 loaded (major 252) [ 0.959485] pinctrl-single bb001000.pinmux: 32 pins, size 4 [ 0.966534] Probing RTL838X GPIOs [ 1.081087] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled [ 1.095023] printk: console [ttyS0] disabled [ 1.099896] b8002000.uart: ttyS0 at MMIO 0xb8002000 (irq = 31, base_baud = 12500000) is a 16550A [ 1.109673] printk: console [ttyS0] enabled [ 1.109673] printk: console [ttyS0] enabled [ 1.118988] printk: bootconsole [early0] disabled [ 1.118988] printk: bootconsole [early0] disabled [ 1.130982] b8002100.uart: ttyS1 at MMIO 0xb8002100 (irq = 30, base_baud = 12500000) is a 16550A [ 1.145352] random: fast init done [ 1.539773] brd: module loaded [ 1.544131] Initializing rtl838x_nor_driver [ 1.549008] SPI resource base is b8001200 [ 1.553590] Address mode is 4 bytes [ 1.557556] rtl838x_nor_init called [ 1.564217] rtl838x-nor b8001200.spi: mx25l25635e (32768 Kbytes) [ 1.571149] 7 fixed-partitions partitions found on MTD device rtl838x_nor [ 1.578827] Creating 7 MTD partitions on "rtl838x_nor": [ 1.584766] 0x000000000000-0x0000000e0000 : "loader" [ 1.592729] 0x0000000e0000-0x0000000f0000 : "bdinfo" [ 1.600762] 0x0000000f0000-0x000000100000 : "sysinfo" [ 1.608813] 0x000000100000-0x000000200000 : "jffs2_cfg" [ 1.617100] 0x000000200000-0x000000300000 : "jffs2_log" [ 1.625535] 0x000000300000-0x000001180000 : "firmware" [ 1.656206] 0x000001180000-0x000002000000 : "runtime2" [ 1.665651] libphy: Fixed MDIO Bus: probed [ 1.672527] Probing RTL838X eth device pdev: 87c75800, dev: 87c75810 [ 1.695537] Found SoC ID: 8380: RTL8380, family 8380 [ 1.701182] rtl8380_init_mac [ 1.704522] Using MAC 000000e04c000000 [ 1.708791] rtl838x_mdio_init called [ 1.713183] rtl838x_mdio_reset called [ 1.717398] libphy: rtl838x-eth-mdio: probed [ 1.780073] Realtek RTL8218B (internal) mdio-bus:08: Detected internal RTL8218B [ 1.788347] Firmware loaded. Size 1184, magic: 83808380 [ 2.586833] Realtek RTL8218B (internal) mdio-bus:08: ERROR: Port 8 not ready for patch. [ 2.595903] Realtek RTL8218B (internal): probe of mdio-bus:08 failed with error -1 [ 2.834152] In rtl838x_validate [ 2.837844] In rtl838x_validate [ 2.844562] NET: Registered protocol family 10 [ 2.862055] Segment Routing with IPv6 [ 2.866449] NET: Registered protocol family 17 [ 2.871675] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this. [ 2.886855] 8021q: 802.1Q VLAN Support v1.8 [ 3.189831] Realtek RTL8218B (internal) rtl838x slave mii-0:08: Detected internal RTL8218B [ 3.199163] Firmware loaded. Size 1184, magic: 83808380 [ 4.026833] Realtek RTL8218B (internal) rtl838x slave mii-0:08: ERROR: Port 8 not ready for patch. [ 4.036971] Realtek RTL8218B (internal): probe of rtl838x slave mii-0:08 failed with error -1 [ 4.403529] libphy: rtl838x slave mii: probed [ 4.439994] > 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff [ 4.448864] > 10000100 10000200 10000400 10000800 10001000 10002000 10004000 10008000 [ 4.457693] > 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff 1fffffff [ 4.466514] > 1fffffff 1fffffff 1fffffff 1fffffff 1000ff00 0 0 0 [ 4.475321] CPU_PORT> 1000ff00 [ 6.515941] rtl83xx-switch switch@bb000000 lan1 (uninitialized): PHY [mdio-bus:08] driver [Generic PHY] [ 6.529201] rtl83xx-switch switch@bb000000 lan2 (uninitialized): PHY [mdio-bus:09] driver [Realtek RTL8218B (internal)] [ 6.544027] rtl83xx-switch switch@bb000000 lan3 (uninitialized): PHY [mdio-bus:0a] driver [Realtek RTL8218B (internal)] [ 6.559372] rtl83xx-switch switch@bb000000 lan4 (uninitialized): PHY [mdio-bus:0b] driver [Realtek RTL8218B (internal)] [ 6.574724] rtl83xx-switch switch@bb000000 lan5 (uninitialized): PHY [mdio-bus:0c] driver [Realtek RTL8218B (internal)] [ 6.589558] rtl83xx-switch switch@bb000000 lan6 (uninitialized): PHY [mdio-bus:0d] driver [Realtek RTL8218B (internal)] [ 6.604381] rtl83xx-switch switch@bb000000 lan7 (uninitialized): PHY [mdio-bus:0e] driver [Realtek RTL8218B (internal)] [ 6.619724] rtl83xx-switch switch@bb000000 lan8 (uninitialized): PHY [mdio-bus:0f] driver [Realtek RTL8218B (internal)] [ 6.633832] rtl83xx-switch switch@bb000000: configuring for fixed/internal link mode [ 6.642892] DSA: tree 0 setup [ 6.646361] LINK state irq: 20 [ 6.649912] In rtl83xx_setup_qos [ 6.653599] Setting up RTL838X QoS [ 6.657474] RTL838X_PRI_SEL_TBL_CTRL(i): 00033112 [ 6.662797] Current Intprio2queue setting: 00000000 [ 6.668318] QM_PKT2CPU_INTPRI_MAP: 00fac688 [ 6.673079] rtl838x_dbgfs_init called [ 6.797504] Freeing unused kernel memory: 9184K [ 6.802662] This architecture does not have kernel memory protection. [ 6.809930] Run /init as init process [ 6.814397] rtl83xx-switch switch@bb000000: Link is Up - 1Gbps/Full - flow control off [ 8.269103] init: Console is alive [ 8.306077] kmodloader: loading kernel modules from /etc/modules-boot.d/* [ 8.318954] kmodloader: done loading kernel modules from /etc/modules-boot.d/* [ 8.337969] init: - preinit - [ 8.734186] random: jshn: uninitialized urandom read (4 bytes read) [ 8.859782] random: jshn: uninitialized urandom read (4 bytes read) mtd_get_mac_ascii: partition u-boot-env not found! [ 9.408368] random: jshn: uninitialized urandom read (4 bytes read) Press the [f] key and hit [enter] to enter failsafe mode Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level [ 13.930856] procd: - early - [ 16.182576] procd: - ubus - [ 16.204060] urandom_read: 2 callbacks suppressed [ 16.204075] random: ubusd: uninitialized urandom read (4 bytes read) [ 16.238690] random: ubusd: uninitialized urandom read (4 bytes read) [ 16.247076] random: ubusd: uninitialized urandom read (4 bytes read) [ 16.263322] procd: - init - Please press Enter to activate this console. [ 17.370845] kmodloader: loading kernel modules from /etc/modules.d/* [ 17.428820] Mirror/redirect action on [ 17.474878] u32 classifier [ 17.478042] input device check on [ 17.482210] Actions configured [ 17.597142] xt_time: kernel timezone is -0000 [ 17.605146] urngd: v1.0.2 started. [ 17.687136] kmodloader: done loading kernel modules from /etc/modules.d/* [ 17.831353] random: crng init done [ 17.835302] random: 2 urandom warning(s) missed due to ratelimiting


Space for additional notes, links to forum threads or other resources.

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies
  • Last modified: 2021/08/29 15:31
  • by 2a0a:b640:1:5b::a08d