logoPonyTechLab

马兆鑫的AI与深度学习博客

在 Ubuntu 虚拟机里给香橙派 Orange Pi 5 Pro(eMMC 版,无 SD 卡)刷机

一、准备工作

你需要:

  • 一根高质量 USB-C 数据线(既能供电又能传数据,建议原装/品牌线)。

  • 一台装好 Ubuntu(建议 22.04/24.04) 的虚拟机(VirtualBox/VMware 均可)。

  • Orange Pi 5 Pro 主板(板载或插接 eMMC)。

  • 官方系统镜像(.img.img.xz),例如 Orange Pi OS / Ubuntu / Debian(从 Orange Pi 官方下载页面获取)。

说明:Orange Pi 5/5 Pro 基于 Rockchip RK3588(S) 平台,支持通过 MaskROM/Loader 模式走 USB 线刷。


二、在 Ubuntu(虚拟机)安装线刷工具

rkdeveloptool 是 Rockchip 的开源 USB 线刷工具,Linux 下可通过源码或软件包安装。

方式 A:直接装现成包(24.04 有包)

sudo apt update
sudo apt install rkdeveloptool
rkdeveloptool -v   # 验证能输出版本

(如果提示找不到包,走方式 B 编译安装。)

方式 B:源码编译安装(通用)

sudo apt update
sudo apt install -y git build-essential automake autoconf pkg-config \
                    libusb-1.0-0-dev libudev-dev dh-autoreconf
git clone https://github.com/rockchip-linux/rkdeveloptoolcd rkdeveloptool
autoreconf -i
./configure
make -j"$(nproc)"
sudo cp rkdeveloptool /usr/local/sbin/
rkdeveloptool -v

可选:添加 udev 规则(非 root 也能刷)

cat <<'EOF' | sudo tee /etc/udev/rules.d/51-rockusb.rules
SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev"EOF
sudo udevadm control -R

Rockchip 设备的 USB VID 常见为 2207。添加规则后重新插拔一次 USB。


三、虚拟机 USB 直通设置(关键)

  • VirtualBox: 设备 → USB → 勾选 USB 3.0 控制器;添加过滤规则(厂商 ID 2207)。运行中从“设备→USB”挂载 Rockchip / MaskROM 设备到虚拟机。

  • VMware: 可移动设备 → 选择出现的 Rockchip 设备 → “连接到此虚拟机”。

确保 Ubuntu 虚拟机中 lsusb 能看到 Rockchip 设备(VID:PID 类似 2207:xxxx)。


四、下载并解压系统镜像

从 Orange Pi 官方页下载对应 Orange Pi 5 / 5 Pro 的系统镜像(例如 Orangepi5pro_xxx_ubuntu_jammy_*.img.xz),在 Ubuntu 中解压得到 .img 文件:

xz -dk Orangepi5pro_xxx_ubuntu_jammy_*.img.xz# 得到 Orangepi5pro_xxx_ubuntu_jammy_*.img

(不同版本文件名略有差异,但都是 .img。)


五、把开发板送入 MaskROM 模式

  1. 断电(不要接任何电源)。

  2. USB-C 数据线 把板子的 USB-C 口接到主机(通过虚拟机直通到 Ubuntu)。

  3. 按住板上的 MaskROM 按钮(有的板标成 Mask、Maskrom/Recovery)。

  4. 保持按住,再给板子 上电(多数机型就是这根 USB-C 同时供电;若你另接供电,也在此时上电)。

  5. 2 秒后 松开 MaskROM。此时在 Ubuntu 里执行:

    rkdeveloptool ld

    能看到类似:

    DevNo=1	Vid=0x2207,Pid=0x350a,LocationID=xxx,Maskrom

    就说明进了 MASKROM 模式。

注:不同 5 系列板上 MaskROM 按钮位置略有差异,官方手册/丝印图都有标注。


六、(一次性)把 Loader 下载到内存

