afptool-rs v1.2.3

Rockchip 固件解包与打包工具

一个使用 Rust 编写的跨平台命令行工具,支持 RKFW 和 RKAF 固件镜像的解包、修改与重新打包。

afptool-rs 可以做什么?

  • 自动识别并解包 RKFW / RKAF 固件
  • 提取 BOOT、rootfs、uboot、userdata 等分区
  • 保存原始头模板和分区元数据
  • 重新打包时保留厂商字段,并支持字节级一致重构

快速开始

下载对应平台的预编译版本,然后运行一条命令即可查看固件内容。

1. 下载

推荐

预编译版本不需要安装 Rust。进入 Releases 页面,下载与你的平台对应的压缩包。

下载最新版本
macOS Apple SiliconmacOS IntelmacOS UniversalLinux x86_64Linux ARM64Windows x86_64

也可以从源码构建:

$ git clone https://github.com/suyulin/afptool-rs.git && cd afptool-rs && cargo build --release

2. 解包固件

$ afptool-rs unpack firmware.img ./output

3. 查看结果

RKFW signature detected
version: 1.0.0
family: RK3562
00000066-00072a25 BOOT
00072a26-10495a29 embedded-update.img
Header saved to: ./output/rkfw-header.bin
如果输出中包含 embedded-update.img,可以再次运行 unpack 命令继续提取 RKAF 分区。

使用方法

根据你想完成的任务选择对应命令。所有命令都支持绝对路径和相对路径。

解包 RKFW 或 RKAF

输入格式会被自动识别。

$ afptool-rs unpack <input_file> <output_directory>

解包内嵌更新镜像

RKFW 通常包含一个 embedded-update.img,可以继续解包。

$ afptool-rs unpack ./output/embedded-update.img ./output/update

使用原始头模板重新打包 RKFW

当目录中存在 rkfw-header.bin 时,版本、芯片、时间戳和 code 会自动继承。

$ afptool-rs pack-rkfw ./output ./repacked.img

从零创建 RKFW

没有头模板时,需要提供全部头字段。

$ afptool-rs pack-rkfw ./output ./new.img --chip RK3562 --version 1.0.0 --timestamp 1762435994 --code 0x02000000

重新打包 RKAF

请保留解包生成的 partition-metadata.txt。

$ afptool-rs pack-rkaf ./output ./repacked-update.img --model RK3562 --manufacturer RK3562

重要说明

  • 使用 --timestamp 可以保留原始构建时间。
  • rkaf-header.bin 会保留厂商自定义头字段。
  • RESERVED 项会写入 package-file,但不会产生普通头条目。

支持范围

操作系统

macOS Apple SiliconmacOS IntelmacOS UniversalLinux x86_64Linux ARM64Windows x86_64

固件格式

RKFW — Firmware wrapperRKAF — Android package

芯片系列

RK3588/SRK3566/3568RK3562RK3528RK3399/ProRK3368RK3326RK3308RV1109/1126RV1108PX30RK32xxRK31xxRK30xx

源码构建

需要安装稳定版 Rust 工具链。编译后的文件位于 target/release/afptool-rs。

$ cargo build --release