Skip to content

QNAP TS-873A

QNAP TS-873A, supremely versatile business NAS.

Specifications

Linux kernel

Running QuTS Hero h6.0.1.3550.

[~] # uname -a
Linux QNAP 6.6.32-qnap #3 SMP PREEMPT_DYNAMIC Thu Jul  9 06:55:38 CST 2026 x86_64 GNU/Linux
Older QuTS versions

Running QuTS Hero 6.0.0.3324 (beta).

[~] # uname -a
Linux QNAP 6.6.32-qnap #2 SMP PREEMPT_DYNAMIC Tue Nov 25 04:59:18 CST 2025 x86_64 GNU/Linux

Running QuTS Hero 5.2.0.2737 (beta).

[~] # uname -a
Linux QNAP 5.10.60-qnap #1 SMP Wed Apr 17 09:40:49 CST 2024 x86_64 GNU/Linux

Running QuTS Hero 5.0.0.1772.

[~] # uname -a
Linux QNAP 5.10.55-qnap #1 SMP Thu Aug 26 11:38:38 CST 2021 x86_64 GNU/Linux

Running QuTS Hero 4.5.3.1698.

[~] # uname -a
Linux QNAP 4.14.24-qnap #1 SMP Sat Jun 12 07:59:04 CST 2021 x86_64 GNU/Linux

CPU information

[~] # sed '/^$/d' < /proc/cpuinfo | grep -m 1 'model name' | cut -c14-
AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
Full output
[~] # cat /proc/cpuinfo
processor       : 0
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1954.227
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 1
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1955.271
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 0
cpu cores       : 4
apicid          : 1
initial apicid  : 1
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 2
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1954.071
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 2
initial apicid  : 2
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 3
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1954.425
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 1
cpu cores       : 4
apicid          : 3
initial apicid  : 3
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 4
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1954.314
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 2
cpu cores       : 4
apicid          : 4
initial apicid  : 4
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 5
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1954.611
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 2
cpu cores       : 4
apicid          : 5
initial apicid  : 5
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 6
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1932.097
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 6
initial apicid  : 6
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

processor       : 7
vendor_id       : AuthenticAMD
cpu family      : 23
model           : 17
model name      : AMD Ryzen Embedded V1500B Quad-core CPU @ 2.20GHz
stepping        : 0
microcode       : 0x8101016
cpu MHz         : 1911.751
cache size      : 512 KB
physical id     : 0
siblings        : 8
core id         : 3
cpu cores       : 4
apicid          : 7
initial apicid  : 7
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge
mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt
pdpe1gb rdtscp lm constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid
aperfmperf pni pclmulqdq monitor ssse3 fma cx16 sse4_1 sse4_2 movbe popcnt
aes xsave avx f16c rdrand lahf_lm cmp_legacy svm extapic cr8_legacy abm
sse4a misalignsse 3dnowprefetch osvw skinit wdt tce topoext perfctr_core
perfctr_nb bpext perfctr_llc mwaitx cpb hw_pstate sme ssbd sev ibpb vmmcall
sev_es fsgsbase bmi1 avx2 smep bmi2 rdseed adx smap clflushopt sha_ni
xsaveopt xsavec xgetbv1 xsaves clzero irperf xsaveerptr arat npt lbrv
svm_lock nrip_save tsc_scale vmcb_clean flushbyasid decodeassists
pausefilter pfthreshold avic v_vmsave_vmload vgif overflow_recov succor
smca
bugs            : sysret_ss_attrs null_seg spectre_v1
spectre_v2 spec_store_bypass
bogomips        : 4391.49
TLB size        : 2560 4K pages
clflush size    : 64
cache_alignment : 64
address sizes   : 43 bits physical, 48 bits virtual
power management: ts ttp tm hwpstate eff_freq_ro [13] [14]

AMD Ryzen™ Embedded V1500B

Memory information

See Memory upgrades

[~] # cat /proc/meminfo
MemTotal:       65824156 kB
MemFree:        57450896 kB
MemAvailable:   57395092 kB
Buffers:           23360 kB
Cached:           904984 kB
SwapCached:            0 kB
Active:           789444 kB
Inactive:         569448 kB
Active(anon):     612776 kB
Inactive(anon):   132268 kB
Active(file):     176668 kB
Inactive(file):   437180 kB
Unevictable:       15808 kB
Mlocked:           15808 kB
SwapTotal:      65850360 kB
SwapFree:       65850360 kB
Dirty:                 0 kB
Writeback:             0 kB
AnonPages:        446304 kB
Mapped:           142464 kB
Shmem:            315568 kB
Slab:             371116 kB
SReclaimable:      96004 kB
SUnreclaim:       275112 kB
KernelStack:       33636 kB
PageTables:        35920 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:    98762436 kB
Committed_AS:    7178028 kB
VmallocTotal:   34359738367 kB
VmallocUsed:           0 kB
VmallocChunk:          0 kB
HardwareCorrupted:     0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:      412720 kB
DirectMap2M:     5830656 kB
DirectMap1G:    61865984 kB

