
最近入手了一块Orangepi-3B 8G ram板子,加上之前入的一块Orangepi-5B,算是有点经验吧。
香橙派官方给的linux-sdk是支持5.10.160和6.6内核的,6.6是主线内核原生带panfrost驱动,不过6.6目前不支持rk_mpp硬件视频编、解码,板子上的MIPI、edp、3.5耳机插口也用不了。5.10.160是最成熟、稳定的内核,但官方的镜像不支持panfrost驱动,下面就来讲解一下开启步骤。
注意:orangepi-build需要在ubuntu 22.04下进行,请自行安装系统或者虚拟机。首次运行orangepi-build需要联网下载内核原码,需要科学上网技巧(完整编译后可以编辑userpatches/config-default.conf修改IGNORE_UPDATES="yes"关闭联网更新)
注意:香橙派官方镜像从某个commit起,不能在wayland登陆,panfrost需要使用wayland环境,可能你需要使用第三方镜像开启wayland环境,例如armbian有orangepi-3b ubuntu 22.04的镜像。
注意:如果你不想自己编译内核,我有打包好了的ubuntu 22.04的包,在文章最后。
git clone -b next https://github.com/orangepi-xunlong/orangepi-build.git cd orangepi-build
sudo ./build.sh 这里我们只需要编译内核包选择:kernel package --> show a kernel configuration menu before compilation --> orangepi-3b --> legacy Old stable / Legacy

Kernel package

Show a kernel configuration menu before compilation
接下来脚本会自动下载依赖和交叉编译工具链,下载完成后自动打开menuconfig内核编译选项,这里我们需要标记(按空格键将括号标记为M——即标记模块,*——即标记为内核集成):
#进入下面目录:
Device Drivers ---> Graphics support --->
#标记:
<*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> [ ] Ignore drm ioctl permission(取消标记)
#返回上层继续向下翻查,标记:
<M> Panfrost (DRM support for ARM Mali Midgard/Bifrost GPUs)
#继续向下翻查,标记:
<*> Mali Bifrost series support ---> <*> Enable Mali CSF based GPU support

Ignore drm ioctl permission(取消标记)

Panfrost (DRM support for ARM Lali Midgard/bifrost GPUs)

Mali bifrost series support

Enable Mali CSF based GPU support
注意:标记完所有后选择"save"文件名".config",按"OK"保存后请先不要退出,请看接下来第3步...
使用一个文件编辑器打开"kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/rk3566-orangepi-3b.dts"修改如下:
删除第1075行:cursor-win-id = <ROCKCHIP_VOP2_CLUSTER0>;
在340行下面:&gpu {
增加第341行:clock-names = "gpu", "bus";
增加第342行:interrupt-names = "gpu", "mmu", "job";
-----------------------
注意保存需要root权限 保存完毕后才可以退出menuconfig,脚本会自动进行编译,顺利完成后将在output/debs/下生成linux-image-legacy-xxx-rk356x.deb、linux-headers-legacy-xxx-rk356x.deb、linux-dtb-legacy-xxx-rk356x.deb三个包。
注意:这里orangepi-build有个坑,它编译出来的rk3566-orangepi-3b.dtb文件有时会导致不能开机(可能与其交叉编译工具链有交),请安装ubuntu22.04提供的交叉编译工具链gcc-11-aarch64-linux-gnu编译,编译出来的rk3566-orangepi-3b.dtb放在kernel/orange-pi-5.10-rk35xx/arch/arm64/boot/dts/rockchip/中,你可以将它覆盖镜像中的/boot/dtb/rockchip/rk3566-orangepi-3b.dtb:
sudo apt install gcc-11-aarch64-linux-gnu
cd kernel/orange-pi-5.10-rk35xx
sudo make clean ARCH=arm64
sudo make dtbs ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu-
4. 在开发板上安装内核deb包:
注意:以下步骤请在备份后谨慎操作!!
将上面编译出的三个包复制开发板,以下操作均在开发板shell中完成
#搜索原内核包
apt list --installed |grep -e ^linux-image -e ^linux-dtb -e ^linux-headers
#将搜索到的包删除(具体包名根据实际填写)
sudo apt pruge linux-image-xxx linux-dtb-xxx linux-headers-xxx
#安装(具体包名根据实际填写)
sudo dpkg -i linux-image-xxx linux-dtb-xxx linux-headers-xxx
#重启
sudo sync
sudo reboot
注意:如启动失败,请尝试参考 第3步 “注意” 中的处理方法
sudo cat /var/log/kern.log |grep panfrost
#或
sudo cat /var/log/syslog |grep panfrost
#以上日志应有panfrost加载信息 注意:进入gnome或ubuntu-desktop,wayland环境,setting ---> about 应可看到gpu 已被识别为g52 panfrost字样。

使用glmark2测试:
sudo apt install glmark2 glmark2-es2
glmakr2 用glmark2测试,正常分数约3XX分:

glmark2 Score: 374
注意:需添加PPA源里的软件才能硬解
ubuntu 22.04可直接安装硬解配置包:
sudo add-apt-repository ppa:liujianfeng1994/rockchip-multimedia
sudo apt dist-upgrade
sudo apt install rockchip-multimedia-config
#重启
sudo reboot 注意:debian未知能否支持rk的硬件编码器,以上PPA源只支持ubuntu 22.04。
注意:重启后检查/dev/video-enc0、/dev/video-dec0应存在所属组为"video",同时所登陆的用户也应有"video"组权限才能进行硬件编、硬码。
添加了PPA源后可安装源里的ffmpeg、chromium、mpv、vlc均支持rk-mpp:
sudo apt install ffmpeg chromium-browser{,-l10n} chromium-codecs-ffmpeg-extra mpv vlc rk3566支持4KP60 H.265/H.264/VP9 video decoder、1080P60 H.264/H.265 video encoder请自行测试。
ARM64实机通过gcc-11编译器编译
链接: https://pan.baidu.com/s/1gFynjqbPCpQX7ZegqLPTwQ?pwd=vi4w 提取码: vi4w 复制这段内容后打开百度网盘手机App,操作更方便哦
2024/08/07:
更新了内核包
一个armbian镜像,内容如下:a.u-boot和内核为官方的b.添加了硬解c.添加了io命令,以应对烧坏的网卡
统一回复,如你碰到
panfrost fde60000.gpu: _of_add_opp_table_v2: no supported OPPs
gpu init失败等报错,可能你用的是香橙派官方的内核,由于在本文发布之后没多久官方内核源码就更新了。香橙派的sdk中内核源码里面的rk3568.dtsi,需要用//注释掉1391、1396、1401、1406、1415、1424行(内容都是opp-support-hw = <0xfb 0xffff>;)方可以加载panfrost。
另外还有/var/log/空间被日志填满的问题,暂时先用chattr +i 把那个xorg.log禁写,如有好点的解决方案请留言给我,非常感谢!