Help with hardware transcoding in plex on unraid (using intel® celeron® n5095)

Hi there,

I am relatively new to Unraid as well as Plex and am experiencing challenges with setting up hardware transcoding in my Plex Docker container. Despite various attempts and configurations, it seems like hardware transcoding is not functioning as expected, and I would greatly appreciate any guidance or suggestions.

System Details:
Unraid Server Version: 6.12.4
Plex Version: 1.32.7.7621
Docker Repository: lscr.io/linuxserver/plex
Hardware: Terramaster F4-423 with an Intel® Celeron® N5095 processor
Storage: Using an SSD cache to enhance performance
Installed Plugins: GPU Statistics and intel-gpu-top

Configuration:
Added Extra Parameters for Plex Docker Container: --device /dev/dri:/dev/dri
Added the /dev/dri device in Plex Docker Container settings
Verified permissions for /dev/dri are set to crwxrwxrwx
Active Plex Lifetime Pass with hardware acceleration enabled in Plex settings
Manually set HardwareDevicePath to /dev/dri/renderD128 in Plex container preferences.xml
lspci -vnn output confirms that the Intel JasperLake UHD Graphics is recognized and the i915 driver is in use

Issues Encountered:
CPU load reaches 100% during transcoding, suggesting possible fallback to software transcoding
No “(hw)” indicator in the Plex dashboard during transcoding processes

I am looking for advice on ensuring that hardware transcoding is properly utilized in my setup. Is there a step I might have missed, or a specific configuration that needs adjustment? Any insights, especially considering my relative newness to Unraid, would be incredibly helpful.

Thanks in advance!

It’s prudent to differentiate between hw transcoding and tone mapping as they use different capabilities of the GPU and drivers (latter uses opencl).

If you’re trying to transcode hdr content and have tone mapping turned on (iirc on by default in Plex), and hw tone mapping (opencl) fails, the entire transcode session falls back to software.

To properly troubleshoot, attempt to transcode sdr content (non-hdr 1080p or 720p) to a lower bandwidth by changing the quality in the web player and see if that works. If it works, hw transcoding is working.

Then you can test hdr content to see if tone mapping (opencl) is the issue. If so, that’s an issue with the upstream project as Plex controls the opencl drivers shipped in the package we install.

Thanks for the response. I ended up changing the quality to 480p from a 1080p video, but it still shows Transcode without the hw.

When i go to plex settings > transcoder i do see that it sees the hardware transcoding device because it shows JasperLake [UHD GRAPHICS].

Do you think it could be a permissions issue? On my unraid i only have it setup as root without users. Not sure if that makes a difference?

You probably want to check that iGPU can actually decode av1 first.

Jasper lake does not support hw decode of av1

Sorry, i forgot to check that first. I also did try HEVC and H.264

The device setting and the perms look good. Give this a try:

Other than that, Plex may be having issues with jasper lake because we got another similar report in discord today

Did you mean trying this?

sudo mkdir -p /etc/modprobe.d
sudo sh -c “echo ‘options i915 enable_guc=2’ >> /etc/modprobe.d/i915.conf”

Besides the above, i have tried the exact passthrough configuration with plex, but not jellyfin

Edit: i tried the above for i915.conf and it still doesn’t work. I only tried it for plex though, not jellyfin.

Would it help if i enabled or disabled anything in GPU statistics? I saw a video tutorial related to that, but it looks a bit different since then and i wasn’t sure if i should touch anything with that other than that i enabled the JasperLake like in this photo.

Yes. With that all your gpu settings look correct. If it’s still not working, you should report it to Plex as they control the rest of the process including the gpu drivers included in the image.

I know nothing about that gpu stats thing.

Thanks the help, how would i go about reporting it to plex?

I will try and mess around with getting it to work with Jellyfin later tonight or tomorrow to see if the issue is with plex or not.

I also found this, but hes running ubuntu. I tried running update-initramfs -u after the i915.confi, but it says command not found. Im guessing that’s specific to his kernel?

I also have the same issue with hardware transcoding on Intel Jasper Lake hardware and have pretty much tried everything you have with no success. I’ve made a post on the Plex forums to hopefully alert someone at Plex to this: Hardware Transcoding Broken With Intel 11th Gen Jasper Lake - Plex Media Server - Plex Forum

One thing you can try if you haven’t already (tried last night, but still did not work for me though) is going into your BIOS and setting your primary graphics to intel GPU instead of AUTO. I read that it worked for some people.

I managed to get hardware transcoding working!

First edit syslinux.cfg on the Unraid USB drive: nano /boot/syslinux/syslinux.cfg

Add the follow where I have shown below “append i915.enable_fbc=1 i915.enable_guc=2” and save your changes.

label Unraid OS
  menu default
  kernel /bzimage
  append i915.enable_fbc=1 i915.enable_guc=2
  append initrd=/bzroot

As the Unraid file system is loaded in to ram we want to create and edit an i915.conf in /boot/config/modprobe.d/ - this will persist though reboots.

nano /boot/config/modprobe.d/i915.conf

Add the following to i915.conf and save: options i915 enable_fbc=1 enable_guc=2

Reboot and the i915.conf will be present in /etc/modprobe.d/i915.conf

Add /dev/dri as a device to the Plex Docker if not already done.

Hardware transcoding will now work :slight_smile:

hwtranscode

I had actually tried this before, however I’d edited /boot/syslinux/syslinux.cfg and /etc/modprobe.d/i915.conf then rebooted, so my /etc/modprobe.d/i915.conf config was lost due to the Unraid filesystem been loaded completely in ram, which I did not realise at the time.

Thanks so much, this worked for me too!

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