Zyxel GS1900-24HP v1 upgrade from old partition and pinout

Posting incase this helps anyone else. On my Zyxel GS1900-24HP going from v23 -> v25 firmware I hit the merge blocker

The device is supported, but this image is incompatible for sysupgrade based on the image version (1.0->2.0).
upgrade: Dual firmware partition merged due to size constraints. Upgrade requires a new factory install. Regular sysupgrade is not possible.

as expected due to;

However, I was unable to get the initramfs version to load by using luci -> flash firmware (untick keep settings, tick force). When doing this the sys light just pulsed constantly an the device was bricked.

When trying to attach RS232 to J5 to unbrick via TFTP it became apparent that the pinout in the commit https://git.openwrt.org/openwrt/openwrt/commit/?id=d60b3bf89010d750bb82c353d38086b40f3debf5 is incorrect.

The pinout I found operative is

Pin2: Tx (to your adapters RS232 Rx)

Pin3: Rx (From your adapters RS232 Tx)

Pin5: GND

edit to add: currently I was only able to have success by using version 24.10.0 initramfs via tftpboot, then use sysupgrade to 24.10.0 full version. I then sysupgraded to 24.10.6 and then sysupgraded to 25.12.4 and its now up and stable on 25.12.4 (I did try 24.10.6 initramfs but when using sysupgrade to 24.10.6 full version it OOM'ed to console, so this chain seems to be the only way I could get it to work)

@svanheule i came across this weird issue - it looks like the v25 initramfs do not work on this hardware. Here is the v24 boot log:

U-Boot Version: 2.0.0.59413 (Jul 08 2015 - 10:01:00)

CPU:   500MHz
DRAM:  64 MB
FLASH: 16 MB
Model: ZyXEL_GS1900_24HP
SN:    S152L49001199
MAC:   04:BF:6D:17:AD:48 - 04:BF:6D:17:AD:62

Press SPACE to abort boot script:  0 
RTL838x# rtk network on
Enable network
Force port28 link up 1G
Please wait for PHY init-time ...

RTL838x# setsys bootpartition 0
RTL838x# savesys
II: Erasing 4096 bytes from 00050000... 100%
II: Writting 4096 bytes to 00050000... 100%
RTL838x# tftpboot 0x81f00000 192.168.1.2:initram-24.bin
Using rtl8380#0 device
TFTP from server 192.168.1.2; our IP address is 192.168.1.1
Filename 'initram-24.bin'.
Load address: 0x81f00000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 ##########################################################
done
Bytes transferred = 6568634 (643aba hex)
RTL838x# bootm
   Version:   MIPS OpenWrt Linux-6.6.127
   Created:   2026-03-17   0:58:59 UTC
   Size:      6568570 Bytes = 6.3 MB
   Verifying Checksum ... OK
   Uncompressing Image ... OK

Starting ...

[    0.000000] Linux version 6.6.127 (builder@buildhost) (mips-openwrt-linux-musl-gcc (OpenWrt GCC 13.3.0 r29141-81be8a8869) 13.3.0, GNU ld (GNU Binutils) 2.42) #0 Tue Mar 17 00:58:59 2026
[    0.000000] RTL838X model is 83826800
[    0.000000] SoC Type: RTL8382
[    0.000000] printk: bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 00019070 (MIPS 4KEc)
[    0.000000] MIPS: machine is Zyxel GS1900-24HP v1
[    0.000000] earlycon: ns16550a0 at MMIO 0x18002000 (options '115200n8')
[    0.000000] printk: bootconsole [ns16550a0] enabled
[    0.000000] Initrd not found or empty - disabling

all fine. but then i move to the v25.x.x initramfs and i see the method of loading the kernel has changed to rt-loader but it just hangs at this point. The sys light just flashes constantly and I get the same brick+flashing sys light combo that I got when flashing the 25.12.4 initramfs via luci.

U-Boot Version: 2.0.0.59413 (Jul 08 2015 - 10:01:00)

CPU:   500MHz
DRAM:  64 MB
FLASH: 16 MB
Model: ZyXEL_GS1900_24HP
SN:    S152L49001199
MAC:   04:BF:6D:17:AD:48 - 04:BF:6D:17:AD:62

Press SPACE to abort boot script:  0 
RTL838x#                 rtk network on
Enable network
Force port28 link up 1G
Please wait for PHY init-time ...

RTL838x# setsys bootpartition 0
RTL838x# savesys
II: Erasing 4096 bytes from 00050000... 100%
II: Writting 4096 bytes to 00050000... 100%
RTL838x# tftpboot 0x81f00000 192.168.1.2:initram-25.bin
Using rtl8380#0 device
TFTP from server 192.168.1.2; our IP address is 192.168.1.1
Filename 'initram-25.bin'.
Load address: 0x81f00000
Loading: #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #################################################################
	 #####################################
done
Bytes transferred = 5305423 (50f44f hex)
RTL838x# bootm
   Version:   MIPS OpenWrt Linux-6.12.87
   Created:   2026-05-13  22:42:09 UTC
   Size:      5305359 Bytes = 5.1 MB
   Verifying Checksum ... OK
   Loading Image ... OK
OK

Starting ...


rt-loader
Running on RTL8382M (chip id 6275C) with 64MB
Relocate 5305360 bytes from 0x80100000 to 0x83aa0000
Extract image with 5289651 bytes from 0x83aa3d5c to 0x80100000 ...
Final kernel size is 21363328 bytes
Booting kernel from 0x80100000 ...


Then it just sits there as a brick at this point.

so for any followers - 25.12.4 resulted in broken POE, even with a fresh generated config. ubus showed "requesting power" as the state for everything. I note this change, which may or may not be related. I have not had time to investigate.

A downgrade (forced via sysupgrade) from 25.12.4 to 24.10.5 resulted in POE being restored with the same config files.

Starting at the dotted pin and counting counterclockwise, which is often done for DIP packages, this matches the commit message. But your numbers matche the wires in a flatcable with IDC, so it depends on the perspective :slight_smile:

The rt-loader is @plappermaul's work, but I haven't had any issues with it on my GS1900-8(A1). Maybe he can help out?

I'm confused. OP tells that rt-loader hangs but in the same post explains that POE is broken in 25.12. That assumes boot was successful. Additional clarification is needed.

Ahhhh! A case of "Pin-may-to pin-mah-to" im too engrained with 1-2 opposites not circular.

Thanks for clarity. Either way I hope my pic helps anyone in a similar place.

Sorry for any confusion..

The initrd image path (either web flash, tftp) using 25.x.x init results in a bricked switch as per the logs

The 24->25 upgrade path using initrd-> sysupgrade (to 24 then later 25) works but results in broken poe when leaving 24 and going to latest 25