Intel 12th Gen iGPU passthrough for Plex not working

Hello all,

I’ve been trying to get Plex working on the latest version of TrueNAS Scale but I’m failing just on transcoding. Research so far had me pulling down bin files for the firmware from Intel github to make sure TrueNAS has the correct firmware for my iGPU. I’ve passed through the iGPU in docker to the plex container and made sure the “Use hardware acceleration when available” and Use hardware-accelerated video encoding" check boxes have a check in them. intel_gpu_top shows no work being done and the CPU usages does spike up when forcing a transcode from 4k to 1080p. I’m just confused why I can’t get this working as easily as other stand alone docker installs or even Synology. Any help would be appreciated.

CPU: Intel i5 12600k

sudo dmesg | grep i915

Intel firmware bin files pulled from intel-gpu / intel-gpu-firmware on their official github page.

Plex container version is 1.1.10 from the TrueNAS app store. Pulled the official image, not the plex pass version.

I do own a plex pass lifetime subscription. Transcoding was working on previous devices. (Synology 920+ and Beelink running 12th gen Intel)

Anything else needed from me for assistance please let me know!

Are you on Truenas Scale 24.10.x ? This is the first version where hardware transcoding has actually worked for me, I’ve spent endless hours before now trying and failing to get it to work. I have recently deleted the app, upgraded to Scale 24.10.0.2 and then installed a fresh Plex app and the hw transcode now works.
I do believe you need Plex Pass for hardware transcoding (see Using Hardware-Accelerated Streaming | Plex Support) so it is possible that you also need the Plex Pass version of the Truenas app ? Could you install a second copy of the app using the Plex Pass version, I followed the (overly complicated) official instructions here : Plex | TrueNAS Documentation Hub

Hello!

I am running the latest version of TrueNAS Scale (ElectricEel-24.10.1) and I did purchase plex pass for hardware transcoding. My understanding of the different images is that the plex pass image includes the beta versions of PMS for upgrading and testing.

I did deploy another instance of PMS using the plex pass image and followed the guide. Looks like user ID 568 is already created as the apps user/group so I added that to my library for access with no restrictions for testing. In my other instance I used my own user/group which seemed to work for deploying but not transcoding.

I did more digging and I’m noticing that /dev/dri is owned by root/render while in the container it’s owned by root/video2. The version currently working on my Beelink has render inside the LXC and on the host but that’s an LXC. Thought using chmod 777 against /dev/dri would help but didn’t help at all it seems. I’m possibly doing something wrong or misinterpreting permissions between host and container.

I’m at a loss as to why it doesn’t do transcode unless it is a permissions issue in the container.