Manually Updating Firmware

From QNAPedia
Revision as of 17:54, 26 October 2015 by Glenn (talk | contribs) (+Category:Servicing)
Jump to navigation Jump to search

Regarding how to update the firmware manually via command line, you will have to upload the firmware image (e.g. TS-209_2.1.2_build1031.img) to a shared folder in the NAS (e.g. Public) first, and then execute several commands with SSH/Telnet.

If the firmware file is a zip file, then wherever you have copied it to on the server, firstly unzip it:

# unzip TS-410_3.5.2_Build1126.zip

You will get some minimal output with the above command:

Archive: TS-410_3.5.2_Build1126.zip
inflating: TS-410_3.5.2_Build1126.img

[Two important checks]

(1) Please make sure there is /mnt/HDA_ROOT/update folder.

If it does not exist, create it using

# mkdir /mnt/HDA_ROOT/update

(2) Confirm no /mnt/update file or folder.

If it exists, you need to delete it using:

# rm -rf /mnt/update

if you get a message saying:

"rm: unable to remove '/mnt/update': Device or resource busy", unmount the folder and try the rm line above again. To unmount use:

# umount /mnt/update


After the above two checks, execute the commands below to perform the update. If updating from 4.0.x to 4.0.5, 4.0.6, 4.0.7, 4.1 or newer, do not copy or move the image to HDA_ROOT/update, let's make a work copy on public. This is required avoid any "System update failed. No enough space on RAM/ disk available for firmware update." errors:

  1. Copy the image file to the normal update location:
    # cp /share/Public/TS-119_20131219-4.1.0.img /share/Public/TS-119_20131219-4.1.0-work.img
  2. Create a link to the /mnt/update location:
    # ln -sf /mnt/HDA_ROOT/update /mnt/update
  3. Run the update script:
    # /etc/init.d/update.sh /share/Public/TS-119_20131219-4.1.0-work.img


Keeping the "original" procedure here - not to be repeated when doing the above 1-2-3. After the above two checks, execute the commands below to perform the update.

  1. Copy the image file to the normal update location:
    # mv /share/Public/TS-209_2.1.2_build1031.img /mnt/HDA_ROOT/update/
  2. Create a link to the /mnt/update location:
    # ln -sf /mnt/HDA_ROOT/update /mnt/update
  3. Run the update script:
    # /etc/init.d/update.sh /mnt/HDA_ROOT/update/TS-209_2.1.2_build1031.img

Note while the update script runs, you will get some output feedback in the terminal, similar to the following. This particular update was conducted on a TS-410, with update package as shown, TS-410_3.5.2_Build1126.img, so here, as with any update, the various commands listed above which reference a particular update image would change with whichever update image you need to use:

If you get some error similar with: "undefined symbol: lock_system_update"
then run the command below and do the update procedure again

rm /sbin/lock_system_update; echo '#!/bin/sh' > /sbin/lock_system_update; chmod +x /sbin/lock_system_update
[/] # /etc/init.d/update.sh /mnt/HDA_ROOT/update/TS-410_3.5.2_Build1126.img 

<p>cksum=1727365263 Using 120-bit encryption - (QNAPNASVERSION4) len=1048576 model name = TS-410 version = 3.5.2 16+0 records in 16+0 records out 3.5.2OLD MODEL NAME = TS-410 Allow upgrade boot/ config/ fw_info initrd.boot initrd.boot.cksum qpkg.tar qpkg.tar.cksum rootfs2.img rootfs2.img.cksum rootfs_ext.tgz rootfs_ext.tgz.cksum uImage uImage.cksum update/ update_check update_img.sh tune2fs 1.41.4 (27-Jan-2009) Setting maximal mount count to -1 Setting interval between checks to 0 seconds Update image using HDD ... Update Kernel ... 4030+1 records in 4030+1 records out Update Basic RootFS ... 17353+1 records in 17353+1 records out Update Basic RootFS2 ... 6144+0 records in 6144+0 records out 1+0 records in 1+0 records out Update Finished. set cksum [1727365263] [/] # </p><p><br /> </p>


Then reboot the system after manually updating the firmware:

# reboot