Zyxel NSA 325 v2 - *** ERROR: `serverip' not set - Cannot autoload with TFTPGET
August 19, 2023 04:30PM
Hi everyone, first of all THANKS for your work ! I'm a owner of NSA 325 v2 (made by zyxel) and I'd really like to install on it a new OS (Debian on this case).
I'm reading many post on the forum but unfortunately I need your help to understand my error.

Loading the u-boot image of this thread: https://forum.doozan.com/read.php?3,135222 using UART device I have an issue (see object) for which Debian OS is not started.

I've prepared an USB disk within inside Debian : Debian-5.13.6-kirkwood-tld-1-rootfs-bodhi.tar.bz2 following the guide (ext3 partition; user: root; ... )

I'm not able to understand once that kwboot should start OS I receive the following error:
97 % [......................................................................]
 99 % [....................................]
[Type Ctrl-\ + c to quit]

U-Boot 2023.04-tld-1 (Jun 24 2023 - 17:50:21 -0700)
ZyXEL NSA325 2-Bay Power Media Server

SoC:   Kirkwood 88F6282_A1
Model: ZyXEL NSA325
DRAM:  512 MiB
Core:  19 devices, 15 uclasses, devicetree: separate
NAND:  128 MiB
Loading Environment from NAND... *** Warning - bad CRC, using default environment

Resetting console stdin/stdout/stderr to serial...
In:    serial
Out:   serial
Err:   serial
pcie0.0: Link up
Warning: ethernet-controller@72000 (eth0) using random MAC address - 8a:83:ba:0f:25:5a
eth0: ethernet-controller@72000
Hit any key to stop autoboot:  0 
starting USB...
Bus ehci@50000: USB EHCI 1.00
Bus xhci_pci: Register 4000820 NbrPorts 4
Starting the controller
scanning bus ehci@50000 for devices... 3 USB Device(s) found
scanning bus xhci_pci for devices... 1 USB Device(s) found
       scanning usb for storage devices... 1 Storage Device(s) found

Device 0: Vendor: Verbatim Rev: PMAP Prod: STORE N GO      
            Type: Removable Hard Disk
            Capacity: 29584.0 MB = 28.8 GB (60588032 x 512)
... is now current device
Scanning usb 0:1...

Device 0: unknown device
ethernet-controller@72000 Waiting for PHY auto negotiation to complete........ done
BOOTP broadcast 1
BOOTP broadcast 2
BOOTP broadcast 3
BOOTP broadcast 4
DHCP client bound to address (2926 ms)
*** ERROR: `serverip' not set
Cannot autoload with TFTPGET

I'm using: kwboot downloaded from this thread: https://forum.doozan.com/read.php?3,7852,7852 (extracting kwboot for tar.gz archive).
I'm loading u-boot image: uboot.2023.04-tld-1.nsa325.kwb (suggested for this NAS).
I did the following test, loadgin uboot image :
  • with HD installed on the NAS;
  • without HD installed on the NAS;
  • with USB installed on front/rear USB port;
  • with ethernet cable installed;
  • with out ethernet cable installed.

Attached the printenv file within the environment variable.

Thanks for your help.

Edited 1 time(s). Last edit at 08/19/2023 04:31PM by superdm83.
open | download - kwboot (6.1 KB)
open | download - printenv (2.8 KB)
Re: Zyxel NSA 325 v2 - *** ERROR: `serverip' not set - Cannot autoload with TFTPGET
August 19, 2023 04:57PM

If you are not installing the new u-boot and its default envs image, but trying to boot Debian from kwboot first, then there are 2 methods:

1. kwboot with the 2017.07 image from the release thread:


(This older u-boot version has the correct internal envs)


2. kwboot with the uboot.2023.04-tld-1.nsa325.kwb using the instruction in section C.2.2 in the installation instruction.


C.2.2 Using boot.scr to recover from damaged or corrupted envs NAND block

Included in the tarball uboot.2023.04-tld-1.nsa325.bodhi.tar is the script file uboot.2023.04-tld-1.nsa325.boot.scr. This is a Distro-Boot-compliant boot script. It can be used to recover from a damaged/corrupted envs NAND block, or if the envs NAND block has never been flashed (same as corrupted).

So for whatever reason, if in serial console, U-Boot reported the CRC error while loading the envs, using the boot.scr will provide a minimalist booting envs and enable booting into Debian. And then the default envs image can be flashed.

- Mount the USB rootfs on another Linux box. Assuming it is mounted at /media/sdb1.

cd /media/sdb1/boot
cp -a uboot.2023.04-tld-1.nsa325.boot.scr boot.scr

- Unmount and then bring it back to the NSA325. Power up and let it boot automatically. The boot.scr should come into play, and allow booting to Debian.

(This newer u-boot version uses a Distro boot script when you have not flash the default u-boot env image).


Either of the 2 approaches above will allow booting to Debian on USB rootfs.

Forum Wiki
bodhi's corner (buy bodhi a beer)
Thanks Bodhi, following the procedure on point 1 I have been able to start Debian 11 from USB key.

After this issue I had also the kernel panic issue reported previously on this thread: https://forum.doozan.com/read.php?3,135579,135581#msg-135581 and thanks to this procedure I have been able to solve:

(from your post)
Reverse uImage to the original.

cd /media/sdb1/boot
cp -a uImage uImage.with_nsa310_dtb
cp -a uImage.orig uImage

It's not clear to me why should be reverse the uImage to the original (it is in contrast with point 4 of the installation procedure (here: https://forum.doozan.com/read.php?2,12096) ? -NOT SURE, I'm trying to understand )
open | download - first start (33.6 KB)
Re: Zyxel NSA 325 v2 - *** ERROR: `serverip' not set - Cannot autoload with TFTPGET
August 20, 2023 11:25AM

> It's not clear to me why should be reverse the
> uImage to the original (it is in contrast with
> point 4 of the installation procedure (here:
> https://forum.doozan.com/read.php?2,12096) ? -NOT
> SURE, I'm trying to understand )

That was because initially, you had created the rootfs to boot with stock u-boot.


4. (Stock u-boot only) Create uImage with embedded DTB for booting with older u-boots (2012 or earlier). Skip this step if you have installed the latest U-Boot for Kirkwood (or are installing this u-boot at the same time, or running kwboot with latest u-boot image).

Now you have boot the box (using kwboot) with new u-boot version 2017.07 (uboot.2017.07-tld-1.nsa325.mtd0.kwb).

With 2017.07 u-boot, the NSA325 DTB file is loaded separately. So the uImage must be the original, which does not have the DTB file embedded in it. If the DTB is loaded and also embedded, it will cause a conflict.

Stock u-boot does not have the capability to load DTB separately (it was too old), so we must append it to uImage. This uImage is recognized by the kernel as a combo zImage+DTB. So the kernel behavior is to load the DTB directly from the uImage.

Forum Wiki
bodhi's corner (buy bodhi a beer)

Edited 1 time(s). Last edit at 08/20/2023 11:28AM by bodhi.

Your Email:


Spam prevention:
Please, enter the code that you see below in the input field. This is for blocking bots that try to post this form automatically. If the code is hard to read, then just try to guess it right. If you enter the wrong code, a new image is created and you get another chance to enter it right.