613 字
3 分钟
一次 Intel iGPU 硬件编码失效的排查:GuC / HuC / firmware 才是关键

前言#

鄙人最近开始优化Homelab架构,打算做算存分离,遂把Jellyfin等容器开始移向我的N5095小主机上,但存在无法硬件编码的情况,排查了一下午,换了许多的镜像都无法成功,故折腾了一翻,才有了这篇文章,旨在帮助后人在再次遇到此类问题时能有些许帮助

正文#

环境#

硬件平台:

  • CPU:Intel Jasper Lake N5095(Gen11 iGPU)
  • 无独显

系统环境:

  • Debian 13 (trixie)
  • Kernel: 6.12.x
  • Docker + docker-compose

服务:

  • Jellyfin(nyanmisaka/jellyfin)
  • 使用 QSV / VAAPI 硬件转码

现象描述#

鄙人在转移服务时,发现同一套Jellyfin配置下,在QNAP-464C2(同样也是N5095)上可以正常运行硬件编码,但是在Debian13上无法播放,FFmpeg日志中只有一句:

FFmpeg exited with code 234

在尝试关闭硬件编码后,一切正常,但性能很烂,QSV解码+软件编码在4K80Mbps HDR10 转码20Mbps SDR色调映射时转码帧率只有20,而且CPU打满影响其他容器,这肯定是无法满足正常需求的 已经确定的是:

  • QSV解码能正常运行
  • /dev/dri/renderD128在容器中是存在的
  • vainfo在容器中也是正常的
  • intel_gpu_top也能正常看到有调用

一切都指向硬件解码是完好的,但硬件编码就是无法正常使用

突破点#

我在QNAP上排查到这一步时:

Terminal window
sudo dmesg | grep -i guc
sudo dmesg | grep -i huc

结果中有部分是这样的:

[ 5.960585] [drm] GuC communication enabled
[ 5.971545] i915 0000:00:02.0: [drm] GuC firmware i915/ehl_guc_33.0.4.bin version 33.0 submission:disabled
[ 5.982316] i915 0000:00:02.0: [drm] HuC firmware i915/ehl_huc_9.0.0.bin version 9.0 authenticated:yes

然后我在Debian上敲了一样的命令,发现什么都没有,感觉完全没有加载 查询了一下,Debian没有安装Intel的非自由固件

解决方案#

  1. 安装固件包
Terminal window
sudo apt update
sudo apt install firmware-misc-nonfree firmware-intel-misc
  1. 装完后查看
Terminal window
ls /lib/firmware/i915/ | grep ehl

应当能看到

ehl_guc_70.1.1.bin
ehl_huc_9.0.0.bin
  1. 修改GRUB,添加i915.enable_guc=3
GRUB_CMDLINE_LINUX_DEFAULT="quiet i915.enable_guc=3"
  1. 更新GRUB并重启
Terminal window
sudo update-grub
sudo reboot
  1. 重启后再次查看dmesg,应当看到类似以下的内容
[ 34.982106] Setting dangerous option enable_guc - tainting kernel
[ 36.726000] i915 0000:00:02.0: [drm] GT0: GuC firmware i915/ehl_guc_70.1.1.bin version 70.1.1
[ 36.742212] i915 0000:00:02.0: [drm] GT0: GUC: submission enabled
[ 36.742214] i915 0000:00:02.0: [drm] GT0: GUC: SLPC disabled
[ 36.726021] i915 0000:00:02.0: [drm] GT0: HuC firmware i915/ehl_huc_9.0.0.bin version 9.0.0
[ 36.741869] i915 0000:00:02.0: [drm] GT0: HuC: authenticated for all workloads

Jellyfin配置参考#

docker-compose.yml:

services:
jellyfin:
image: nyanmisaka/jellyfin:latest
container_name: Jellyfin
privileged: true
network_mode: host
restart: unless-stopped
devices:
- /dev/dri/renderD128:/dev/dri/renderD128
volumes:
- ./config:/config
- ./cache:/cache
- ./media:/media
- /etc/localtime:/etc/localtime:ro
environment:
- TZ=Asia/Shanghai

jellyfin: 图片.png 图片.png

一次 Intel iGPU 硬件编码失效的排查:GuC / HuC / firmware 才是关键
https://blog.zhenxuna.cn/post/11/
作者
与你道晚安
发布于
2026-01-30
许可协议
CC BY-NC-SA 4.0

分享文章

生成精美分享图或复制链接,与更多人分享本文。

继续浏览

换条路线

从其他文章中稳定抽取