orangepi 5 plus内核编译支持120fps 1080p采集
# Orange Pi 5 Plus (RK3588) – WSL2 编译内核(含 hdmirx 1080p120 补丁)完整步骤
> 目标:在 Windows 上使用 WSL2 交叉编译 Orange Pi 5 Plus 的 legacy 5.10 内核,并通过补丁让 hdmirx 驱动的 DV timings 列表包含 1080p120(VIC 63)。
>
> 说明:本教程基于官方 Orange Pi 5 Plus 编译流程(orangepi-build/legacy 5.10),并添加 hdmirx timing 修改步骤。编译产物为 `.deb` 包,传到板子后安装,不破坏系统数据,可回退。
---
## 0. 前置要求
- Windows 10/11 + WSL2
- WSL2 发行版:Ubuntu 22.04(推荐)
- 有足够磁盘空间(建议 >= 20GB)
- 可通过网络访问 GitHub
---
## 1. 安装 WSL2 + Ubuntu
在 **PowerShell(管理员)** 中执行:
```powershell
wsl --install -d Ubuntu-22.04
wsl --set-default-version 2
完成后启动 Ubuntu 终端。
2. 更新系统并安装依赖
sudo apt-get update
sudo apt-get install -y git bc bison flex build-essential \
libssl-dev libncurses5-dev libelf-dev dwarves rsync python3 curl
3. 拉取官方 orangepi-build(next 分支)
Orange Pi 5 Plus 官方说明要求使用
orangepi-build的next分支。
git clone https://github.com/orangepi-xunlong/orangepi-build.git -b next
cd orangepi-build
4. 第一次编译内核(官方方式)
目的:拉取源码与工具链,确保环境完整。
sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no
编译完成后,产物在:
ls output/debs/
5. 确认 userpatches 路径(补丁投放目录)
rg -n "Looking for user patches" output/debug/*.log
你会看到类似日志:
Looking for user patches in [ userpatches/kernel/<family-branch> ]
记录 <family-branch> 的实际值,后面会用到。
6. 定位 hdmirx 驱动源码
cd kernel/orange-pi-5.10-rk3588
rg -n "hdmirx|dv_timings|CEA|VIC" drivers/media
找到包含 DV timings 白名单 或 VIC 列表 的驱动文件。
7. 修改驱动:加入 1080p120(VIC 63)
使用编辑器打开驱动文件,例如:
nano <驱动文件路径>
修改原则:
- 在 hdmirx 的 DV timing 或 CEA VIC 列表中加入 VIC 63(1920x1080@120)。
- 可选加入 VIC 64(1920x1080@100)。
- 1080p120 的典型参数:
- Pixel clock:
297000000 - Total:
2200 x 1125 - H: front
88, sync44, back148 - V: front
4, sync5, back36
- Pixel clock:
通常做法:复制 1080p60 的条目,把像素时钟改为 297MHz。
8. 生成补丁文件
git diff > /root/patches/0001-hdmirx-add-1080p120.patch
9. 放入 userpatches
mkdir -p ../userpatches/kernel/<family-branch>/
cp /root/patches/0001-hdmirx-add-1080p120.patch ../userpatches/kernel/<family-branch>/
10. 重新编译内核(应用补丁)
回到 build 根目录:
cd ..
重新编译:
sudo ./build.sh BOARD=orangepi5plus BRANCH=legacy BUILD_OPT=kernel KERNEL_CONFIGURE=no
产物仍在:
ls output/debs/
11. 传输内核包到板子
scp output/debs/linux-image-legacy-rockchip-rk3588_*_arm64.deb root@<板子IP>:/root/
scp output/debs/linux-dtb-legacy-rockchip-rk3588_*_arm64.deb root@<板子IP>:/root/
scp output/debs/linux-headers-legacy-rockchip-rk3588_*_arm64.deb root@<板子IP>:/root/
12. 板子端安装内核(保留回退)
sudo dpkg -i /root/linux-image-legacy-rockchip-rk3588_*_arm64.deb \
/root/linux-dtb-legacy-rockchip-rk3588_*_arm64.deb \
/root/linux-headers-legacy-rockchip-rk3588_*_arm64.deb
说明:此方式会保留旧内核,可通过 extlinux 启动项回退。
13. 验证 DV timings 是否出现 1080p120
板子上运行:
v4l2-ctl -d /dev/video0 --list-dv-timings
如果列表中出现 1920x1080 120.00 Hz,说明驱动白名单已生效。
注意:这只验证“驱动支持 120Hz timing”,最终能否锁定 120Hz 仍需实际 HDMI 输入信号验证。
14. 回退方式(保留旧内核)
- 在开机时进入 extlinux 菜单,选择旧内核启动项。
- 或编辑
/boot/extlinux/extlinux.conf,将DEFAULT改回旧内核的 label。
15. 常见问题
Q1: 没接 HDMI 也能验证吗?
- 不能验证实际锁定,只能确认驱动 timing 列表是否包含 1080p120。
Q2: 生成补丁时提示路径错误?
- 确认
rg定位到的驱动文件路径。
Q3: orangepi-build 报错依赖缺失?
- 先确保第 2 步依赖全部安装。
16. 我可以帮你做什么
- 精确定位 hdmirx timing 表并给出补丁
- 检查你编译日志中的 userpatches 路径
- 帮你确认生成的 deb 包是否正确