常见的群晖机器,例如 DS920+,DS918+,系统内核一直是 4.4 的,而这个内核自带的核显驱动最高支持到 9 代,支持的CPU型号分别是J3455(DS918+)和J4155(DS920+)。而目前DIY搭建NAS系统有了更多的低功耗平台选择,如发布于2021年的Jasper Lake平台系列:N5095,N5105,N6005等。这些平台的集成显卡在群晖NAS的4.4内核里并不能缺省支持,因此也无法实现在Emby/Jellyfin/Plex等媒体服务器的硬解和其它的一些高级功能。本文介绍一种在使用DS920+和DS918+镜像的黑群晖系统上快速制作核显补丁支持硬解的方法。其它的配置本人未经测试,请谨慎。
下载和备份核显驱动module i915.ko
在群晖系统里,驱动程序模块ko一般在/usr/lib/modules目录下。将这个目录下的i915.ko文件(核显驱动模块)备份一下以防意外。
sudo cp /usr/lib/modules/i915.ko /usr/lib/modules/i915.ko.orig
启动DSM File Station,找一个目录,一会儿需要用这个目录转存i915.ko。我这里选择的是我用户主目录下的temp目录。选中这个目录,单击鼠标右键,选择“属性”。
在属性对话框中,记下位置文本框中显示的绝对路径。
返回到NAS的命令行,将i915.ko拷贝到上面的路径。
sudo cp /usr/lib/modules/i915.ko /volume2/homes/hyang/temp
这时候temp目录下就有i915.ko文件了。
鼠标右键单击下载,将i915.ko文件下载到本地。
下载SynologyVGPUTools
下载SynologyVGPUTools到本地。本工具exe文件大小为2.412KB,仅支持Windows操作系统。
SynologyVGPUTools工具包下载地址请访问本博文原文:NAS系统折腾记 | 黑群晖系统快速制作英特尔核显补丁支持硬解 - HY's Blog
查询iGPU设备型号
通过浏览器访问英特尔的产品资料查询网站:https://ark.intel.com。
在“Search Specification”输入框中输入NAS的CPU型号。我的NAS用的是N6005 CPU,输入N6005,点击放大镜查询。
在查询的结果页面,选择GPU Specification,记录下Device ID的内容。我的GPU Device ID是0x4E71。
制作核显补丁
选中SynologVGPUTools.exe文件,单击鼠标右键,选择“以管理员身份运行”。
这时候会弹出一个对话框选择核显驱动的ko文件。选中我们刚才从File Station下载到本机的i915.ko文件,点击“打开”。
输入刚才记录下的Device ID,我的Device ID是0x4E71,所以输入4E71,按回车。
再次输入Device ID以确保无误,然后回车。
这时候核显驱动的补丁就已经成功生成,放在C:盘的根目录下了。
回到DSM File Station,将C:盘根目录下的i915.ko文件上传回到temp目录下,选择“上传-覆盖”以覆盖掉原来的i915.ko。
启用核显补丁
然后把这个补丁的ko文件拷贝回/usr/lib/modules目录,以替换系统原有的的核显驱动,并重新启动NAS以启用补丁后的核显驱动。
sudo cp -f /volume2/homes/hyang/temp/i915.ko /usr/lib/modules
sudo chmod 644 /usr/lib/modules/i915.ko
sudo reboot
重启后验证核显驱动加载是否正常。在命令行输入如下命令:
sudo -i
ls /dev/dri
cat /sys/kernel/debug/dri/0/i915_frequency_info
如果能看到红框中的信息则恭喜你,核显驱动工作正常,可以去Emby/Jellyfin/Plex启用硬解了。本文以开源的Jellyfin为例,Emby和Plex应该跟Jellyfin类似。
Jellyfin docker启用硬解
首先,Jellyfin docker启动的时候需要把/dev/dri设备映射到docker里,DSM缺省的container manager是不支持这样的操作的。可以用portainer或者命令行创建docker container。这里以命令行为例。
sudo docker run -d \
–name jellyfin_i915
–volume /volume1/docker/jellyfin_i915/config:/config
–volume /volume1/video:/mnt/video
–device /dev/dri:/dev/dri
–publish 8096:8096
–publish 8920:8920
–env UID=0
–env GID=0
–env GIDLIST=0
jellyfin/jellyfin:latest
登录Jellyfin server的管理界面,选择播放->转码->硬件加速,选择“Video Acceleration API (VAAPI)”,在“启用硬件解码”下面,勾选上。
VA-API设备设置“/dev/dri/renderD128”(缺省应该设置好了),在“启用硬件解码”下面勾选所有适用的选项,并保存。
打开Jellyfin客户端(或者其它客户端播放软件),播放一个高清视频。我用ios infuse播放阿凡达水之道。
在群晖DSM的资源监控里看到,CPU占用非常低,仅为8%,说明硬解工作正常了。
Emby如果需要支持硬解的话,需要购买Emby Premiere会员。如果仅出于学习目的的话,可以参考我的另外一篇博文使用Emby server开心版:NAS系统折腾记 | Emby搭建家庭多媒体服务器 - HY's Blog。