作者书籍推荐:
⚡ 内地版本:电子工业出版社已出版,并在大陆热销。Yocto项目实战教程:高效定制嵌入式Linux系统
⚡ 海外版本:繁体中文版支持全球华人购买,让更多开发者轻松掌握嵌入式系统核心技能。 金石堂购买链接
🎥 更多学习视频请关注 B 站:嵌入式Jerry
Jetson 作为中继的 Mender OTA 实战详解:Rockchip 远程升级的完整逻辑
一、前言:从传统升级到中继式 OTA
在嵌入式系统维护中,OTA(Over-The-Air)远程升级已成为核心机制。传统的做法要求每个终端直接访问外部网络,但在许多边缘场景(例如工业相机、无人设备、AI 监控节点)中,设备往往无法直接连入公网。此时,一个更灵活的架构是:
使用 Jetson 作为中继节点,Rockchip 设备通过 Jetson 的热点连接,再由 Jetson 转发网络访问外部的 Mender OTA 云端服务器。
这种架构兼具灵活性与安全性,能够实现真正意义上的“远程 OTA”,而不是单纯的“本地文件升级”。本文将系统讲解这一方案的原理、配置、Mender 工作机制、以及完整逻辑流程。

二、场景描述与整体架构
系统结构如下:
┌────────────────────────────┐
│ Mender Cloud │
│ OTA Server + Artifacts │
└──────────┬─────────────────┘
│ HTTPS 连接
│
(Jetson 外部 Wi-Fi 模块 wlan1)
│
┌───────┴────────┐
│ Jetson (中继节点) │
│ ────────────────── │
│ wlan1: 外部网络 │
│ wlan0: 本地 AP │
│ NAT 转发服务 │
└───────┬────────┘
│
Wi-Fi 网络(AP)
│
┌──────────v──────────┐
│ Rockchip 设备 (Client) │
│ ───────────────────── │
│ Mender Client 模块 │
│ rootfsA/B 双分区 │
│ 自动回滚机制 │
└──────────────────────┘
这就是所谓的 Jetson 中继式 OTA 架构:
- Jetson 对外通过 外部 Wi-Fi 模块(wlan1) 访问互联网。
- Jetson 对内通过 内置 AP(wlan0) 让 Rockchip 板卡接入。
- Rockchip 使用 Mender Client 访问 Mender Server,由 Jetson 负责网络转发。
这种方式兼具:
- 云端统一管理;
- 内网设备集中升级;
- 可靠的回滚机制。
三、Mender OTA 基本概念
1. Mender 的角色组成
| 组件 | 功能 |
|---|---|
| Mender Server | 云端控制中心,负责设备注册、Artifact 管理、升级调度 |
| Mender Client | 运行在设备端的守护进程,检测版本、下载、验证并执行升级 |
| Artifact | Mender 升级包,包含 rootfs 镜像、签名、版本号等信息 |
2. OTA 升级核心流程
1️⃣ 设备启动 → Client 上报当前版本信息
2️⃣ Server 检查版本差异
3️⃣ Server 下发更新指令
4️⃣ Client 下载 Artifact(通过 HTTPS)
5️⃣ 写入备用 rootfs 分区(B)
6️⃣ 更新 Boot 环境 → 重启
7️⃣ 新系统启动 → 上报成功
8️⃣ 若失败 → 自动回滚到 A 分区
这就是 Mender 的核心机制:A/B 分区 + 自动回滚 + 签名验证。
四、Jetson 中继节点的实现逻辑
1. 网络层设计
Jetson 作为中继节点,需要两张网络接口卡:
wlan1:连接外部互联网。wlan0:建立本地 AP,供 Rockchip 连接。
2. 开启 AP 模式
sudo nmcli dev wifi hotspot ifname wlan0 ssid OTA_AP password 12345678
3. 启用网络转发
sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -A POSTROUTING -o wlan1 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o wlan1 -j ACCEPT
sudo iptables -A FORWARD -i wlan1 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
这样 Rockchip 板子连接到 Jetson 的 AP 后,就能访问外部网络。
4. 验证外部连通性
在 Rockchip 上执行:
ping 8.8.8.8
curl https://mender.yourdomain.com
如果可以访问,说明 Jetson 的转发配置正确。
五、Rockchip 设备端配置(Client)
1. 使用 Yocto 集成 Mender
假设 Rockchip Yocto BSP 基于 linux-rockchip-5.10 分支,可通过添加 meta-mender 层支持 OTA。
bitbake-layers add-layer ../meta-mender/meta-mender-core
bitbake-layers add-layer ../meta-mender/meta-mender-demo
修改 conf/local.conf:
INHERIT += "mender-full"
MENDER_SERVER_URL = "https://mender.yourdomain.com"
MENDER_TENANT_TOKEN = "YOUR_TOKEN"
MENDER_ARTIFACT_NAME = "rockchip-v1.0"
MENDER_STORAGE_DEVICE = "/dev/mmcblk0"
配置分区:
part /boot --source bootimg-partition --fstype=vfat --size=32M
part / --source rootfs --fstype=ext4 --label rootfsA --size=512M
part / --source rootfs --fstype=ext4 --label rootfsB --size=512M
part /data --fstype=ext4 --label data --size=256M
2. 启动 Mender 服务
systemctl enable mender-client.service
systemctl start mender-client.service
3. 检查连接状态
mender show-artifact
journalctl -u mender-client -f
输出应显示设备已注册到云端 Mender Server。
六、Mender Server 部署(云端)
1. 服务器搭建(Docker)
在云主机或 Jetson 外部服务器上执行:
git clone https://github.com/mendersoftware/mender-server
docker-compose up -d
Mender Web 控制台默认访问地址:
https://<server_ip>/ui/
2. 上传 Artifact
使用 Mender 工具创建升级包:
mender-artifact write rootfs-image \
-t rockchip \
-n rockchip-v1.1 \
-f tmp/deploy/images/rootfs.ext4 \
-o update-v1.1.mender
上传到 Mender Server → 分配到目标设备组。
七、OTA 升级逻辑流程(完整路径)
1️⃣ 阶段一:系统检测
- Mender Client 定期轮询云端版本。
- 若发现新版本,则准备下载。
2️⃣ 阶段二:网络中继
- Rockchip 通过 Jetson 的 NAT 转发访问 Mender Server。
- Jetson 并不参与升级决策,仅提供路由。
3️⃣ 阶段三:下载与验证
- Rockchip 下载
.mender升级包到/var/lib/mender - 校验签名与版本号。
4️⃣ 阶段四:写入备用分区
-
当前运行 rootfsA,则将更新写入 rootfsB。
-
更新完成后修改 U-Boot 环境变量:
fw_setenv mender_boot_part 3 fw_setenv mender_boot_part_hex 3 fw_setenv upgrade_available 1
5️⃣ 阶段五:重启测试
- 系统重启进入 B 分区,Mender 标记“boot success”。
- 若启动失败,自动回滚到 A。
6️⃣ 阶段六:上报状态
- 若 B 启动成功,Client 向 Server 报告更新完成。
- 若失败,回滚并上报“failure”。
八、逻辑图:Mender OTA 在 Jetson 中继下的传输路径
+------------------------------------------------------+
| Mender Cloud |
|------------------------------------------------------|
| Artifact Storage | Device Management | Web Console |
+--------------------------+---------------------------+
│ HTTPS (443)
│
+----------v----------+
| Jetson (Relay Node) |
|---------------------|
| wlan1: Internet |
| wlan0: AP (NAT) |
| iptables 转发 |
+----------+----------+
│ Wi-Fi
│
+----------v----------+
| Rockchip Client |
|---------------------|
| Mender Client |
| rootfsA / rootfsB |
| 自动回滚机制 |
+---------------------+
九、优点与工程价值
| 特性 | 说明 |
|---|---|
| 云端统一管理 | Mender Server 可批量分发版本、回收设备信息 |
| 边缘安全隔离 | Rockchip 不直接暴露公网,仅通过 Jetson NAT 转发 |
| 自动回滚机制 | 防止升级失败导致系统损坏 |
| 灵活部署 | 可部署于局域网、云端或混合环境 |
| 扩展性强 | Jetson 可作为中继节点为多台 Rockchip 提供 OTA 接入 |
十、与本地升级的区别
| 维度 | OTA(Mender) | 本地升级(U盘/脚本) |
|---|---|---|
| 控制方式 | 云端集中控制 | 手动触发 |
| 网络依赖 | 需要外部网络 | 不依赖网络 |
| 安全性 | 支持签名验证 | 一般无签名 |
| 回滚机制 | 自动 | 无 |
| 适用场景 | 长期维护、大规模部署 | 小批量测试 |
所以,即使 Rockchip 是通过 Jetson 的 AP 间接上网,这仍然是 真正的 OTA(远程升级),区别仅在于中间多了一层转发逻辑。
十一、实战建议与注意事项
-
保证 Jetson 的 NAT 稳定性
可使用iptables-persistent或systemd脚本在开机自动恢复转发表。 -
使用 HTTPS + 签名验证
避免中间人攻击。 -
在 Rockchip 上配置 watchdog
OTA 过程中若死机可自动重启。 -
限制带宽或使用压缩镜像
Wi-Fi OTA 传输时间长时可压缩 rootfs 镜像。 -
测试回滚机制
模拟升级失败,验证系统能否安全返回原分区。
十二、总结
✅ 这种方案是标准 OTA 架构的一种扩展形式,Jetson 作为中继节点提供网络桥接,而非 OTA 控制节点。
关键逻辑:
- Rockchip 运行 Mender Client
- Jetson 提供双 Wi-Fi 网络与 NAT 转发
- 云端 Mender Server 统一管理 Artifact 与设备状态
这种模式的优势在于可实现:
- 多节点集中 OTA
- 边缘隔离的安全升级
- 跨网络环境的远程部署
最终,通过这种 Jetson 中继式 Mender OTA 架构,Rockchip 设备即便在无法直连公网的情况下,也能获得完整的云端 OTA 升级能力。它是目前工业类和 AI 边缘系统中一种安全、合理、工程上可落地的最佳实践方案。
⚡ 内地版本:电子工业出版社已出版,并在大陆热销。Yocto项目实战教程:高效定制嵌入式Linux系统
⚡ 海外版本:繁体中文版支持全球华人购买,让更多开发者轻松掌握嵌入式系统核心技能。 金石堂购买链接
🎥 更多学习视频请关注 B 站:嵌入式Jerry
Jetson中继Mender OTA实战
3960

被折叠的 条评论
为什么被折叠?