Upgrades

Memory

QNAP's TS-873A comes with 8GB of DDR4-2666 non ECC memory as standard. This is a Kingston product marketed as QNAP RAM under part number RAM-8GDR4T0-SO-2666.

Upgraded to 64GB of DDR4-2666 ECC Unbuffered memory from Kingston with part number KSM26SED8/32ME.

System SSD

QNAP just like Synology devices have an internal flash memory chip. This is where the default QuTS/QTS/DSM operating system and configuration are stored. Whichever drive (SSD or HDD) that you initially setup your QNAP with will house not only your apps but also QNAP configuration itself, etc...

QNAP's TS-873A comes with two M.2 2280 PCIe Gen3 x1 slots that were populated with Samsung 980 500GB SSDs, part number MZ-V8V500BW.

Video

Read this before blaming the drivers

NVIDIA® drivers are not broken under QuTS hero h6.0.1. Three separate issues can make them look broken; each has a distinct signature and a one-line fix, see Troubleshooting the NVIDIA driver stack. Verified working on QuTS hero h6.0.1.3550 with NvKernelDriver 6.0.1.3550 and NVIDIA GPU Driver 6.2.2.1106 (driver 575.64.05, CUDA 12.9).

PNY NVIDIA® Quadro® P1000, mainly used for Plex Media Server Hardware-Accelerated Streaming.

Two packages are required; they complement each other and are not QTS/QuTS alternatives:

  • NvKernelDriver: the kernel modules. Pinned to the exact firmware build (its Build date must match the firmware build date), so a matching version is needed again after every firmware update.
  • NVIDIA GPU Driver (NVIDIA_GPU_DRV): the userspace half; libraries, nvidia-smi and creation of the /dev/nvidia* device nodes. Its init script refuses to start until NvKernelDriver is registered with Status = complete (the gate also accepts queue) in /etc/config/qpkg.conf.

After installing the card into the TS-873A, QTS/QuTS should automatically install NvKernelDriver at boot. This can fail silently when the network isn't up yet (see Troubleshooting below). In that case, download the package matching your exact firmware version from the QNAP website and install it manually through App Center. Avoid sh package.qpkg from the CLI: the self-extracting wrapper aborts on a benign gzip warning caused by the digital signature appended to the archive, and a manual qinstall.sh run does not write the Status = complete registry key that NVIDIA_GPU_DRV requires (failure mode 3 below).

Under Control Panel > System > Hardware > Hardware Resources, allocate the graphics card to OS/NAS use ("QTS mode") instead of Virtualization Station passthrough. The change only takes effect at the next reboot; until then vfio-pci keeps ownership of the PCI device (failure mode 2 below).

Troubleshooting the NVIDIA driver stack

The three known failure modes have distinct signatures:

1. CLI installation aborts with tar: Child returned status 2

gzip: stdin: decompression OK, trailing garbage ignored
/bin/tar: Child returned status 2
/bin/tar: Exiting with failure status due to previous errors

The .qpkg carries a digital signature appended after the embedded gzip stream. gzip decompresses the payload successfully (valid CRC) but exits with status 2 to signal the "trailing garbage" warning; tar propagates the non-zero child status and the wrapper's [ $? = 0 ] || exit 1 guard aborts before ever running qinstall.sh — even though extraction into <pool>/.qpkg.local/.tmp completed in full (the failure path performs no cleanup). Prefer App Center. To finish a CLI install anyway:

[~] # cd /share/ZFS1_DATA/.qpkg.local/.tmp
[~] # sh ./qinstall.sh
[~] # setcfg NvKernelDriver Status complete -f /etc/config/qpkg.conf
[~] # setcfg NvKernelDriver Status complete -f /etc/config.local/qpkg.conf

2. insmod: can't insert nvidia.ko: No such device

dmesg shows NVRM: The NVIDIA probe routine was not called for 1 device(s) / NVRM: No NVIDIA devices probed; the flood of unknown symbol errors for nvidia-modeset/nvidia-drm/nvidia-uvm that follows is cascade noise (they depend on symbols exported by nvidia.ko). The card is bound to vfio-pci because it is allocated to VM passthrough:

[~] # ls -l /sys/bus/pci/devices/0000:01:00.0/driver
lrwxrwxrwx 1 admin administrators 0 [...] driver -> ../../../../bus/pci/drivers/vfio-pci/

Re-allocate the card in Hardware Resources (see above) and reboot.

3. Kernel modules loaded but no /dev/nvidia*; NVIDIA GPU Driver stuck on Stopped and re-disabling itself