在 MaskROM 下,需要先把 SPL/Loader 下载进板子内存,让它接受后续写盘命令。不同资源包里文件名可能叫 rk3588_spl_loader_*.bin / rk3588_loader_v*.bin / MiniLoaderAll.bin(任选你镜像包或官方工具包里适配 RK3588 的那个)。

rkdeveloptool db /path/to/rk3588_loader_xxx.bin# 成功后无报错,设备会进入 LOADER/Rockusb 状态rkdeveloptool ld# 此时显示 ... Loader

db=Download Bootloader 到 RAM。随后才能写 eMMC。)


七、把整张镜像写进 eMMC

大多数 Orange Pi 提供的 raw 整盘镜像 都含有 GPT/分区表,可直接从 0 扇区整体写入

# 直接整盘写入(耗时几分钟)rkdeveloptool wl 0 Orangepi5pro_xxx_ubuntu_jammy_*.img# 写完后重置板子rkdeveloptool rd
  • wl 0 <img> 表示从 eMMC LBA 0 开始写入整张镜像文件。

  • 如果你看到 Permission denied,用 sudo 或检查 udev 规则/USB 直通。

  • 第一次启动会自动扩展根分区,耐心等 2–5 分钟。


八、首次开机与常见“没起机”排查

  1. 正常情况: 断开刷机线,给板子上电(或直接保留 USB-C 供电连着显示器键鼠),HDMI 有画面,进入系统初始化。

  2. 无画面/仍进 MaskROM: 多数是 SPI NOR 里残留了旧的引导,优先级盖过 eMMC。解决办法:

  • 重新进 MaskROM

  • 用工具 切换到 SPI NOR 并擦除(Windows 的 RKDevTool 有“切换存储/擦除所有”按钮;Linux 下常用做法是用能访问 SPI 的工具或在论坛提供的脚本清空 SPI)。擦除后再按本教程重刷 eMMC。

  • db 报错 / 设备掉线: 更换 支持数据的 USB-C 线;改用主机直连 USB-A↔USB-C 也行(别走集线器)。

  • 虚拟机识别不到设备: 重新在 VM 菜单把 Rockchip 设备 连接到虚拟机;必要时关机后先勾选 USB 直通再开机。


  • 九、(可选)在 Linux 下分区/镜像“高级写法”

    如需手动分区再写 rootfs(适合 不带引导器 的 rootfs 包):

# 进入 Loader 后,可查看分区表(若已有 GPT)rkdeveloptool list-partitions# 自己准备一个 GPT 定义文件,写入分区表rkdeveloptool write-partition-table gpt.conf# 对指定分区写入内容rkdeveloptool write-partition boot boot.img
rkdeveloptool write-partition rootfs rootfs.ext4# 或按扇区偏移写入rkdeveloptool write 0x40 idbloader.img
rkdeveloptool write 0x4000 uboot.img

仅当你清楚镜像布局时使用;大多数用户直接用 整盘镜像 wl 0 更省心。


十、FAQ

  • 能在 Windows 刷吗? 可以,用官方 RKDevTool 图形工具+MiniLoader 包(步骤与本教程一致,只是界面操作)。

  • MaskROM 按钮找不到? 参看你板子的用户手册丝印图(5/5 Plus/5 Pro 位置略有差异)。

  • Ubuntu 虚拟机必须吗? 不是,真机 Ubuntu/Mac 也可,命令一致(Mac 需用 Homebrew 编译安装)。


参考资料

  • Orange Pi 5 官方 Wiki(下载镜像、入门)

  • Orange Pi 5/5 Plus 手册(MaskROM 按钮与线刷流程示例)

  • Rockchip rkdeveloptool(源码、命令语法、man 手册)

  • openEuler 针对 RK3588 的 MaskROM/整盘镜像写入流程(db + wl 0 思路一致)

  • 社区实操与问题排查:清空 SPI NOR、进入 MaskROM 等。


avatar

Pony

深度学习爱好者和技术研究者。专注于人工智能、边缘计算及计算机视觉领域的开发与应用。

现居地:陕西省-西安市

Email:zhaoxin.ma@chd.edu.cn

Categories