[Solved] No HW transcode (again) on Asustor AS6704T (N5105 CPU)

Server Version#: 1.32.1.6983 (Docker)
Player Version#:

Hello,
I have again a problem with HW decode on my Asustor Nas (AS6704T) with N5105 CPU.
Whatever I tried, all transcode doesn’t use HW , and the CPU is overloaded, the stream is shuttered, or halted.

I run PMS on a docker installation.
I set properly the /dev/dri device in my docker-compose.yml:

    devices:
      - /dev/dri:/dev/dri #optional

For a 4K HDR media, transcoded to SDR 1080p 8M, Plex show me this:
image
And tautulli :
image

In the log I’ll provide bellow, I can see :

Apr 24, 2023 10:11:08.214 [140325446843192] Débogage — [Req#960/Transcode/m0kmyppsjef80luo5x2o4rnf] TPU: hardware transcoding: enabled, but no hardware decode accelerator found

Why is that happening again?

My Asustor ADM version is 4.2.1.RGE2, and I’m pretty sure this was this update (several days ago), that broke the HW transcode…

How can I get back the HW transcode capability?

Thanks for your help.


The log file (expunged from personal infos):
plex_log_debug.log (256,4 Ko)

As I dig deeper into this problem, I think more and more that the problem is the same as this one :
https://forums.plex.tv/t/no-hw-on-asustor/814130/32

I ran some test by changing the devices section in my docker-compose.yml.
I tried this:

    devices:
      - /dev/dri/card0:/dev/dri/card0
      - /dev/dri/renderD128:/dev/dri/renderD128

But no effect…

But the /dev/dri/card0 on my AS6704T is a symbolic link to /dev/card0 which had this permissions :

crw-r--r--    1 root     root      226,   0 Apr 18 12:02 card0

So I ran a chmod 777 on it, and I set this:

    devices:
      - /dev/card0:/dev/dri/card0
      - /dev/dri/renderD128:/dev/dri/renderD128

and now inside my plex container I have:

crwxrwxrwx 1 root root 226,   0 Apr 24 17:57 card0
crwxrwxrwx 1 root root 226, 128 Apr 24 17:57 renderD128

But unluck I am, there is no results… still transcode without using HW…

I wanted to eliminate this version of Plex, so I installed the same docker-compose.yml (except for the volumes, and only the device /dev/dri on my Synology DS920+.
And, HW transcoding is working fine there !!!

That’s where I find myself thinking about a same issue we had in the past with Asustor NAS, and more specifically with N5105 CPU.

Is there anyone here can confirm this? Or have a solution?

Thanks in advance.

@ChuckPa : is there something I can do to provide more informations?
Can you reproduce this problem?

@Pili

We’ve been working on this. (worked all this past weekend on it)

  1. We’ve updated the Intel Media Driver (IHD) to be their current version.
  2. Tonemapping still fails
  3. When we turn off ToneMapping, it works.

We’re still trying to figure out if it’s a bug in the Intel Media Driver or chip really doesn’t have OpenCL capability.

I can give you the engineering build to try.
That build will have the updated CPU definitions built into it (for JasperLake)
You will get transcoding. You won’t get tone mapping.

1 Like

Hello @ChuckPa ,
Thanks for your answer.
I’m willing to try you engineering build :grinning:
It will be better than what I currently have.
PS : currently, with or without tone mapping checked, I have no transcoding.

I’m waiting for your build :innocent:

Thanks again

PS 2: I also opened a ticket to Asustor support. When I get an answer from them, I’ll let you know.

@Pili

This build is “rough around the edges”. We’ve had a few cases where it didn’t work at first but then started to work normally. We’re unsure why. We’re still working on it.

It has new Intel Media Driver, new Intel Compute Runtime, moves drivers from the Plex /usr/lib…lib/dri directory to under APP_DATA/Drivers (where they belong)

Thanks @ChuckPa .
Do you have the same for a docker installation ?

The only thing I have is the one DEB file you install from inside the container at the command line

  1. Download
  2. Put the DEB file where /config can see it once inside
  3. docker exec -it container_name bash
  4. dpkg -i /config/filename.deb
  5. Restart container
1 Like

Thank you very much.
I’ll grab it and install it.
I’ll get back to you as soon as I ran some tests.

@ChuckPa

Installation done:

root@Asustor-AS6704T:/# dpkg -i /config/plexmediaserver_1.32.2.6997-416face2b_amd64.deb
(Reading database ... 10517 files and directories currently installed.)
Preparing to unpack .../plexmediaserver_1.32.2.6997-416face2b_amd64.deb ...
PlexMediaServer install: Pre-installation Validation.
PlexMediaServer install: Docker detected.  Preinstallation validation not required.
Unpacking plexmediaserver (1.32.2.6997-416face2b) over (1.32.1.6999-91e1e2e2c) ...
Setting up plexmediaserver (1.32.2.6997-416face2b) ...
PlexMediaServer install: Docker detected. Postinstallation tasks not required. Continuing.

But after that, I only get a 404 Not Found :sweat_smile:

If I restart the container, It re-download the 1.32.1.6999-91e1e2e2c version.
And after that, Plex is available again. But without your version.

I’ll test the pkg, directly into ADM.

edit :
With the .apk installed in ADM, it doesn’t work too.
THis is with or without tone mapping :
image

Or with a x264 video :
image

It did that to me too.

I stopped the service first. /plex_service.sh -d

then did the install

Then it was ok

dont know what changed in the docker code :roll_eyes:

I can try the /plex_service.sh -d command.

@Pili

Make 100% certain that Tone Mapping is turned OFF.

The whole library got replaced / upgraded. We’re still working on it.

We are not 100% certain but this might be an Intel driver bug because documentation and their code output don’t match

Yes, in my attempt with the apk in ADM, I. unchecked Tone Mapping.

Where is the plex_service.sh script ?

fair enough. we’re closer but not there yet. :frowning:

On the github Intel page, you can see where they have no expectation of performance / compliance for these processors

-NOR-

do they show where they were tested which is concerning.

/plex_service.sh

I cannot find any script in root directory…
I’m using Linuxserver image. It’s probably because of this… :sweat_smile:
But I cannot find it anywhere in the container.

root@BabyNUC:~# docker container list
CONTAINER ID   IMAGE                       COMMAND   CREATED          STATUS                    PORTS     NAMES
976e6ef64d4d   plexinc/pms-docker:latest   "/init"   13 minutes ago   Up 13 minutes (healthy)             Plexinc
root@BabyNUC:~# docker exec -it Plexinc bash
root@BabyNUC:/# ls /
bin     data  healthcheck.sh  installBinary.sh  lib64    media  opt              proc  sbin  tmp        var
boot    dev   home            lib               libexec  mnt    plex-common.sh   root  srv   transcode  version.txt
config  etc   init            lib32             libx32   nas    plex_service.sh  run   sys   usr
root@BabyNUC:/# 

@Pili

I found the solution.

  1. Get into the container

  2. dpkg -i filename.deb (install the deb file)

  3. STOP the container

  4. external to the container, go to where /config maps into the file system

  5. Edit the file version.txt

  6. Change the version value to match the build you installed.

It will look like this:

root@BabyNUC:/# cat version.txt 
version=1.32.2.6997-416face2b
plex_build=linux-x86_64
plex_distro=debian
root@BabyNUC:/#

this will lock the container at this build.

Inside the container I got this :

root@Asustor-AS6704T:/# ls /
app  bin  boot  command  config  data  defaults  dev  docker-mods  etc  home  init  lib  lib32  lib64  libx32  media  mnt  opt  package  proc  root  run  sbin  srv  sys  tmp  transcode  usr  var
root@Asustor-AS6704T:/# ll /
total 44
drwxr-xr-x   1 root root    292 Apr 26 21:38 ./
drwxr-xr-x   1 root root    292 Apr 26 21:38 ../
drwxr-xr-x   1 abc  users     0 Apr 19 01:30 app/
lrwxrwxrwx   1 root root      7 Apr 19 01:29 bin -> usr/bin/
drwxr-xr-x   1 root root      0 Apr 18  2022 boot/
drwxr-xr-x   1 root root   5046 Apr 19 01:30 command/
drwxr-xr-x   1 abc  users   108 Apr 26 21:00 config/
drwxr-xr-x   1 root root    104 Apr 26 21:38 data/
drwxr-xr-x   1 abc  users    58 Apr 26 22:23 defaults/
drwxr-xr-x   6 root root    360 Apr 26 21:38 dev/
-rwxr-xr-x   1 root root      0 Apr 26 21:38 .dockerenv*
-rwxr--r--   1 root root  16044 Jan  1  1970 docker-mods*
drwxr-xr-x   1 root root   1482 Apr 26 21:38 etc/
drwxr-xr-x   1 root root      0 Apr 18  2022 home/
-rwxr-xr-x   1 root root    907 Aug 29  2022 init*
lrwxrwxrwx   1 root root      7 Apr 19 01:29 lib -> usr/lib/
lrwxrwxrwx   1 root root      9 Apr 19 01:29 lib32 -> usr/lib32/
lrwxrwxrwx   1 root root      9 Apr 19 01:29 lib64 -> usr/lib64/
lrwxrwxrwx   1 root root     10 Apr 19 01:29 libx32 -> usr/libx32/
drwxr-xr-x   1 root root      0 Apr 18 16:19 media/
drwxr-xr-x   1 root root      0 Apr 18 16:19 mnt/
drwxr-xr-x   1 root root      0 Apr 18 16:19 opt/
drwxr-xr-x   1 root root     30 Apr 19 01:30 package/
dr-xr-xr-x 472 root root      0 Apr 26 21:38 proc/
drwx------   1 root root     56 Apr 26 22:28 root/
drwxr-xr-x   1 root root    168 Apr 26 21:38 run/
lrwxrwxrwx   1 root root      8 Apr 19 01:29 sbin -> usr/sbin/
drwxr-xr-x   1 root root      0 Apr 18 16:19 srv/
dr-xr-xr-x  12 root root      0 Apr 24 21:00 sys/
drwxrwxrwt   1 root root   1156 Apr 26 22:22 tmp/
drwxr-xr-x   1 abc  users    18 Apr 26 21:57 transcode/
drwxr-xr-x   1 root root    116 Aug 29  2022 usr/
drwxr-xr-x   1 root root     90 Apr 19 01:30 var/

(Remember, I’m using Linuxserver Image).

I try to do this

But I don’t have any file named version.txt.
I can create it and see if it does any effect…