Plex HW Transcoding for Skylake

TrueNAS SCALE Fangtooth 25.04.1 [release]
CPU: i5-6500
GPU: Intel HD Graphics 530
Mobo: Lenovo Z170H4-LA

Try as I might, I cannot seem to get hardware transcoding working for Plex. The server owner has a lifetime Plex Pass. The GPU appears in the transcoding options for Plex. But an error appears when attempting anything other than Direct Play and the Dashboard never lists the transcoding as hardware.

I’m aware that 6th gen won’t play nice with most HEVC 10-Bit files, but it’s not working for a variety of AVC encodes as well.

[Req#76e4b/Transcode] Codecs: hardware transcoding: testing API vaapi for device '/dev/dri/renderD128' (Intel HD Graphics 530)
[Req#76e4b/Transcode] [FFMPEG] - Failed to initialise VAAPI connection: -1 (unknown libva error).

I found this topic regarding Jasper Lake (Jasper Lake N5105 lack of acceleration) which has maybe helped me narrow it down a bit. I assume it has something to do with GuC not being enabled correctly?

The system seems to be showing the correct iGPU when I run this command:

root@truenas[/home/truenas_admin]# lspci -k | grep -EA3 'VGA|3D|Display'           
00:02.0 VGA compatible controller: Intel Corporation HD Graphics 530 (rev 06)
        DeviceName:  Onboard IGD
        Subsystem: Lenovo HD Graphics 530
        Kernel driver in use: i915

Running this seems to show GuC running but Submissions Disabled:

root@truenas[/home/truenas_admin]# dmesg | grep i915
[    0.000000] Command line: BOOT_IMAGE=/ROOT/25.04.1@/boot/vmlinuz-6.12.15-production+truenas root=ZFS=boot-pool/ROOT/25.04.1 ro libata.allow_tpm=1 amd_iommu=on iommu=pt kvm_amd.npt=1 kvm_amd.avic=1 intel_iommu=on zfsforce=1 nvme_core.multipath=N i915.enable_guc=2
[    0.017864] Kernel command line: BOOT_IMAGE=/ROOT/25.04.1@/boot/vmlinuz-6.12.15-production+truenas root=ZFS=boot-pool/ROOT/25.04.1 ro libata.allow_tpm=1 amd_iommu=on iommu=pt kvm_amd.npt=1 kvm_amd.avic=1 intel_iommu=on zfsforce=1 nvme_core.multipath=N i915.enable_guc=2
[   17.876376] i915 0000:00:02.0: [drm] Found SKYLAKE (device ID 1912) display version 9.00 stepping G0
[   17.882868] i915 0000:00:02.0: vgaarb: deactivate vga console
[   17.885640] i915 0000:00:02.0: vgaarb: VGA decodes changed: olddecodes=io+mem,decodes=io+mem:owns=io+mem
[   17.893604] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/skl_dmc_ver1_27.bin (v1.27)
[   18.684457] i915 0000:00:02.0: [drm] [ENCODER:98:DDI A/PHY A] failed to retrieve link info, disabling eDP
[   18.701980] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/skl_guc_70.1.1.bin version 70.1.1
[   18.701985] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/skl_huc_2.0.0.bin version 2.0.0
[   18.727191] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads
[   18.727203] i915 0000:00:02.0: [drm] GT0: GUC: submission disabled
[   18.727209] i915 0000:00:02.0: [drm] GT0: GUC: SLPC disabled
[   18.752936] [drm] Initialized i915 1.6.0 for 0000:00:02.0 on minor 0
[   18.804540] snd_hda_intel 0000:00:1f.3: bound 0000:00:02.0 (ops i915_audio_component_bind_ops [i915])
[   18.805850] fbcon: i915drmfb (fb0) is primary device
[   18.839325] i915 0000:00:02.0: [drm] fb0: i915drmfb frame buffer device
root@truenas[/home/truenas_admin]# cat /sys/kernel/debug/dri/0/gt0/uc/guc_info
GuC firmware: i915/skl_guc_70.1.1.bin
        status: RUNNING
        version: found 70.1.1
        uCode: 205824 bytes
        RSA: 256 bytes
GuC status 0x8003f0ed:
        Bootrom status = 0x76
        uKernel status = 0xf0
        MIA Core status = 0x3
Scratch registers:
         0:     0xf0000000
         1:     0x1
         2:     0x1000
         3:     0x0
         4:     0x40
         5:     0x5d4
         6:     0x19120006
         7:     0x0
         8:     0x0
         9:     0x0
        10:     0x0
        11:     0x0
        12:     0x0
        13:     0x0
        14:     0x0
        15:     0x0

GuC logging stats:
        Relay full count: 0
        DEBUG:  flush count          0, overflow count          0
        CRASH:  flush count          0, overflow count          0
        CAPTURE:        flush count          0, overflow count          0

As the other posts suggests, I’ve tried setting the “i915.enable_guc” parameter to 0, 1, 2, or 3. Option 0 and 1 report an incompatible error. Option 2 and 3 both seem to behave the same.

Does anyone know what could be going wrong? Am I even looking in the right direction on this?