[TUTORIAL] Plex + hw transcoding, LXC and Jasper Lake iGPU passthru

I finally managed to make hw transcoding work with Proxmox and Plex in an LXC container with Jasper Lake CPU. This has always been relatively easy with other hardware, but these Jasper Lake CPU’s (N5105, N6005 etc.) have been causing me headaches previously. But no more! :)
(Basically this is a combination of many discussions within this forum, some chinese forums and Plex's forums.)

1. Update kernel within Proxmox host to 5.19:
apt update apt install pve-kernel-5.19

2. Avoid simplefb claiming iGPU:
nano /etc/default/grub
add initcall_blacklist=sysfb_init
within GRUB_CMDLINE_LINUX_DEFAULT after quiet

3. Enable GUC in Proxmox host:
echo “options i915 enable_guc=2” >> /etc/modprobe.d/i915.conf

4. Download missing ehl_gux_70.1.1.bin to /lib/firmware/i915 within Proxmox host:
cd /lib/firmware/i915 wget https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/plain/i915/ehl_guc_70.1.1.bin
Note: this may be unnecessary - I've had one installation where this file already existed, but also one where manual download was needed.

5. Make sure iGPU is passed thru to LXC-container with following lines with it’s .conf -file:
lxc.cgroup2.devices.allow: c 226:0 rwm lxc.cgroup2.devices.allow: c 226:128 rwm lxc.cgroup2.devices.allow: c 29:0 rwm lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir lxc.mount.entry: /dev/dri/renderD128 dev/renderD128 none bind,optional,create=file

6. Within LXC-container enable GUC (maybe unnecessary):
echo “options i915 enable_guc=2” >> /etc/modprobe.d/i915.conf


7. Within LXC-container install Intel’s non-free drivers:
apt install intel-media-va-driver-non-free

8. Install latest Plex 1.29.x or higher, enable hw transcoding:
wget https://artifacts.plex.tv/plex-media-server-experimental/1.29.2.6273-2b xx xx x x.deb dpkg -i plexmediaserver_1.29.2.6273-2b xx xx x x.deb

Note: Enabling HDR tone-mapping may still cause “AVHWDeviceContext … No matching devices found.” error within Plex. This shouldn't be happening, however wven with N6005 the difference on CPU load with or without tone mapping with 4K HDR video is very low: 3-4% without tone mapping for single 4K movie, 5-7% with tone mapping on.

Great tutorial. Unfortunately, my Plex still says "transcoding" and not "hw-transcode." The only difference I have with you is my CPU is i9-11900k, but still should be the same process.
 
I can report that on fresh proxmox 8 with these mods installed acording to guide

echo “options i915 enable_guc=2” >> /etc/modprobe.d/i915.conf
echo 'options i915 enable_guc=3' >> /etc/modprobe.d/i915.conf
echo 'options i915 enable_fbc=1' >> /etc/modprobe.d/i915.conf
GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"

I created a new LXC with tteck script from https://github.com/tteck/Proxmox

Debian 12 privileged LXC

Plex HW transcode working out of box on N5105 with no need to modify the LXC conf

Thanks alot for pointing me in the right direction

Cheers
Thanks. Likewise, I couldn't get the OP tutorial to work after a solid couple of hours of farting about, but the tteck scripted container worked immediately out of the box. Would love to know what, exactly, it does differently, but I can't be bothered as it's now working fine :)

In short, another recommendation for this approach.
 
  • Like
Reactions: tteckster
hello,

is this:
echo “options i915 enable_guc=2” >> /etc/modprobe.d/i915.conf echo 'options i915 enable_guc=3' >> /etc/modprobe.d/i915.conf echo 'options i915 enable_fbc=1' >> /etc/modprobe.d/i915.conf GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on"
still necessary or is tteck plex script enough?
I have a n5105 and want to run plex.
 
Last edited:
fighting again to get back Hardware acceleration in LXC after proxmox reinstall
found this article which help to understand

Code:
dmesg | grep -e GuC -e HuC
[    5.873215] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/ehl_guc_70.1.1.bin version 70.1.1
[    5.873228] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/ehl_huc_9.0.0.bin version 9.0.0
[    5.888698] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads

working again :)
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!