N4500/N5095/N5105为Ubuntu启用GuC/HuC功能

我的迷你PC采用的N4500处理器,在ubuntu22.04尝试很多办法都没有办法让jellyfin支持硬解,最后通过这个方法启动了视频硬解功能

ubuntu22.04安装后,默认的内核版本为5.15,而这个版本内含一个bug,导致11代IntelCPU无法正常开启硬件解码

先安装显卡驱动和vainfo

ubuntu直接安装vainfo,系统会自动安装相关依赖包

1
apt install vainfo

我们直接使用最新的kernel 6.1 lts内核

https://kernel.ubuntu.com/~kernel-ppa/mainline/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mkdir /tmp/kernel && cd /tmp/kernel
wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.1.23/amd64/linux-headers-6.1.23-060123-generic_6.1.23-060123.202304061140_amd64.deb

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.1.23/amd64/linux-image-unsigned-6.1.23-060123-generic_6.1.23-060123.202304061140_amd64.deb

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.1.23/amd64/linux-modules-6.1.23-060123-generic_6.1.23-060123.202304061140_amd64.deb

wget https://kernel.ubuntu.com/~kernel-ppa/mainline/v6.1.23/amd64/linux-headers-6.1.23-060123_6.1.23-060123.202304061140_all.deb

dpkg -i *.deb

update-grub

reboot

重启之后,用uname检查当前系统内核是否升级成功 当然再检查当前内核是否包含驱动

1
2
3
4
5
6
#检查系统内核版本
uname -a
# 检查是否包含GuC/HuC模块
ls -l /lib/firmware/i915/ehl_guc_69*
ls -l /lib/firmware/i915/ehl_huc_9*
ls -l /lib/firmware/i915/icl_dmc_ver1_09*

开机引导添加参数,支持该模块

i915.enable_guc=1 ## 启用GuC提交和电源管理 i915.enable_guc=2 ## 只启用HuC认证 i915.enable_guc=3 ## 将两个功能结合在一起

在内核4.16之前,HuC认证是通过设置:

i915.enable_guc_loading=1 ##4.16之前使用此参数开启huc认证

1
2
3
4
5
6
7
8
9
10
11
12
nano /etc/default/grub
# 增加或者替换GRUB_CMDLINE_LINUX_DEFAULT
# GRUB_CMDLINE_LINUX_DEFAULT="intel_iommu=on i915.enable_guc=3 quiet"

update-grub

grub-mkconfig -o /boot/grub/grub.cfg

reboot

# 安装成功后查看GuC和HuC的状态
journalctl -b -o short-monotonic -k egrep -i "i915dmrdmcguchuc"

再通过Podman来运行jellyfin设置好硬解就可以正常使用

1
podman run -d --cgroup-manager=systemd  --volume /mnt:/mnt/media --net=host --restart=unless-stopped --device /dev/dri/renderD128:/dev/dri/renderD128 --device /dev/dri/card0:/dev/dri/card0 jellyfin/jellyfin