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 (itsBuilddate 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-smiand creation of the/dev/nvidia*device nodes. Its init script refuses to start untilNvKernelDriveris registered withStatus = complete(the gate also acceptsqueue) 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.
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