So, i have to do that in all my shared folders or its only in PlexData ?
One at a time, go through each. Yes, it’s annoying but is also the only way to ensure you’ve cleared the bug.
I have 33 shared folders. I was properly annoyed too.
After all, the only shared folder that has NFS activated was the Public folder.
I have to stop the sharing also for the others kind of shares (Users and Groups and Microsoft)?
One at a time, yes.
In most cases, because of how Windows and Linux “retry” their connections, nobody will notice it UNLESS actively transferring files at that moment.
After installing this update, I’ve also noted the issues mentioned previously.
I’m also not able to browse the directory via ssh
[/share] # ls -lah /share/PlexData/
/bin/ls: cannot access /share/PlexData/: No such file or directory
I can see that the directory is listed under /share/, and it looks like a simlink.
[/share] # ls /share/PlexData
/share/PlexData@
It looks like the symlink is bad
[/share] # ls -lah /share/PlexData
lrwxrwxrwx 1 admin administrators 2 2020-07-22 20:26 /share/PlexData -> ta
This is the installation location
[/share] # getcfg -f /etc/config/qpkg.conf PlexMediaServer Install_path
/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer
I tried stopping and re-starting just PMS, it made no change.
Qnap TVS-1282
QTS 4.4.3.1354 Build 20200702
@ChuckPa
Wow, really nice feature! Got it up and running by deleting the self generated Plexdata share. Created it again on my volume and now have the Plex Media Server dir in it and all it’s content available in file station.
Just a small question, when I now backup this entire PlexData share (or Plex media server directory) is there still a need to have Plex backup database files as found in the settings page?

