OpenWrt 串口报错 Failed to load DMC firmware i915/glk_dmc_ver1_04.bin 问题解决

温馨提示:
本文所述内容具有依赖性,可能因软硬条件不同而与预期有所差异,故请以实际为准,仅供参考。

主要出现在 x86_64 固件中,通常发生于软路由,系统启动后稍等一两分钟,查看内核日志,或者显示器,会有这么一串:

[   65.613323] i915 0000:00:02.0: [drm] Failed to load DMC firmware i915/glk_dmc_ver1_04.bin. Disabling runtime power management.
[   65.624794] i915 0000:00:02.0: [drm] DMC firmware homepage: https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915

ChatGPT 说,这个错误提示是关于 i915 集成显卡驱动的问题,指出了在加载 DMC 固件时失败。

解决方案如下:

1、找一个 Linux 系统,比如 Ubuntu,因为要用到命令 cpio 在 OpenWrt 中是没有的;

2、在任意地方创建一个文件夹,比如 test,然后在 test 目录下创建目录 /lib/firmware/i915,最终目录结构应该是:

/test/lib/firmware/i915

3、根据错误提示,将系统提示缺少的文件,通过系统提示的连接下载下来,比如我是缺少glk_dmc_ver1_04.bin这个文件,那就去https://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git/tree/i915,找到 glk_dmc_ver1_04.bin 然后点左上角的(plain)下载,并将下载的这个文件放到刚刚建立的 /test/lib/firmware/i915 目录下,最终目录结构应该是:

/test/lib/firmware/i915/glk_dmc_ver1_04.bin

4、然后进入到 /test/ 目录,在此目录下执行命令:

find . | cpio -o -H newc >dmc.cpio

这样会生成一个dmc.cpio文件

5、将dmc.cpio文件复制到软路由的/boot目录下,最终目录结构是这样的:

/boot/dmc.cpio

6、修改/boot/grub/grub.cfg文件,在文件中加入 initrd /boot/dmc.cpio,示例:

serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1 --rtscts=off
terminal_input console serial; terminal_output console serial

set default="0"
set timeout="5"
search -l kernel -s root

menuentry "OpenWrt" {
    linux /boot/vmlinuz root=PARTUUID=c08eae04-04d7-3b08-205e-fa50fb5f3d02 rootwait  console=tty0 console=ttyS0,115200n8 noinitrd
    initrd /boot/dmc.cpio
}
menuentry "OpenWrt (failsafe)" {
    linux /boot/vmlinuz failsafe=true root=PARTUUID=c08eae04-04d7-3b08-205e-fa50fb5f3d02 rootwait  console=tty0 console=ttyS0,115200n8 noinitrd
}

保存后重启,再次查看日志,显示:

[    3.005410] i915 0000:00:02.0: [drm] couldn't get memory information
[    3.012474] i915 0000:00:02.0: [drm] Finished loading DMC firmware i915/glk_dmc_ver1_04.bin (v1.4)
[    3.021275] [drm] Initialized i915 1.6.0 20200917 for 0000:00:02.0 on minor 0
[    3.046618] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes
[    3.057082] i915 0000:00:02.0: [drm] Cannot find any crtc or sizes

就表示加载成功,至于 Cannot find any crtc or sizes 是说没有接显示器,问题不大。

这个插件的一个很重要的作用就是,可以省电!


参考文章:

1、《Silly little i915 issue on x86
2、《[openwrt(x86)] 一个不太爽的小问题解决,官方固件Failed to load DMC firmware i915 不需要自制固件


ArmxMod for Typecho
个性化、自适应、功能强大的响应式主题

推广

 继续浏览关于 openwrt解决方案dmci915串口报错 的文章

 本文最后更新于 2024/05/30 13:48:04,可能因经年累月而与现状有所差异

 引用转载请注明: VirCloud's Blog > 经验 > OpenWrt 串口报错 Failed to load DMC firmware i915/glk_dmc_ver1_04.bin 问题解决