如意云-莘家小站
  • 首页
  • 友链
  • 关于
如意云-莘家小站
这是一个记录生活和技术学习的个人博客.
  1. 首页
  2. 网络与系统
  3. Emby
  4. 正文

记录:unraid7.0.1使用dg1显卡,加速emby硬解码

2025年3月13日 3153点热度 1人点赞 0条评论

索引

Toggle
  • 更新
  • 前言
  • 魔改BIOS
  • 修改bios设置
  • 成功进入系统后
    • 1. 替换社区版内核
    • 2. 修改加载的驱动。
    • 3. 直通给容器
  • 构建定制版emby运行环境
  • 其他的细节
  • 用到的文件
  • 可能存在的问题
  • 参考
  • 致谢

更新

2025.6.16:群友打包做了镜像,可以参考使用:https://hub.docker.com/r/linvery/emby_intelgpu

前言

2025.3.22更新:unraid7.1.0 beta版本内核为6.12,还是不能成功调用dg1显卡。更新Dockerfile。

2025.3.16更新: 以上内容做了一些修改,实现了运行最新测试版emby。项目地址:https://aur.archlinux.org/packages/emby-server-beta

去年就折腾过dg1,那时候买的是蓝戟DG1,兼容性很差,再加上没精力折腾,没有成功,连屏幕都不亮。最近看到群友在折腾,于是又买了一根华硕DG1,再试试能不能搞定。

网上的教程都比较分散,很多都没有折腾结果,我在这里做一点细致的经验总结。

同时,我还在unraid论坛,emby论坛,github等发起了一些讨论。

https://forums.unraid.net/topic/188030-about-dg1-graphic-card-in-unraid/

https://emby.media/community/index.php?/topic/136926-about-emby-build-in-libva-and-ihd-driver/

https://github.com/thor2002ro/unraid_kernel/issues/26

魔改BIOS

首先,我的bios需要魔改才能点亮dg1,魔改bios参考了:https://github.com/xCuri0/ReBarUEFI。如果你的主板插上dg1能点亮屏幕,就不用魔改bios。