Just so it’s clear, the path /share/PlexData/Plex Media Server
is the same as /share/CACHEDEVx_DATA/.qpkg/PlexMediaServer/Library/Plex Media Server where x is the volume PMS currently exists on (I support migration).
When you jump into the PlexData/Plex Media Server directory, you want to backup everything you see there, and all below it, for a full snapshot (Plex stopped – of course).
The databases, which are under Plex Media Server/Plug-in Support/Databases are only part of what’s needed. You also need Preferences.xml (all the ID numbers for the share’s identity with plex.tv)
I just backup the whole thing. It’s quick and easy. I know that, when it’s restored, I have all my posters and metadata, including any customization posters, etc, I’ve loaded.
I leave the databases backup in their default location (in Databases). For me, it means that if I ever have a corrupt database, I only need do a little renaming magic (move out the old and move over the backup).
That make sense?
As for the default settings on the share and your need to delete it,
I did that because everyone has different settings.
PMS runs as admin on QTS, and, since there is personal information in that share, I wanted to keep security as tight as possible, but have it work, and let each person relax / customize to suite the situation.
That make sense?
I’m struggling with the same error.
Plex version: 1.19.5.3112
QNAP f/w: 4.4.3.1354
Details as requested in previous comments:
Install path:
[/share] # getcfg -f /etc/config/qpkg.conf PlexMediaServer Install_path
/share/MD0_DATA/.qpkg/PlexMediaServer
Share:
[/share] # ls -lah /share/PlexData
lrwxrwxrwx 1 admin administ 17 Jul 23 11:03 /share/PlexData -> MD0_DATA/PlexData/
Start server error:
[/share] # cd /share/MD0_DATA/.qpkg/PlexMediaServer
[/share/MD0_DATA/.qpkg/PlexMediaServer] # ./plex.sh stop
Stopping Plex Media Server…
[/share/MD0_DATA/.qpkg/PlexMediaServer] # ./plex.sh start
./plex.sh: line 46: gpuhal_app: command not found
BusyBox v1.01 (2020.07.01-19:24+0000) multi-call binary
Usage: find [PATH…] [EXPRESSION]
Search for files in a directory hierarchy. The default PATH is
the current directory; default EXPRESSION is ‘-print’
EXPRESSION may consist of:
-follow Dereference symbolic links.
-name PATTERN File name (leading directories removed) matches PATTERN.
-print Print (default and assumed).
-type X Filetype matches X (where X is one of: f,d,l,b,c,…)
-perm PERMS Permissions match any of (+NNN); all of (-NNN);
or exactly (NNN)
-mtime TIME Modified time is greater than (+N); less than (-N);
or exactly (N) days
ERROR: Could not create PlexData share. Further assistance is available in our Support Forums. Continuing without.
Starting Plex Media Server…
Steps completed, as per advice herein:
-have deleted and recreated the PlexData Share (it was not configurable for me, as per ilboss comment above)
-I can access the share as Admin, contents:
Plex seems to be working fine, no other issues with the QNAP or other services running on it, so it’s really just an annoying error that means I get notifications.
Which QNAP model do you have please?
QTS 4.4.3 should have gpuhal_app for all models (as so stated by QNAP).
The errors you’re having, and the info you have shared, is the best feedback I’ve had so far of what’s happening.
If you have some time to work with me on this, I will get this resolved right away.
Did PMS work ok before this version , without errors from plex.sh ?
I have been working on this most of the day and believe I’ve found what’s degenerating and causing the failures in certain cases.
I am working on it now and will spin up a few unsigned (hope that’s ok) test packages to verify I’ve corrected it tonight/tomorrow.
23-Jul-2020
Below please find the temporary (testing) links for PMS 1.20.0.3125-9661fc77c which contain corrections for QNAP systems.
-
Changed handling of
gpuhal_appfor those systems which have had their default system PATH modified or wheregpuhal_appdoes not exist (it should exist on all systems).plex.shno longer errors if not able to findgpuhal_app. If a GPU is installed andgpuhal_appisn’t where it belongs, the GPU will be unavailable. -
Found race condition for first-time upgrades to the PlexData share feature. The race condition, which reported it could not generate the share, will no longer occur. Some systems also saw where recreating the PlexData share would fail or place it in
/(root). This has also been corrected. -
Coincidental to the race condition, corrected a degenerate case where the resultant path to an existing PlexData share would not be correct and result in a failure to create the linkage to
Plex Media Serverin the PlexData share. -
Corrected the creation permissions for PlexData. To protect your personal information (email, Plex token, etc), I create it as ‘unshared’ for anyone other than ‘admin’. This means it’s controllable in the GUI, and not a security risk (open to the LAN by default). However, it will not show in FileStation for any user until permissions are granted in Control Panel - Shared Folders.
-
Cosmetic: Package name was being displayed as “PlexMediaServer” from the QPKG notification system. It has been corrected “Plex Media Server” will now be displayed.
Below are download links to UNSIGNED
Plex package signing can only be done by our build system. These were built in my development environment using the distribution binaries.
** BINARIES REDACTED – FAILED TEST**
Please provide feedback as soon as possible . There is a PMS 1.20.0 update and I’d like to get this included.
Anyone with an Nvidia GPU – PLEASE test ASAP; I’d like as much extra confirmation on this as possible.
#Version: PlexMediaServer-1.19.5.3112-b23ab3896-armv7hf_neon.qpkg
[/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer] # ./plex.sh stop
Stopping Plex Media Server…
[/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer] # ./plex.sh start
./plex.sh: line 46: gpuhal_app: command not found
BusyBox v1.01 (2020.07.01-19:24+0000) multi-call binary
Usage: find [PATH…] [EXPRESSION]
Search for files in a directory hierarchy. The default PATH is
the current directory; default EXPRESSION is ‘-print’
EXPRESSION may consist of:
-follow Dereference symbolic links.
-name PATTERN File name (leading directories removed) matches PATTERN.
-print Print (default and assumed).
-type X Filetype matches X (where X is one of: f,d,l,b,c,...)
-perm PERMS Permissions match any of (+NNN); all of (-NNN);
or exactly (NNN)
-mtime TIME Modified time is greater than (+N); less than (-N);
or exactly (N) days
ERROR: Could not create PlexData share. Further assistance is available in our Support Forums. Continuing without.
Starting Plex Media Server…
#Version: PlexMediaServer-1.20.0.3125-9661fc77c-armv7hf_neon.qpkg
installed over 1.19…
[/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer] # ./plex.sh stop
Stopping Plex Media Server…
[/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer] # ./plex.sh start
./plex.sh: line 46: gpuhal_app: command not found
BusyBox v1.01 (2020.07.01-19:24+0000) multi-call binary
Usage: find [PATH…] [EXPRESSION]
Search for files in a directory hierarchy. The default PATH is
the current directory; default EXPRESSION is ‘-print’
EXPRESSION may consist of:
-follow Dereference symbolic links.
-name PATTERN File name (leading directories removed) matches PATTERN.
-print Print (default and assumed).
-type X Filetype matches X (where X is one of: f,d,l,b,c,...)
-perm PERMS Permissions match any of (+NNN); all of (-NNN);
or exactly (NNN)
-mtime TIME Modified time is greater than (+N); less than (-N);
or exactly (N) days
ERROR: Could not create PlexData share. Further assistance is available in our Support Forums. Continuing without.
Starting Plex Media Server…
to me this looks like the same thing… sadly.
It’s not the same at all. Try again.
I did keep the same filename because of how packaging works.
- There is no ‘find’ command in it at all. I changed the mechanism.
- If there is no
gpuhal_app, it doesn’t test for a GPU.
See below
# Obtain list and count of all installed GPUs.
if [ -e /sbin/gpuhal_app ]; then
TEMPFILE=/tmp/PMS.GPU.$$.TMP
/sbin/gpuhal_app -l > $TEMPFILE
GPU_COUNT=$(wc -l $TEMPFILE | awk '{print $1}')
# Start with the first GPU we find.
CURRENT_GPU=1
# False until we find a supported, and properly configured GPU.
SUPPORTED_GPU=0
# Loop through the list of GPUs, starting with the first, until one first found -or- none found.
while [ $CURRENT_GPU -le $GPU_COUNT ]
do
# Test this card, get the entire line
CANDIDATE=$(head -$CURRENT_GPU $TEMPFILE | tail -1)
# Test if NVIDIA card installed
NVIDIA=$(echo $CANDIDATE | grep NVIDIA | wc -l)
if [ $NVIDIA -gt 0 ]; then
# Extract GPU_ID from candidate info, and get status.
GPU_ID=$(echo $CANDIDATE | awk -F: '{print $1}')
GPU_STATUS=$(/sbin/gpuhal_app -s $GPU_ID)
# Are the GPU Drivers installed?
if [ $(echo $GPU_STATUS | grep driver_installed=1 | wc -l) -gt 0 ]; then
# Is the GPU in QTS mode?
if [ $(echo $GPU_STATUS | grep real_status=2 | wc -l) -gt 0 ]; then
# Get the QPKG package name.
GPU_QPKG=$(echo $GPU_STATUS | sed -e 's/^.*driverqpkg=//' | sed -e 's/,.*$//')
# Get NVIDIA driver-env.sh information. (where all the variables are)
GPU_SH=$(/sbin/getcfg $GPU_QPKG Install_Path -f /etc/config/qpkg.conf)/driver-env.sh
# Translate the name to avoid collision and resolve absolute paths.
DRIVER_ROOT="$(grep DRIVER_ROOT= $GPU_SH | awk -F= '{print $2}')"
DRIVER_ROOT="$(echo $DRIVER_ROOT | sed -e s+\${QPKG_NAME}+$GPU_QPKG+)"
GPU_LD_PATH=$(grep LD_LIBRARY_PATH= $GPU_SH | awk '{print $2}' | awk -F= '{print $2}' | sed -e 's/:$LD_LIBRARY_PATH//')
GPU_LD_PATH="$(echo $GPU_LD_PATH | sed -e s+\${DRIVER_ROOT}+$DRIVER_ROOT+g)"
# We have a viable GPU.
SUPPORTED_GPU=1
else
# Log at INFO level that card is not in QTS mode an unable to be used by PMS.
# User may not want PMS using it and/or user may already have a QSV-compatible CPU.
log_tool -t 0 -a "NVIDIA GPU detected and the drivers are installed. Please switch card to 'QTS' mode for PMS to access it."
fi
else
# GPU detected but no Driver is installed.
log_tool -t 0 -a "NVIDIA GPU detected but the drivers are not installed. Please install the NVIDIA drivers to use this card with Plex Media Server."
fi
# Do we have a viable GPU to use?
if [ $SUPPORTED_GPU -eq 1 ]; then
# Yes, we are done.
break;
fi
# Default to an unsupported GPU, resetting flags along the way.
SUPPORTED_GPU=0
unset GPU_LD_PATH; unset GPU_ID; unset DRIVER_ROOT;
unset QPKG_SH; unset DRV_NAME
# Set next candate.
CURRENT_GPU=$(( $CURRENT_GPU + 1 ))
fi
done
# Remove GPU temp file.
rm -f $TEMPFILE
fi
… that’s what surpised me, so I installed it again.
Here is the outcome:
[/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer] # ./plex.sh stop
Stopping Plex Media Server...
[/share/CACHEDEV1_DATA/.qpkg/PlexMediaServer] # ./plex.sh start
Starting Plex Media Server...
So, that part seems to work now and I am ready for some shut eye time as I must have confused your fixed file with the “official” one.
FYI: TS-231+, QTS4.4.3.1354
I now “only” have to solve the more severe issue Unable to add media, web server seems offline after fresh installation which basically means: i cannot access the setup wizard for some reason
Get some sleep and we’ll tackle it when you wake.
Noting to all:
Manual contacted me in another thread. The updates above solved his probems.
I would appreciate more feedback to raise my confidence level 
Sorry, this Update is a desaster.
I try to update the thinks like in the description.
Finally Qnap automatic deinstalls Plex 
→ This updated cost me lot of hours for nothing and makes me aggresive.
My solution for everybody, install an old version < 1.19.5 and let your fingers from this not tested version.
- QNAP does not “Automatically” uninstall Plex.
- Please tell me what you did to cause this
- I am and have been the developer for QNAP, Synology, and the desktop Linux systems for 2+ years now.
- The only change made between this installation and 1.19.5 is the addition of the PlexData share which provides a linkage to your QPKG data. The data has always resided in the QPKG directory to support the “Migrate To” function. I was not going to break that functionality
