Hardware transcoding on Qnap TVS-672XT

Server Version#:1.18.2
Player Version#:

Hi
I have a Qnap TVS -672XT and I just bought a Nvidia P2000 Quadro .
As for today I cannot really use this card . I have the latest available Nvidida Driver installed
and I am not a fan running Plex in a Docker Station .
Nvidida Driver 2.1.3
NVidida Kernel Driver 4.4.1.1117

Will there be a possibility in future or maybe already now , Or should i sell my P2000

Any help il much appreciated.

Thx

Fuuss

This is because of the nVidia_GPU_DRV package itself.

When the transcoder was updated, the API library required updating as well.

I have been in constant contact with QNAP regarding the driver version.
They have updated the driver to be compliant with PMS’ needs.

They have also informed me he new NVIDIA_GPU_DRV package will be available in QTS 4.4.2 when released.

4 Likes

Ah ok , Thank you for the reply

So even that my qnap has already an Intel Integrated card il will be in future possible to use the GPU P2000 ?

Do you maybe know when QTS 4.4.2 will be released

I seem to be having issues with the GPU in virtualisation station also. QTS 4.4.1 seems to be a complete write off :frowning:

1 Like

Hi. Any updates on 4.4.2 release? I keep checking the downloads page and am disappointed every time. I am in a very similar position as OP. I have a TVS-672N with a P2000. I am running QTS 4.4.1.1146 and nVidia GPU driver 2.1.3, kernel driver 4.4.1.1146. PMS is 1.18.3. I have plex pass and have use hardware acceleration when available. But when I look in the hardware section of the qnap, I can only set the gpu to container station or virtualization station. I don’t see the mythical QTS mode that is mentioned in the feature request thread that I had been reading. I’m just getting my plex server up and running, and am so far really enjoying it. Just hoping to get the gpu issue figured out soon. Fingers crossed.

The latest word I have from QNAP is that QTS 4.4.2 release date keeps slipping.

I unfortunately don’t know more. What little I do know is 2nd hand.

We all have to wait… unfortunately.

I personally haven’t heard the 4.4.2 is going to add support for Nvidia cards in QTS mode for systems with embedded GPU’s. I just know it is going to update the Nvidia drivers version as part of the release.

The Nvidia driver version isn’t (to my knowledge) what is preventing Nvidia cards to be supported under QTS mode for systems with the embedded GPU’s such the x72XT family.

Oh crap. I understood it would also work with the embedded gpu

Plex hw transcoding already works with the embedded x72xt GPU as long as you have plexpass.

You can use the quadro card for transcoding by using a win10 VM with GPU pass through today as well.

Just installed 4.4.2 and the latest gpu driver from the app center. Still unable to set my p2000 to qts mode on my TVS-672N. I only see virtualization and container station. No QTS mode :disappointed:
I really don’t want to run a w10 vm within my qnap. If I wanted to do that, I would have just purchased a used blade server off ebay and ran plex from there, or just built a custom system to drop half a dozen hard drives into. I don’t get why it isnt supported…

You would need to discuss that with QNAP. Qnap is the one who controls whether the Nvidia card will be exposed in ā€œQTS Modeā€ or not. Plex leverages that QTS Mode exposure.

There is a potential workaround you could do via Container Station, but it is not an officially supported ā€œplexā€ deployment option.

https://gist.github.com/weshofmann

To those still watching, looks like the 19 May update to QTS (4.4.2.1310) has allowed me to use my p2000 in QTS mode on my TVS-672N. I haven’t tried transcoding with the card yet, but will try later this evening.
@fuuss if you are still lurking, try this on your 672XT, it may work as well.

Yes , thank you for pointing this out , QTS Mode is available . ( Just Info you need to reboot QNAP when changing Mode )

Great news

Isnt the UHD 630 in this box pretty much as good or better than most nvidia alternatives anyways? Is there a good reason for adding an external GPU here? Asking because Im considering this NAS myself

I tried some transcoding but it seems it still on CPU :-/

gpuhal_app -l
0:Intel Corporation:8th Gen Core Processor Gaussian Mixture Model:internal:2
1:NVIDIA Corporation:GP106GL [Quadro P2000]:external:7

So how do I see where the non using of the Quadro Cards come from

Does anybody know ? can I provide some logs ?

1 Like

Here is the actual plex.sh code I use to determine if a usable Nvidia card exists in the system.

    # Obtain list and count of all installed GPUs.
    TEMPFILE=/tmp/PMS.GPU.$$.TMP
    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=$(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
      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 ))

    done

    # Remove GPU temp file.
    rm -f $TEMPFILE

The key points:

  1. Candidate NVIDIA
  2. driver_installed=1
  3. real_status=2 (this is the ā€˜QTS Mode’ assignment)

It then obtains the path name to the driver library files and adds the path to PMS’ startup.

1 Like

Thank you for the reply

Ok i tried your code and created a script and echo a little bit the result for me it’s seems good but am I missing something
GPU Status :

active_status=2,real_status=2,driverqpkg=NVIDIA_GPU_DRV,driver_installed=1,in_used=HD_Station,transcode=1,display=1,pcie_slot=1,pcie_vp=1

So any idea why Hardware encoding does not work ?

I disabled HD Station to be sure
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

Even after restart same No HW Decoding from GPU

I dont mean to digress, but isnt the uhd630 performing well on this NAS, since you are trying to use the P2000?

From what I saw on YouTube the P2000 has more power so you can transcode more streams at once.