每个人的主板不同,对于我的主板,研域工控q270m这个型号,我找厂家索要了最新的bios。然后按照上述教程修改:

  1. 开启隐藏的above4g选项。(这步可以按照教程走,一键打开。但是我是手动打开的,效果一样。使用了AMIBCP 5.02.0034软件。手动打开参考了https://www.bilibili.com/opus/864854401661009953,注意需要改两个USER。)
  2. 修补uefi。
  3. 修补usb3。
  4. 重新刷入。(阅读DSDTMod.dsl后发现,我的bios固件不需要修补DSDT,所以跳过这步,直接刷入了。)

魔改bios有风险,请谨慎操作。

改废了不启动,只能编程器重刷

修改bios设置

点亮之后,需要 修改bios设置,参考教程为皮蛋熊大佬的博客教程:https://blog.kkk.rs/archives/36

这里做一些摘抄:

1. 开启UEFI引导。
2. Above4G。(必须)
3. ResizebleBAR选项(部分主板没有这个,没有可以忽略)
4. 关闭PCIe ASPM功能。(dg1不兼容低功耗模式,内核日志会疯狂报错)

====================================
文章作者: 皮蛋熊
文章来源: 蔚然小站
文章链接: https://blog.kkk.rs/archives/36
版权声明: 内容遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

成功进入系统后

进入系统需要改一些设置。

1. 替换社区版内核

如果能正常进入unriad系统并启动,就可以准备替换内核了。

关机,然后拔下引导u盘,下载文件后拷贝到u盘即可。(可以把旧文件加个old后缀,以防不能用需要回滚。)

unraid7.0.1使用的是6.6.8版本的linux内核,不支持dg1。所以需要替换为社区版的高版本内核。关于替换unraid内核部分,我使用了此版本内核:https://github.com/thor2002ro/unraid_kernel/releases/tag/20250304。

这个过程中,查了很多资料,了解了关于linux社区对intel显卡的支持发展史:

6.2内核支持了dg2(arc 310 380等)

6.8内核支持了dg1(蓝鲫和华硕的这两款)

6.12 支持了b系列intel显卡(也就是xe2系列)

2. 修改加载的驱动。

此教程的“开启内置Xe驱动”部分很好用,可以直接参考:https://natureblog.net/post/1#%E5%BC%80%E5%90%AF%E5%86%85%E7%BD%AEXe%E9%A9%B1%E5%8A%A8

在此基础上,还参考了:https://blog.kkk.rs/archives/28,添加 pcie_aspm=off 参数。

3. 直通给容器

jellyfin已经支持dg1,可以直接使用,qsv与vaapi都正常。jellyfin的dg1教程很多并且很容易成功,我不再赘述。

plex和emby的容器镜像目前都不支持dg1显卡的识别与编解码,因为镜像内置的qsv驱动与vaapi驱动太旧了。

但是!archlinux版本的emby-server可以,因为这个版本不会内置驱动,需要手动用pacman命令安装。这样我们就能安装到较新版本的驱动程序。

我在unraid上运行archlinux容器,之后也安装了archlinux物理机做了实验,证明的确可行。感谢群友的思路!

构建定制版emby运行环境

我们使用archlinux作为容器的base,自己构建emby运行容器。

FROM archlinux:latest
WORKDIR /config
USER root
RUN mkdir /init2 && mkdir /system
COPY . /init2/

ARG EMBY_V=4.9.0.42
ARG FFMPEG_V=2023_06_25

ENV TZ=Asia/Shanghai
ENV http_proxy="http://10.168.1.192:10810"
ENV https_proxy="http://10.168.1.192:10810"
ENV ftp_proxy="http://10.168.1.192:10810"

ENV FFDETECT=/usr/bin/ffdetect
ENV FFMPEG=/usr/bin/ffmpeg
ENV FFPROBE=/usr/bin/ffprobe
ENV PROGRAM_DATA=/config
ENV LIBVA_DRIVERS_PATH=/usr/lib/dri
ENV LD_LIBRARY_PATH=/usr/lib

ADD https://github.com/just-containers/s6-overlay/releases/download/v2.2.0.3/s6-overlay-amd64-installer /tmp/
RUN chmod +x /tmp/s6-overlay-amd64-installer && /tmp/s6-overlay-amd64-installer /

RUN mkdir -p /etc/services.d/emby-server-s6/ && cp /init2/run /etc/services.d/emby-server-s6 && cp /init2/finish /etc/services.d/emby-server-s6 && chmod u+x /etc/services.d/emby-server-s6/*
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "use_proxy=on" >> /etc/wgetrc && echo "http_proxy=http://10.168.1.192:10810/" >> /etc/wgetrc && echo "https_proxy=http://10.168.1.192:10810/" >> /etc/wgetrc && echo "ftp_proxy=http://10.168.1.192:10810/" >> /etc/wgetrc && echo "wait=10" >> /etc/wgetrc
RUN pacman -Syu --noconfirm && pacman -Sy --noconfirm alsa-lib aom aspnet-runtime-8.0 bzip2 dotnet-runtime-8.0 expat fontconfig fribidi glibc gmp gnutls lame libass chromaprint dav1d libdrm freetype2 libjpeg-turbo libmfx libpng tesseract libtheora libva libvips libvorbis libwebp x264 x265 ocl-icd opus skia-sharp sqlite zvbi zlib
RUN pacman -Sy --noconfirm intel-compute-runtime intel-media-driver onevpl-intel-gpu libva-utils wget unzip nano

# RUN wget https://github.com/MediaBrowser/Emby.Releases/releases/download/${EMBY_V}/embyserver-netcore_${EMBY_V}.zip && unzip -d / embyserver-netcore_${EMBY_V}.zip && chmod -R u+x /system
# RUN wget https://mediabrowser.github.io/embytools/ffmpeg-${FFMPEG_V}-x64.tar.xz && tar xvf ffmpeg-${FFMPEG_V}-x64.tar.xz -C / && chmod -R u+x /bin/ff*
RUN unzip -d / /init2/embyserver-netcore_${EMBY_V}.zip && chmod -R u+x /system
RUN tar xvf /init2/ffmpeg-${FFMPEG_V}-x64.tar.xz -C / && chmod -R u+x /bin/ff*

# ENTRYPOINT ["s6-svscan"]
ENTRYPOINT ["/init"]
# docker build --progress=plain -t harbor.mb6.top/xinjiawei1/embyarch:3.0 .

构建完成后进入容器,挂载 /config目录为配置文件目录。

测试发现,vaapi是正常识别的,qsv因为emby开发者太懒,目前还不能支持。测试版本是emby4.8.11。(archlinux只有4.8.11,没有测试版本的安装包)

在emby4.8.11中 dg1的解码器识别结果

其他的细节

  1. 容器我设置了GIDLIST0,18 ,设置 UID 0,GID 0。给了设备/dev/dri/
  2. 在unraid的go文件,我依旧设置了
    • chown nobody:users /dev/dri
    • chmod 0777 /dev/dri/*
  3. 我也在ubuntu容器中,手动编译了inrel-media-driver https://github.com/intel/media-driver 也能硬解,这种方式安装的用户态驱动是最新的,和最新的内核态驱动对应。但是!!!编译跑了五个小时,输出的驱动四百多M,建议不要轻易尝试。
  4. 你可能需要在dg1上插好hdmi线,bios才能识别到dg1。如果在开机状态下更换了显示输出接口,可能造成蓝屏或者dg1设备丢失,需要重启才能重新识别到。

用到的文件

一些开源工具可能比较旧了,你可以查看是否有更新的。

bios.7z :魔改q270m的bios用到的文件。

emby-logs.7z :对于emby4.8.10,使用i915内核驱动与xe内核驱动,不同的表现。

embyimage.zip:构建emby的dockerfile。

构建的docker镜像体积太大,就不分享了。

https://cf.mb6.top/tmp/?dir=temp/dg1

可能存在的问题

使用的emby-ffmpeg不是最新的。我在emby-4.9.0.40b中使用了4.8.11版本配套的ffmpeg,这可能存在隐藏问题。 已解决。

参考

https://archlinux.org/packages/extra/x86_64/emby-server

https://aur.archlinux.org/packages/emby-server-beta

以及以上所有列出的链接。

致谢

感谢一群群友 @被遗忘的人 给的思路,使用archlinux构建容器。

感谢一群群友 @皮蛋熊 帮助,参考了正常识别的dg1系统日志。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可
标签: 暂无
最后更新:2025年6月16日

jiawei

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
  • Emby
  • Synology
  • Unraid
  • 文段分享
  • 生产力小工具
  • 生活记录
  • 程序开发实例
  • 网络与系统
  • 逆向工程
  • 遇到问题

2019-2025

Theme Kratos Made By Seaton Jiang

冀ICP备18022758号-2

冀公网安备13072802000034号