Hardware Transcoding on N5105 (Jasper Lake) using Docker

Server Version#: Version 1.28.0.5999
Player Version#: Not sure? I’m using web player with latest plex.
OS: Rocky Linux 8

plex | beignet-opencl-icd: no supported GPU found, this is probably the wrong opencl-icd package for this hardware

ocl-icd and ocl-icd-devel are installed. devices are mapped into the container:

devices:

  • /dev/dri:/dev/dri
  • /dev/dri/renderD128:/dev/dri/renderD128
  • /dev/dri/card0:/dev/dri/card0

Confirmed they exist both outside AND inside the container.

Hardware transcoding is enabled in plex transcoder config and tone mapping is disabled for now because I see other people having some issues with that.

Just to keep you in the loop,

I have access to two N5xxx machines. One works, one doesn’t.

I’m trying to figure out the difference now to get to QA & Engineering.

Thanks. I just bought a new NAS, I guess it’s getting sent back?

I also just tested with plex installed locally, outside of docker, and same issue.

I rolled back to a pre-5.14 kernel (4.18.0) and added the following to lines to my linux boot line in /etc/default/grub:

i915.enable_guc=2 i915.force_probe=4e61

At this point HuC is loading, but I’m using =2 instead of =3 because my hardware does not support GuC, only HuC, according to this:

[ 0.168915] ACPI: Power Resource [FN02]
[ 1.780535] i915 0000:00:02.0: vgaarb: deactivate vga console
[ 1.831744] i915 0000:00:02.0: vgaarb: changed VGA decodes: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[ 1.832267] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/icl_dmc_ver1_09.bin (v1.9)
[ 1.851856] i915 0000:00:02.0: [drm] GuC firmware i915/ehl_guc_62.0.0.bin version 62.0 submission:disabled
[ 1.851868] i915 0000:00:02.0: [drm] HuC firmware i915/ehl_huc_9.0.0.bin version 9.0 authenticated:yes
[ 1.853577] [drm] Initialized i915 1.6.0 20201103 for 0000:00:02.0 on minor 0
[ 1.856313] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[ 2.893317] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes

I believe I can now hardware transcode x264 via plex (single core at 30%), but x265/hevc is still reverting to software transcoding (maxes out all CPU cores still).

jellyfin however is transcoding hevc now. 4k hevc file transcodes to x264 and only uses 30% of a single CPU core.

Disabling tone mapping and I can now transcode HEVC with ~10% CPU utilization.

The solution was:

Downloading the latest firmware, for me it was ehl_guc_70.1.1.bin from the linux firmware git repo and copying to /usr/lib/firmware/i915

Add the following to the end of GRUB_CMDLINE_LINUX in /etc/default/grub: i915.enable_guc=2 i915.force_probe=4e61

rebuilding initramfs with grub2-mkconfig

Enable transcode but disable HDR tone mapping.

If you’re using PMS 1.28.1, now roll back to 1.28.0.

I have reproduced a regression with HDR tone mapping (when enabled) in 1.28.1 which causes all hardware transcoding to fail.

Thanks, @ChuckPa. I can confirm that reverting to 1.28.0 did allow me to re-enable HDR tone mapping and it is able to hardware transcode now. CPU utilization is almost identical.

Specifically I reverted to this tag from the plexinc/pms-docker image:
1.28.0.5999-97678ded3

GOOD NEWS!

TO ALL FOLLOWING HERE:

Intel CPUs including AlderLake :+1:

Docker PMS is no longer needed for Hardware HDR tone mapping

You can

  1. stop docker plex
  2. install PMS 1.29.1 ,
  3. Let the database update
  4. Return to using the native package

What about people who want to use the docker image? This is not resolved for me in that case. Re-enabling HDR Tone Mapping results in all four cores at 100% CPU. Disabling HDR tone mapping and CPU utilization never breaks 20%. Specifically I am on 1.29.0.6244 using plexinc/pms-docker.

Try with 1.29.1.6260, that should do it. 1.29.0 doesn’t have it.

There are not yet any 1.29.1.x tags on docker hub for pms-docker.

image: plexinc/pms-docker:plexpass

That worked - thanks

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.