Since the upgrade instuctions from QNAP are incomplete I’ll try to make a complete overview of the steps here.
I used this KB Article from QNAP as base, but there are some quirks.
Preparations
First we need to get the firmware update itself stored somewhere. So find the upgrade you want to install on the QNAP download page and store it on the nas somewhere. I did over SSH since I like using cli:
[~] # cd /share/MD0_DATA [/share/MD0_DATA] # wget https://eu1.qnap.com/Storage/TS-809U-RP/TS-809U_20200821-4.2.6.zip --2021-03-07 14:59:23-- https://eu1.qnap.com/Storage/TS-809U-RP/TS-809U_20200821-4.2.6.zip Resolving eu1.qnap.com (eu1.qnap.com)... 80.74.156.130 Connecting to eu1.qnap.com (eu1.qnap.com)|80.74.156.130|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 171236919 (163M) [application/zip] Saving to: ‘TS-809U_20200821-4.2.6.zip’ TS-809U_20200821-4.2.6.zip 100%[==================================================================================================================>] 163.30M 6.94MB/s in 30s 2021-03-07 14:59:53 (5.42 MB/s) - ‘TS-809U_20200821-4.2.6.zip’ saved [171236919/171236919] [/share/MD0_DATA] #
Next we need to extract the update:
[/share/MD0_DATA] # unzip TS-809U_20200821-4.2.6.zip Archive: TS-809U_20200821-4.2.6.zip inflating: TS-809U_20200821-4.2.6.img [/share/MD0_DATA] #
Now that the upgrade file is prepared, we need some preparations on the system. We need a temporary folder where the update is stored, and a symlink for the system to use during the update:
[/share/MD0_DATA] # mkdir /mnt/HDA_ROOT/update [/share/MD0_DATA] # ln -sf /mnt/HDA_ROOT/update /mnt/update [/share/MD0_DATA] #
Start the update process
With all this out of the way we can start the real update:
[/share/MD0_DATA] # /etc/init.d/update.sh /share/MD0_DATA/TS-809U_20200821-4.2.6.img cksum=2916634212 Check RAM space available for FW update: OK. Using 120-bit encryption - (QNAPNASVERSION4) len=1048576 model name = TS-809U version = 4.2.6 boot/ bzImage bzImage.cksum config/ fw_info initrd.boot initrd.boot.cksum libcrypto.so.1.0.0 libssl.so.1.0.0 qpkg.tar qpkg.tar.cksum rootfs2.bz rootfs2.bz.cksum rootfs_ext.tgz rootfs_ext.tgz.cksum update/ update_img.sh 4.2.6 20200821 OLD MODEL NAME = TS-809U Allow upgrade Allow upgrade /mnt/HDA_ROOT/update 1+0 records in 1+0 records out tune2fs 1.41.4 (27-Jan-2009) Setting maximal mount count to -1 Setting interval between checks to 0 seconds Update image using HDD … bzImage cksum … Pass initrd.boot cksum … Pass rootfs2.bz cksum … Pass rootfs_ext.tgz cksum … Pass rootfs_ext.tgz cksum … Pass qpkg.tar cksum … Pass Update RFS1… mke2fs 1.41.4 (27-Jan-2009) Filesystem label=QTS_BOOT_PART2 OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 13832 inodes, 55296 blocks 0 blocks (0.00%) reserved for the super user First data block=1 Maximum filesystem blocks=56623104 7 block groups 8192 blocks per group, 8192 fragments per group 1976 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. Checking bzImage … ok Checking initrd.boot … ok Checking rootfs2.bz … ok Checking rootfs_ext.tgz … ok Update RFS2… mke2fs 1.41.4 (27-Jan-2009) Filesystem label=QTS_BOOT_PART3 OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 13832 inodes, 55296 blocks 0 blocks (0.00%) reserved for the super user First data block=1 Maximum filesystem blocks=56623104 7 block groups 8192 blocks per group, 8192 fragments per group 1976 inodes per group Superblock backups stored on blocks: 8193, 24577, 40961 Writing inode tables: done Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 24 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. 1+0 records in 1+0 records out Update Finished. Make a Backup /share/MD0_DATA qpkg.tar cksum … Pass set cksum [2916634212] [/share/MD0_DATA] # reboot [/share/MD0_DATA]
The system will reboot and after the boot your QNAP should be up and running on the new firmware.
Issues
/mnt/update: Cannot chdir: No such file or directory
At some point during the update I got the following error:
/share/MD0_DATA] # /etc/init.d/update.sh /share/MD0_DATA/TS-809U_20200821-4.2.6.img [...] /bin/tar: /mnt/update: Cannot chdir: No such file or directory /bin/tar: Error is not recoverable: exiting now [Firmware Update] System update failed. Firmware failed to extract. Error code: FW006 [/share/MD0_DATA] #
That meant the folder /mnt/HDA_ROOT/update
did not exist. A simple mkdir /mnt/HDA_ROOT/update
resolved this issue.
Error code: FW004
At some point I run into a “Firmware file format error”:
[/share/MD0_DATA] # /etc/init.d/update.sh /share/MD0_DATA/TS-809U_20190322-4.2.6.zip
cksum=3061299578
Check RAM space available for FW update: OK.
Using 120-bit encryption - (QNAPNASVERSION4)
sig: ,▒"
▒ icpnas
[Firmware Update] System update failed. Firmware file format error. Error code: FW004
[/share/MD0_DATA] #
This meant I did not extract the zip file before applying the update. The update.sh
command expects an .img
file, not a .zip
.