orangepi 5 plus内核编译支持120fps 1080p采集

orangepi 5 plus内核编译支持120fps 1080p采集

期期 0 2026-01-29

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-buildnext 分支。

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, sync 44, back 148
    • V: front 4, sync 5, back 36

通常做法:复制 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 包是否正确