NVIDIA_GPU_DRV.sh start polls getcfg NvKernelDriver Status -f /etc/config/qpkg.conf for up to 120 seconds expecting complete (or queue). That key is only written by the App Center installation flow; after a manual qinstall.sh install it is missing, so the script times out, sets NVIDIA_GPU_DRV Enable = FALSE itself and exits — making every subsequent start attempt (App Center toggle, qpkg_service start) fail silently. Fix:

[~] # setcfg NvKernelDriver Status complete -f /etc/config/qpkg.conf
[~] # setcfg NvKernelDriver Status complete -f /etc/config.local/qpkg.conf
[~] # setcfg NVIDIA_GPU_DRV Enable TRUE -f /etc/config/qpkg.conf
[~] # /etc/init.d/NVIDIA_GPU_DRV.sh start

Note

The Event Log error [Hardware Status] Failed to automatically install the driver: NvKernelDriver can reappear on any boot: the downloader in /etc/rcS.d/S61nv_kernel_drv runs early in the boot sequence and, despite a built-in internet-reachability check, gives up within seconds when the network stack isn't ready yet. It is cosmetic as long as a firmware-matched NvKernelDriver is installed locally — the package's own init script loads the kernel modules later in boot.

Force HW video encoding/decoding in Plex Media Server

With current Plex Media Server and NVIDIA GPU Driver >= 6.2.2.x this workaround is no longer needed: the Plex QPKG detects that it was installed before NVIDIA_GPU_DRV and waits for the NVIDIA stack on startup. If Plex came up before the driver did (typically right after installing the driver for the first time), a single restart is enough:

[~] # /share/ZFS2_DATA/.qpkg/PlexMediaServer/plex.sh restart
Stopping Plex Media Server...
PlexMediaServer installed before NVIDIA_GPU_DRV. Plex will attempt to wait for Nvidia to start
Starting Plex Media Server...
Legacy fix (driver 515 era)

In some cases and for seemingly unknown reasons, even when setting the graphics card to QTS mode in the QTS/QuTS interface as explained above, Plex Media Server won't use it for hardware video encoding/decoding.

To force Plex to use the installed graphics card, make sure the card is properly detected:

[~] # gpuhal_app -l
1:NVIDIA Corporation:GP107GL [Quadro P1000]:external:7

Get graphics card information, such as mode and installed drivers:

[~] # gpuhal_app -s 1
active_status=2,real_status=2,driverqpkg=NVIDIA_GPU_DRV,driver_installed=1,in_used=none,transcode=1,display=1,pcie_slot=1,pcie_vp=1,va_type=none

Check that the card has a device file and a render node under /dev/dri/:

[~] # ls -la /dev/dri/
total 0
drwxr-xr-x  2 admin administrators       80 2022-02-18 11:22 ./
drwxr-xr-x 17 admin administrators    21380 2022-02-25 13:53 ../
crw-------  1 admin administrators 226,   0 2022-02-18 11:22 card0
crw-------  1 admin administrators 226, 128 2022-02-18 11:22 renderD128

Add the following to your Preferences.xml file and restart Plex Media Server.

[~] # nano /share/ZFS530_DATA/.qpkg/PlexMediaServer/Library/Plex\ Media\ Server/Preferences.xml
[...] HardwareDevicePath="/dev/dri/renderD128"

You should now be able to use hardware video encoding/decoding.

Source

Potential additional upgrades

PCIe

  • QM2-2P-384 - Dual M.2 22110/2280 PCIe NVMe SSD expansion card
  • QM2-2P10G1TA - Dual M.2 2280 PCIe NVMe SSD & single-port 10GbE expansion card

Storage expansion

  • TR-004 - 4 Bay USB Type-C Direct Attached Storage with Hardware RAID

Configuration

Persistant crontab

The normal method of editing your crontab does not work on QNAP NAS' as it does not persist after a reboot. To make crontab changes persistant, do the following:

[~] # nano /etc/config/crontab
[~] # crontab /etc/config/crontab
[~] # /etc/init.d/crond.sh restart

Usage

Fix nvidia-smi PATH

With NVIDIA GPU Driver >= 6.2.2.x no PATH or LD_LIBRARY_PATH fix is needed for nvidia-smi: both the usr/lib/bin/ copy and the old usr/bin/ entry point run bare (verified with env -u LD_LIBRARY_PATH). The usr/lib/ tree is populated by the package's start script from the shipped usr/nvidia/ payload (copies for the NVIDIA binaries and libraries, symlinks for the libva/libdrm shims):

