QNAP TS-473A Firmware update

Table of Contents

These are my notes on how to upgrade the UEFI firmware on my QNAP TS-473.

Steps to update

  1. Go to the Utilities section of the QNAP Download Center for the TS-473A
  2. Locate the latest file named BIOS for TS-473A, TS-673A, TS-873A
  3. Format a USB stick as FAT32
  4. mount the stick
  5. unzip the downloaded archive to the stick
  6. unmount the stick cleanly
  7. insert stick into QNAP TS-473A
  8. boot to UEFI shell
  9. wait for continuous beep (this takes a couple minutes, do not remove the stick before it beeps)
  10. remove stick
  11. remove power cord
  12. wait 30 seconds
  13. plug power back in

Notes

Like with all firmware upgrades, I recommend you read the vendor’s readme file and the FAQ entry linked in that readme.

I did not bother removing any drives from the chassis for the upgrade. Instead I chose the boot target myself for the upgrade, skipping my normal Linux boot target.

Content of the downloaded file (click to expand).
pcfe@t3600 tmp $ unzip -l BiosAutoUpgrade_Q07DAR15.zip 
Archive:  BiosAutoUpgrade_Q07DAR15.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  10-14-2020 18:14   EFI/
        0  10-15-2020 10:03   EFI/BOOT/
   757136  08-14-2020 17:10   EFI/BOOT/BOOTx64.efi
     7552  10-14-2020 17:33   EFI/BOOT/done.efi
   902080  03-06-2012 11:53   EFI/BOOT/QNAP_BIOS.EFI
     7200  10-15-2020 09:08   EFI/BOOT/start.efi
        0  02-09-2022 15:14   Q07DAR15/
   527984  07-02-2018 15:57   Q07DAR15/AfuEfix64.efi
       41  12-20-2021 14:31   Q07DAR15/Q07DAR15.nsh
  8388608  12-20-2021 12:13   Q07DAR15/Q07DAR15.rom
     7081  12-20-2021 14:33   Q07DAR15/release_note_Q07DAR15.txt
     1424  02-09-2022 15:15   startup.nsh
---------                     -------
 10599106                     12 files

Selected boot target

I booted into UEFI shell, not the USB stick. The UEFI shell picked up the stick’s startup.nsh, which then did the update.

Since I added a GPU to my TS-473A, I simply hit <DEL> during POST and then selected the UEFI Shell as boot target.

But, if you are already running in UEFI mode, there should be no need to faff around with either a screen or a serial console only to to select a boot target. If you can ssh to the QNAP, then you can use efibootmgr to choose the next boot target.

Demo of using efibootmgr to set the target of the next boot (click to expand).

Find the number of the UEFi shell target (I have no idea why I have two, 4 and 14)

[root@ts-473a-01 ~]# efibootmgr 
BootCurrent: 0006
Timeout: 5 seconds
BootOrder: 0006,000C,000D,000E,000F,0010,0014,0004,0003
Boot0003* iPXE
Boot0004  UEFI: Built-in EFI Shell
Boot0005   USB DISK MODULE PMAP
Boot0006* Red Hat Enterprise Linux
Boot000A  ST4000VN000-1H4168
Boot000B  ST4000VN000-1H4168
Boot000C* Samsung SSD 980 500GB
Boot000D* CT2000P2SSD8
Boot000E* ST4000VN000-1H4168
Boot000F* ST4000VN000-1H4168
Boot0010*  USB DISK MODULE PMAP
Boot0014* UEFI: Built-in EFI Shell

Next time, boot into target number 4

[root@ts-473a-01 ~]# efibootmgr --bootnext 4
BootNext: 0004
BootCurrent: 0006
Timeout: 5 seconds
BootOrder: 0006,000C,000D,000E,000F,0010,0014,0004,0003
Boot0003* iPXE
Boot0004  UEFI: Built-in EFI Shell
Boot0005   USB DISK MODULE PMAP
Boot0006* Red Hat Enterprise Linux
Boot000A  ST4000VN000-1H4168
Boot000B  ST4000VN000-1H4168
Boot000C* Samsung SSD 980 500GB
Boot000D* CT2000P2SSD8
Boot000E* ST4000VN000-1H4168
Boot000F* ST4000VN000-1H4168
Boot0010*  USB DISK MODULE PMAP
Boot0014* UEFI: Built-in EFI Shell
[root@ts-473a-01 ~]# reboot
Connection to ts-473a-01 closed by remote host.
Connection to ts-473a-01 closed.

Post-upgrade state

Now it is running version Q07DAR15 (click for details).
[root@ts-473a-01 ~]# date ; dmidecode --type bios
Sun Mar 12 15:25:15 CET 2023
# dmidecode 3.3
Getting SMBIOS data from sysfs.
SMBIOS 3.2.0 present.

Handle 0x0000, DMI type 0, 26 bytes
BIOS Information
	Vendor: American Megatrends Inc.
	Version: Q07DAR15
	Release Date: 12/20/2021
	Address: 0xF0000
	Runtime Size: 64 kB
	ROM Size: 8 MB
	Characteristics:
		PCI is supported
		BIOS is upgradeable
		BIOS shadowing is allowed
		Boot from CD is supported
		Selectable boot is supported
		BIOS ROM is socketed
		EDD is supported
		5.25"/1.2 MB floppy services are supported (int 13h)
		3.5"/720 kB floppy services are supported (int 13h)
		3.5"/2.88 MB floppy services are supported (int 13h)
		Print screen service is supported (int 5h)
		Serial services are supported (int 14h)
		Printer services are supported (int 17h)
		ACPI is supported
		USB legacy is supported
		BIOS boot specification is supported
		Targeted content distribution is supported
		UEFI is supported
	BIOS Revision: 0.0

Handle 0x0028, DMI type 13, 22 bytes
BIOS Language Information
	Language Description Format: Long
	Installable Languages: 1
		en|US|iso8859-1
	Currently Installed Language: en|US|iso8859-1

Still some boot time errors

This has not changed from what I got on the older version. I’m still not really bothered by this.

[…] kernel: ACPI: Video Device [VGA] (multi-head: yes  rom: no  post: no)
[…] kernel: ACPI BIOS Error (bug): Could not resolve symbol [\_SB.PCI0.GP17.VGA.LCD._BCM.AFN7], AE_NOT_FOUND (20211217/psargs-330)
[…] kernel: fbcon: Taking over console
[…] kernel: ACPI Error: 
[…] kernel: Console: switching to colour frame buffer device 100x37
[…] systemd[1]: Started Show Plymouth Boot Screen.
[…] kernel: Aborting method \_SB.PCI0.GP17.VGA.LCD._BCM due to previous error (AE_NOT_FOUND) (20211217/psparse-531)
[…] kernel: ACPI Error: Evaluating _BCM failed (20211217/video-370)
[…] systemd[1]: Started Forward Password Requests to Plymouth Directory Watch.
[…] systemd[1]: Reached target Paths.
[…] kernel: input: Video Bus as /devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:11/LNXVIDEO:00/input/input2

Still no SecureBoot

Sadly, this also has not changed from what I got on the older version.

[root@ts-473a-01 ~]# mokutil --sb-state 
SecureBoot disabled