Skip to content

Replacing HDD in Zyxel NSA310

Henryk Paluch edited this page Jan 26, 2024 · 7 revisions

I decided to replace factory default drive (500GB) with brand new 2TB SATA drive on my Zyxel NSA310.

Replacing HDD

I was unable to find reliable guide in official docs. So here is my DIY version:

  • unscrew bottom screw using suitable coin (1 CZK works for me) or screwdriver - as in photo below:

    NSA310 unscrew 1st level

  • now unscrew 4 screws in corners - only these! as shown below:

    NSA310 unscrew 2nd level

  • now eject carefully and partially (!) the metal holder with disk. Be careful to NOT cut FAN wires - they allow to eject roughly 1/3 of the holder.

  • finally unscrew the last one (but not least!) which hold HDD itself:

    NSA310 unscrew 3rd level

  • insert new HDD and screw all screws in reverse order

  • boot your NSA310

  • login to web admin interface

  • go to Storage -> Volume and click on Create SATA Volume

  • confirm volume creation on Wizard pages

  • after a while that new volume should be ready for use

Copying data from old drive to new drive

  • Attach your old drive to NSA310 via USB to SATA adapter.

    WARNING! If your old drive has greater size then 1TB then the USB adapter may change sector size from 512 to 4096 which screws everything! This was not problem in my case (there is no reason to do this translation on 512GB drive).

    Please see https://knowledgebase.macrium.com/display/KNOW72/Incompatible+Disk+Selected for details.

  • Unfortunately NSA310 does not recognize filesystem (with exeption of SYS volume) on this old drive connected externaly because it is mapped under software RAID.

  • at first you need to enable root telnet access using trick from https://web.archive.org/web/20140719124143/https://nweightman.wordpress.com/2014/04/25/nsa310-using-ssh/ generally you need to replace your url after /adv, with /cgi-bin/remote_help-cgi?type=backdoor

  • then login via telnet on IP of your NSA310 - use root login and your administrator's password.

  • now we need to activate software RAID partition on this external USB drive using (partially from https://kb.zyxel.com/KB/searchArticle!gwsViewDetail.action?articleOid=013308&lang=EN):

    mdadm -A -f /dev/md1 /dev/sdb2
        mdadm: /dev/md1 has been started with 1 drive.
  • and mount partition from this drive (rather read-only):

    mkdir /mnt/x
    mount -r /dev/md1 /mnt/x
    df -h /mnt/x
     Filesystem                Size      Used Available Use% Mounted on
     /dev/md1                458.0G    384.3G     73.7G  84% /mnt/x
  • now we can copy all data - in this example from orig. public volume to target public volume:

    cd /mnt/x/public
    tar cf - ./ | tar xvpf - -C /i-data/xxxxxxxx/public/
  • NOTE: replace xxxxxxxx with your volume id (probably sytem dependent)

  • after copying everything you want you can release this USB drive using:

    cd /
    umount /mnt/x
    mdadm --stop /dev/md1
  • and finally eject this USB drive from Admin web page

Optional: Exploring ARM Linux

Here are few interesting commands which you can try while being connected to your NSA310 via telnet:

free
              total         used         free       shared      buffers
  Mem:       247956       241540         6416            0        43648
 Swap:       524280            0       524280
Total:       772236       241540       530696


cat /proc/cpuinfo

Processor       : Feroceon 88FR131 rev 1 (v5l)
BogoMIPS        : 1199.30
Features        : swp half thumb fastmult edsp
CPU implementer : 0x56
CPU architecture: 5TE
CPU variant     : 0x2
CPU part        : 0x131
CPU revision    : 1

Hardware        : Feroceon-KW
Revision        : 0000
Serial          : 0000000000000000


cat /proc/mtd

dev:    size   erasesize  name
mtd0: 00100000 00020000 "uboot"
mtd1: 00080000 00020000 "uboot_env"
mtd2: 00080000 00020000 "key_store"
mtd3: 00080000 00020000 "info"
mtd4: 00a00000 00020000 "etc"
mtd5: 00a00000 00020000 "kernel_1"
mtd6: 02fc0000 00020000 "rootfs1"
mtd7: 00a00000 00020000 "kernel_2"
mtd8: 02fc0000 00020000 "rootfs2"


fw_printenv

bootargs=console=ttyS0,115200 mtdparts=nand_mtd:0x100000(uboot),0x80000(uboot_env),0x80000(key_store),0x80000(info),0xA00000(etc),0xA00000(kernel_1),0x2FC0000(rootfs1),0xA00000(kernel_2),0x2FC0000(rootfs2) root=/dev/nfs rw init=/init
bootcmd=nand read.e 0x2000000 $(kernel_addr) 0xA00000; bootm 0x2000000
bootdelay=2
baudrate=115200
loads_echo=0
eth1addr=00:19:CB:xx:xx:xx
ipaddr=10.4.50.165
serverip=10.4.50.5
rootpath=/mnt/ARM_FS/
netmask=255.255.255.0
nandEcc=1bit
kernel_addr=480000
PRODUCT_NAME=NSA-310
FEATURE_BIT=00
CONTRY_TYPE=FF
VENDOR_NAME=ZyXEL Communications Corp.
run_diag=yes
ethaddr=50:67:F0:xx:xx:xx
MODEL_ID=Axxx

dmesg

io scheduler cfq registered (default)
Serial: 8250/16550 driver, 4 ports, IRQ sharing disabled
serial8250.0: ttyS0 at MMIO 0xf1012000 (irq = 33) is a 16550A
console [ttyS0] enabled
brd: module loaded
loop: module loaded
Integrated Sata device found
IRQ 21/mvSata: IRQF_DISABLED is not guaranteed on shared IRQs
Wake up disk0......
Wake up disk1......
scsi0 : Marvell SCSI to SATA adapter
scsi1 : Marvell SCSI to SATA adapter
scsi 0:0:0:0: Direct-Access     Seagate  ST2000DM008-XXXX 0001 PQ: 0 ANSI: 5
EnablePowerSaving
PowerSavingTime = 15
sd 0:0:0:0: [sda] Sector size 0 reported, assuming 512.
sd 0:0:0:0: [sda] 3907029168 512-byte logical blocks: (2.00 TB/1.81 TiB)
sd 0:0:0:0: [sda] 0-byte physical blocks
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 23 00 10 00
Loading Marvell Ethernet Driver:
  o Cached descriptors in DRAM
  o DRAM SW cache-coherency
  o 0 Giga ports supported
  o Single RX Queue support - ETH_DEF_RXQ=0
  o Single TX Queue support - ETH_DEF_TXQ=0
  o TCP segmentation offload (TSO) supported
  o Large Receive offload (LRO) supported
  o Receive checksum offload supported
  o Transmit checksum offload supported
  o Network Fast Processing (Routing) supported - (Disabled)
  o Driver ERROR statistics enabled
  o Proc tool API enabled
  o SKB Reuse supported - (Disabled)
  o SKB Recycle supported - (Disabled)
  o Rx descripors: q0=128
  o Tx descripors: q0=532
  o Loading network interface(s):

mvFpRuleDb (c8f5a000): 2048 entries, 8192 bytes
Counter=0, opIdx=6, overhead=16
Counter=1, opIdx=2, overhead=0
Counter=2, opIdx=1, overhead=18
Counter=3, opIdx=2, overhead=0
NAND device: Manufacturer ID: 0xec, Chip ID: 0xf1 (Samsung NAND 128MiB 3,3V 8-bit)
Scanning device for bad blocks
9 cmdlinepart partitions found on MTD device nand_mtd
Using command line partition definition
Creating 9 MTD partitions on "nand_mtd":
0x000000000000-0x000000100000 : "uboot"
sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, supports DPO and FUA
sd 0:0:0:0: [sda] Sector size 0 reported, assuming 512.
0x000000100000-0x000000180000 : "uboot_env"
0x000000180000-0x000000200000 : "key_store"
0x000000200000-0x000000280000 : "info"
 sda:
0x000000280000-0x000000c80000 : "etc"
0x000000c80000-0x000001680000 : "kernel_1"
0x000001680000-0x000004640000 : "rootfs1"
0x000004640000-0x000005040000 : "kernel_2"
0x000005040000-0x000008000000 : "rootfs2"
 sda1 sda2
ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
ehci_marvell ehci_marvell.70059: Marvell Orion EHCI
ehci_marvell ehci_marvell.70059: new USB bus registered, assigned bus number 1
sd 0:0:0:0: [sda] Sector size 0 reported, assuming 512.
sd 0:0:0:0: [sda] Attached SCSI disk
ehci_marvell ehci_marvell.70059: irq 19, io base 0xf1050100
ehci_marvell ehci_marvell.70059: USB 2.0 started, EHCI 1.00
usb usb1: configuration #1 chosen from 1 choice
hub 1-0:1.0: USB hub found
hub 1-0:1.0: 1 port detected
ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
uhci_hcd: USB Universal Host Controller Interface driver
usbcore: registered new interface driver usblp
Initializing USB Mass Storage driver...
usbcore: registered new interface driver usb-storage
USB Mass Storage support registered.
usbcore: registered new interface driver ums-datafab
usbcore: registered new interface driver ums-freecom
usbcore: registered new interface driver ums-jumpshot
usbcore: registered new interface driver ums-sddr09
usbcore: registered new interface driver ums-sddr55
usbcore: registered new interface driver ums-usbat
mice: PS/2 mouse device common for all mice
i2c /dev entries driver
hwmon-vid: Unknown VRM version of your CPU
md: linear personality registered for level -1
md: raid0 personality registered for level 0
md: raid1 personality registered for level 1
cpufreq: Setting CPU Frequency to 1200000 KHz
cpufreq: Setting PowerSaveState to off
sdhci: Secure Digital Host Controller Interface driver
sdhci: Copyright(c) Pierre Ossman
mmc0: mvsdio driver initialized, lacking card detect (fall back to polling)
usbcore: registered new interface driver hiddev
usbcore: registered new interface driver usbhid
usbhid: v2.6:USB HID core driver
TCP cubic registered
NET: Registered protocol family 10
lo: Disabled Privacy Extensions
Mobile IPv6
IPv6 over IPv4 tunneling driver
sit0: Disabled Privacy Extensions
ip6tnl0: Disabled Privacy Extensions
NET: Registered protocol family 17
RPC: Registered udp transport module.
RPC: Registered tcp transport module.
rtc mv_rtc: setting system clock to 2018-12-07 10:36:59 UTC (1544179019)
Freeing init memory: 2808K
usb 1-1: new high speed USB device using ehci_marvell and address 2
In hub_port_init, and number is 0, retry 0, port 1 .....
usb 1-1: configuration #1 chosen from 1 choice
hub 1-1:1.0: USB hub found
hub 1-1:1.0: 4 ports detected
r8168 Gigabit Ethernet driver 8.023.00-NAPI loaded
r8168 0000:00:01.0: no MSI. Back to INTx.
 Set LED ...
eth%d: RTL8168B/8111B at 0xd0900000, 50:67:f0:xx:xx:xx, IRQ 9
r8168: This product is covered by one or more of the following patents: US5,307,459, US5,434,872, US5,732,094, US6,570,884, US6,115,776, and US6,327,625.
eth0: Identified chip type is 'RTL8168D/8111D'.
r8168  Copyright (C) 2011  Realtek NIC software team <nicfae@realtek.com>
 This program comes with ABSOLUTELY NO WARRANTY; for details, please see <http://www.gnu.org/licenses/>.
 This is free software, and you are welcome to redistribute it under certain conditions; see <http://www.gnu.org/licenses/>.
r8168: egiga0: link down
ADDRCONF(NETDEV_UP): egiga0: link is not ready
yaffs: dev is 32505864 name is "mtdblock8" ro
yaffs: passed flags ""
yaffs: Attempting MTD mount of 31.8,"mtdblock8"
yaffs: restored from checkpoint
yaffs_read_super: isCheckpointed 1
r8168: egiga0: link up
ADDRCONF(NETDEV_CHANGE): egiga0: link becomes ready
r8168: egiga0: link up
yaffs: dev is 32505860 name is "mtdblock4" rw
yaffs: passed flags ""
yaffs: Attempting MTD mount of 31.4,"mtdblock4"
yaffs: restored from checkpoint
yaffs_read_super: isCheckpointed 1
NTFS driver 2.1.29 [Flags: R/O MODULE].
tntfs: module license 'Commercial. For support email ntfs-support@tuxera.com.' taints kernel.
Disabling lock debugging due to kernel taint
Tuxera NTFS driver 3011.12.23 [Flags: R/W MODULE].
PPP generic driver version 2.4.2
PPP MPPE Compression module registered
PPP Deflate Compression module registered
NET: Registered protocol family 24
PPP BSD Compression module registered
egiga0: no IPv6 routers present
md: md0 stopped.
md: bind<sda2>

--hp

Clone this wiki locally