The Zyxel NSA325 is a Kirkwood based NAS (aka Network Attached Storage) with two HDD bay using SATA.

We require a USB stick (FAT32 formatted, single partition) and a 3.3V USB to serial adapter. We will then copy the required files to the USB stick and command the device through a terminal (using serial) to load and flash our files to NAND.

Copy the u-boot.kwb and -factory.bin files to a FAT32 formatted USB stick with msdos partition table (single partition). Rename the -factory.bin to something simple like nsa325.bin.

Attention: the u-boot.kwb from 19.x.x release is bugged and won't allow access to any mass storage. Use the latest u-boot.kwb from the 18.x.x release instead: u-boot-nsa325

:!: Please note that to write to NAND you have to erase the NAND first, which means all data on the NAND will be deleted! Meaning stock firmware, bootloader, settings and everything will be gone! So make sure you got the proper files ready before you start as it's vital that you flash the new bootloader before you restart your device as it would otherwise get soft-bricked.

:!: Make sure to write down your device's MAC address as we need to set it later! Otherwise it would get lost!

:!: Reboot the NAS and observe the output on the serial console (or terminal). When the u-boot information appears on the screen, press any key in the terminal to interrupt the boot process and stay in the bootloader.

:!: If your USB stick isn't recognized/found by u-boot, try putting an active (powered) USB hub between the NAS and the flash drive.

  • Option 1 to update the U-boot partition.

After plugging in the USB stick (use the rear USB ports), into the NAS, with the correct files and booting into u-boot, first step is to install OpenWrt's u-boot:

usb reset
fatload usb 0 0x1000000 u-boot.kwb
nand erase 0x0 0x100000
nand write 0x1000000 0x00000 0x100000
  • Option 2 to update the U-boot partition.

Use tftp server to update the u-boot partition. This case you will find the Load address in the tftpboot output! Setting up a TFTP server for TFTP Recovery/Install

setenv ipaddr
setenv serveraddr
tftpboot u-boot.kwb
nand erase 0x0 0x100000
nand write 0x800000 0x00000 0x100000

Now we set the correct environment variables:

setenv mtdparts 'mtdparts=orion_nand:0x00c0000(uboot),0x80000(uboot_env),0x7ec0000(ubi)'
setenv bootcmd 'run setenv bootargs; ubi part ubi; ubi read 0x800000 kernel; bootm 0x800000'

After the device reboots into the OpenWrt u-boot we adjust the device's MAC address (adjust the values, see the sticker under the NAS case):

setenv ethaddr AB:CD:EF:00:00:00

Then we proceed to flashing OpenWrt itself (which we called nsa325.bin for less typing):

usb reset
fatload usb 0 0x2000000 nsa325.bin
nand erase.part ubi
nand write 0x2000000 ubi 0x600000

Note that the number at the end indicates the size to write in hex. In this case up to 6 MiB. Increasing this number should work but has not been tested.

And now we reboot to OpenWrt:


If no output can be seen in the serial terminal, you probably messed up your U-Boot image.

kwboot  -t -B 115200 /dev/ttyUSB00 -b u-boot.kwb -p


hardware.button on howto use and configure the hardware button(s). Here, we merely name the buttons, so we can use them in the above Howto.

The device has the following buttons:

Power power
Reset reset
Copy copy

Don't connect the 3.3v pin when using the serial port.

           |    |    |
 |3.3V| TX | RX |    | GND|
 +----+----+----+    +----+


Serial connection parameters 3.3V, 115200 Baud
# screen /dev/ttyUSB0 115200
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: 2024/02/12 08:58
  • by