6.1 Kernel GPU firmware update
-
Version 6.1 of the kernel requires updating the GPU's bin file by replacing the attached bin file in the system /lib/firmware directory. Otherwise, the old bin file will cause a black screen during system startup.
mali_csffw.bin -
@george Many thanks for sharing.
I will try it with kernel 6.1
-
Tried to compile kernel 6.1 but fail.
make[4]: *** [scripts/Makefile.build:500: drivers/media/platform/rockchip] Error 2 make[3]: *** [scripts/Makefile.build:500: drivers/media/platform] Error 2 make[2]: *** [scripts/Makefile.build:500: drivers/media] Error 2 make[1]: *** [scripts/Makefile.build:500: drivers] Error 2 make: *** [Makefile:2012: .] Error 2 cp: cannot stat 'arch/arm64/boot/Image.gz': No such file or directory cp: cannot stat 'arch/arm64/boot/Image': No such file or directory sed: can't read modules.order: No such file or directory make: *** [Makefile:1576: __modinst_pre] Error 2 cp: cannot stat 'vmlinuz': No such file or directory cp: cannot stat 'Image': No such file or directory
and
CC drivers/media/platform/rockchip/ispp/ispp.o AR drivers/media/firewire/built-in.a AR drivers/media/platform/rockchip/rkisp1/built-in.a AR drivers/media/spi/built-in.a CC [M] drivers/media/spi/cxd2880-spi.o cc1: all warnings being treated as errors make[6]: *** [scripts/Makefile.build:250: drivers/media/platform/rockchip/cif/capture.o] Error 1 make[5]: *** [scripts/Makefile.build:500: drivers/media/platform/rockchip/cif] Error 2 make[5]: *** Waiting for unfinished jobs.... AR drivers/media/test-drivers/built-in.a AR drivers/media/radio/built-in.a
CC [M] drivers/media/tuners/tda8290.o CC [M] drivers/media/tuners/tda9887.o CC drivers/media/common/videobuf2/videobuf2-dma-contig.o CC drivers/media/v4l2-core/v4l2-i2c.o drivers/media/platform/rockchip/cif/capture.c:4929:6: error: conflicting types for ‘rkcif_do_stop_stream’ due to enum/integer mismatch; have ‘void(struct rkcif_stream *, unsigned int)’ [-Werror=enum-int-mismatch] 4929 | void rkcif_do_stop_stream(struct rkcif_stream *stream, | ^~~~~~~~~~~~~~~~~~~~ In file included from drivers/media/platform/rockchip/cif/capture.c:24: drivers/media/platform/rockchip/cif/dev.h:934:6: note: previous declaration of ‘rkcif_do_stop_stream’ with type ‘void(struct rkcif_stream *, enum rkcif_stream_mode)’ 934 | void rkcif_do_stop_stream(struct rkcif_stream *stream, | ^~~~~~~~~~~~~~~~~~~~ drivers/media/platform/rockchip/cif/capture.c:6090:5: error: conflicting types for ‘rkcif_do_start_stream’ due to enum/integer mismatch; have ‘int(struct rkcif_stream *, unsigned int)’ [-Werror=enum-int-mismatch] 6090 | int rkcif_do_start_stream(struct rkcif_stream *stream, unsigned int mode) | ^~~~~~~~~~~~~~~~~~~~~ drivers/media/platform/rockchip/cif/dev.h:932:5: note: previous declaration of ‘rkcif_do_start_stream’ with type ‘int(struct rkcif_stream *, enum rkcif_stream_mode)’ 932 | int rkcif_do_start_stream(struct rkcif_stream *stream, | ^~~~~~~~~~~~~~~~~~~~~ CC [M] drivers/media/dvb-frontends/l64781.o CC [M] drivers/media/dvb-frontends/lg2160.o CC [M] drivers/media/tuners/tea5761.o
-
反复测试了几次,发现是RTW8852 网卡的模块编译不通过,难不成和我换网卡有关系么?
make[2]: *** [scripts/Makefile.build:500: drivers/media] Error 2 make[1]: *** [scripts/Makefile.build:500: drivers] Error 2 make: *** [Makefile:2012: .] Error 2 CALL scripts/checksyscalls.sh CC drivers/media/platform/rockchip/cif/capture.o CC [M] drivers/net/wireless/rockchip_wlan/rtw8852be/core/rtw_vht.o drivers/media/platform/rockchip/cif/capture.c:4929:6: error: conflicting types for ‘rkcif_do_stop_stream’ due to enum/integer mismatch; have ‘void(struct rkcif_stream *, unsigned int)’ [-Werror=enum-int-mismatch] 4929 | void rkcif_do_stop_stream(struct rkcif_stream *stream, | ^~~~~~~~~~~~~~~~~~~~ In file included from drivers/media/platform/rockchip/cif/capture.c:24: drivers/media/platform/rockchip/cif/dev.h:934:6: note: previous declaration of ‘rkcif_do_stop_stream’ with type ‘void(struct rkcif_stream *, enum rkcif_stream_mode)’ 934 | void rkcif_do_stop_stream(struct rkcif_stream *stream, | ^~~~~~~~~~~~~~~~~~~~ drivers/media/platform/rockchip/cif/capture.c:6090:5: error: conflicting types for ‘rkcif_do_start_stream’ due to enum/integer mismatch; have ‘int(struct rkcif_stream *, unsigned int)’ [-Werror=enum-int-mismatch] 6090 | int rkcif_do_start_stream(struct rkcif_stream *stream, unsigned int mode) | ^~~~~~~~~~~~~~~~~~~~~ drivers/media/platform/rockchip/cif/dev.h:932:5: note: previous declaration of ‘rkcif_do_start_stream’ with type ‘int(struct rkcif_stream *, enum rkcif_stream_mode)’ 932 | int rkcif_do_start_stream(struct rkcif_stream *stream, | ^~~~~~~~~~~~~~~~~~~~~ CC drivers/clocksource/timer-of.o CC drivers/clocksource/timer-probe.o drivers/net/wireless/rockchip_wlan/rtw8852be/core/rtw_vht.c: In function ‘rtw_reattach_vht_ies’: drivers/net/wireless/rockchip_wlan/rtw8852be/core/rtw_vht.c:1419:27: error: the comparison will always evaluate as ‘true’ for the address of ‘IEs’ will never be NULL [-Werror=address] 1419 | if (pnetwork->IEs != NULL) { | ^~ In file included from drivers/net/wireless/rockchip_wlan/rtw8852be/include/drv_types.h:27, from drivers/net/wireless/rockchip_wlan/rtw8852be/core/rtw_vht.c:17: drivers/net/wireless/rockchip_wlan/rtw8852be/include/wlan_bssdef.h:249:13: note: ‘IEs’ declared here 249 | u8 IEs[MAX_IE_SZ]; /* (timestamp, beacon interval, and capability information) */ | ^~~ cc1: all warnings being treated as errors make[6]: *** [scripts/Makefile.build:250: drivers/net/wireless/rockchip_wlan/rtw8852be/core/rtw_vht.o] Error 1 make[5]: *** [scripts/Makefile.build:500: drivers/net/wireless/rockchip_wlan/rtw8852be] Error 2 make[4]: *** [scripts/Makefile.build:500: drivers/net/wireless/rockchip_wlan] Error 2 make[3]: *** [scripts/Makefile.build:500: drivers/net/wireless] Error 2 make[2]: *** [scripts/Makefile.build:500: drivers/net] Error 2 make[2]: *** Waiting for unfinished jobs.... CC drivers/clocksource/mmio.o CC drivers/clocksource/timer-rockchip.o CC drivers/clocksource/arm_arch_timer.o CC drivers/clocksource/dummy_timer.o CC drivers/media/platform/rockchip/hdmirx/rk_hdmirx_class.o CC drivers/media/platform/rockchip/hdmirx/rk_hdmirx.o CC drivers/media/platform/rockchip/hdmirx/rk_hdmirx_cec.o AR drivers/clocksource/built-in.a CC drivers/media/platform/rockchip/hdmirx/rk_hdmirx_hdcp.o cc1: all warnings being treated as errors make[6]: *** [scripts/Makefile.build:250: drivers/media/platform/rockchip/cif/capture.o] Error 1 make[5]: *** [scripts/Makefile.build:500: drivers/media/platform/rockchip/cif] Error 2 make[5]: *** Waiting for unfinished jobs.... AR drivers/media/platform/rockchip/hdmirx/built-in.a make[4]: *** [scripts/Makefile.build:500: drivers/media/platform/rockchip] Error 2 make[3]: *** [scripts/Makefile.build:500: drivers/media/platform] Error 2 make[3]: *** Waiting for unfinished jobs.... make[2]: *** [scripts/Makefile.build:500: drivers/media] Error 2 make[1]: *** [scripts/Makefile.build:500: drivers] Error 2 make[1]: *** Waiting for unfinished jobs.... make: *** [Makefile:2012: .] Error 2 cp: cannot stat 'arch/arm64/boot/Image.gz': No such file or directory cp: cannot stat 'arch/arm64/boot/Image': No such file or directory sed: can't read modules.order: No such file or directory make: *** [Makefile:1576: __modinst_pre] Error 2 cp: cannot stat 'vmlinuz': No such file or directory cp: cannot stat 'Image': No such file or directory
-
This post is deleted! -
@plumlis
目前看是编译环境引起的,编译器的版本问题导致,还在处理中。 -
@george x86环境可以编译吗?我可以弄个wsl的ubuntu 22.04 试试
-
@plumlis
可以。 -
最后我自己弄了个 22.04 的 USB 启动盘,在那个系统下编译通过了。
不过启动后加载这个 firmware 的确可以进系统,但是问题有点多。mesa 似乎也得更新对应版本,不然 panfrost 打不开,wayland 下 gtk 4 的东西都无法启动。
能力有限,还是等你们官方放出测试好的内核吧。
-
@plumlis
panthor的驱动最近在同步测试,很快就会发布。 -
@plumlis
同步最新代码,6.1的内核目前已经可以本机编译。 -
@george 昨天已经看到了,辛苦
panthor的驱动是需要 mesa 编译实现吗,我看核心代码里已经有了。 -
@plumlis
内核需要修改增加驱动支持。应用层驱动已经有各个版本的ppa源支持。 -
刚看到github更新了,立即clone 下来开始编译,结果新内核启动后黑屏了。
具体表现就是启动会显示 logo,但是会直接黑屏,不出现 gdm,按下关机键会回到命令行看到关机停止服务的各种指令。
我应该是把新的 firmware 放到目录了,但是感觉像是你说的没 firmware 的黑屏。
今天很晚了,明天再折腾研究一下。
-
@plumlis
内核默认启用了panther的GPU驱动,需要先把mesa更新到24.02版本,否则就会黑屏。sudo add-apt-repository ppa:oibaf/graphics-drivers sudo apt update sudo apt-get dist-upgrade
-
经过更新mesa终于可以进系统了。
顺便一提这个firmware的路径不是 /lib/firmware,放在那里还是会被找不到。看日志发现是应该放在: /lib/firmware/arm/mali/arch10.8/ 下面
简单测试了一下,首先是firefox 开 GPU 之后页面不会乱撕裂了,浏览器好像也可以直接播放视频不会卡死,虽然不清楚是不是用了硬件加速。接着就是发现没声音,和这个问题还不太一样:
https://cool-pi.com/topic/578/es8316-sound-issues-on-armbian-with-6-1-rockchip-kernel/2就是单纯的没声音,麦克风和输出还有耳机和喇叭都没声音。
剩下的就是日志里一堆 rknpu 的报错,可能是 npu 模块还没编译?
休眠工作正常,开盖自动唤醒还是没有。
-
换回 5.10 好像 panfrost 开不了了。
是应该把 mesa 换回 maliG610 PPA的版本么?update:已经降级并开启 panfrost
-
@plumlis
其它的功能会持续完善,音频 NPU 编解码这些都还有问题。 -
@plumlis
是的,需要换回去老的mesa版本。 -
@george 辛苦了,最近看到内核的更新都是晚上。