[~] # /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib/bin/nvidia-smi
Wed Jul 22 10:26:38 2026
+-----------------------------------------------------------------------------------------+
| NVIDIA-SMI 575.64.05              Driver Version: 575.64.05      CUDA Version: 12.9     |
|-----------------------------------------+------------------------+----------------------+
| GPU  Name                 Persistence-M | Bus-Id          Disp.A | Volatile Uncorr. ECC |
| Fan  Temp   Perf          Pwr:Usage/Cap |           Memory-Usage | GPU-Util  Compute M. |
|                                         |                        |               MIG M. |
|=========================================+========================+======================|
|   0  Quadro P1000                   Off |   00000000:01:00.0 Off |                  N/A |
| 34%   40C    P8            N/A  /  N/A  |       3MiB /   4096MiB |      0%      Default |
|                                         |                        |                  N/A |
+-----------------------------------------+------------------------+----------------------+

+-----------------------------------------------------------------------------------------+
| Processes:                                                                              |
|  GPU   GI   CI              PID   Type   Process name                        GPU Memory |
|        ID   ID                                                               Usage      |
|=========================================================================================|
|  No running processes found                                                             |
+-----------------------------------------------------------------------------------------+

Tools with X client library dependencies (e.g. nvidia-settings) still need LD_LIBRARY_PATH, see Manually setting GPU fan speed. The package also ships a driver-env.sh helper at its root; its paths resolve because the start script creates /opt/NVIDIA_GPU_DRV/usr as a symlink to the QPKG's usr/ tree.

Legacy behaviour (driver 515 era)

When trying to invoke the nvidia-smi utility from the command-line, the command fails with the following error:

[~] # /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/bin/nvidia-smi
NVIDIA-SMI couldn't find libnvidia-ml.so library in your system. Please make sure that the NVIDIA Display Driver is properly installed and present in your system.
Please also try adding directory that contains libnvidia-ml.so to your system PATH.

To fix this, add the necessary directory to your PATH as follows:

[~] # export LD_LIBRARY_PATH="/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia.u18.04$LD_LIBRARY_PATH"
[~] # /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/bin/nvidia-smi

Only /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia.u18.04 can be added to LD_LIBRARY_PATH.

[~] # find / -path /share/ZFS19_DATA/ -prune -o -name "libnvidia-ml.so" -print
/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib/libnvidia-ml.so
/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia/libnvidia-ml.so
/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/nvidia.u18.04/libnvidia-ml.so
/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/cuda-11.7/targets/x86_64-linux/lib/stubs/libnvidia-ml.so
[~] #

Using any other directory listed above allows for nvidia-smi to work as expected but results in PMS failing to start with the following error:

[~] # /share/ZFS530_DATA/.qpkg/PlexMediaServer/plex.sh restart
Plex Media Server hasn't been enabled or started...
Starting Plex Media Server...
[~] # Error relocating ./Plex Media Server: drmGetDevices2: symbol not found

The PATH issue was reported to QNAP on November 23rd 2021 but was discarded with the following reply:

The [NVIDIA GPU Driver] qpkg is used for NAS web UI to display NVidia GPU card status, so it can be assigned to HD Station, Linux Station, or Hardware Transcoding. This qpkg doesn't provide the library path in the environment by default.

Manually setting GPU fan speed

Warning

Verified working headless on NVIDIA GPU Driver 6.2.2.1106 (driver 575.64.05): setting GPUTargetFanSpeed=100 physically spun the fan up from 34% duty (94% observed in nvidia-smi five seconds in) and GPUFanControlState=0 handed control back to automatic. Invoked bare, nvidia-settings fails with error while loading shared libraries: libXext.so.6; the LD_LIBRARY_PATH export below is still required (the X client libraries live in usr/applib/ and usr/syslib/). The Failed to connect to Mir / Unable to init server noise is harmless.

[~] # export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/applib/:/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/lib/:/share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/syslib/
[~] # /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/bin/nvidia-settings --display :0 -a GPUFanControlState=1 -a GPUTargetFanSpeed=100
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused

  Attribute 'GPUFanControlState' ([gpu:0]) assigned value 1.

  Attribute 'GPUTargetFanSpeed' ([fan:0]) assigned value 100.

[~] # /share/ZFS530_DATA/.qpkg/NVIDIA_GPU_DRV/usr/bin/nvidia-settings --display :0 -a GPUFanControlState=0
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused

  Attribute 'GPUFanControlState' ([gpu:0]) assigned value 0.

[~] #

Update Samsung SSD Firmware

https://blog.quindorian.org/2021/05/firmware-update-samsung-ssd-in-linux.html/

[~] # wget https://download.semiconductor.samsung.com/resources/software-resources/Samsung_SSD_980_3B4QFXO7.iso
[~] # mkdir /mnt/iso
[~] # mount -o loop ./Samsung_SSD_980_3B4QFXO7.iso /mnt/iso/
[~] # mkdir /tmp/fwupdate
[~] # cd /tmp/fwupdate
[~] # gzip -dc /mnt/iso/initrd | cpio -idv
[~] # cd root/fumagician/
[~] # ./fumagician