
Jiang-sustech/REA-ZWO

Notes and scripts from studying how a telescope controller's firmware is built: its INDI-based stack, plain JSON-RPC on port 4700 and the three hardware generations; no vendor firmware is included.

Jiang-sustech/REA-ZWO

Notes and scripts from studying how a telescope controller's firmware is built: its INDI-based stack, plain JSON-RPC on port 4700 and the three hardware generations; no vendor firmware is included.
Why it is listed: Interoperability research on the author's own hobby hardware; the repo deliberately ships no vendor binaries.
安装方法请查看原始来源。
用 REA(Reverse Engineer Anything — 给 AI agent 接上 Ghidra / IDA / Hopper 的 MCP 工具链)来拆 ZWO ASIAIR 天文盒子的固件。
本仓库只存放调研结论、脚本、笔记和抓包。 不存放 ZWO 的原厂固件、镜像或提取出的二进制——原因见文末《法律边界》。
⚠️ 寻找接手人 本仓库发起者没有 ASIAIR 设备,纯静态条件下能做的调研已基本完成。 继续推进(取 OTA 更新包、补全协议、验证跨代一致性)需要有人手上有实机。 详见
HANDOFF.md—— 里面列了待办、优先级和参与方式。
截至 2026-10-11 的调查结果。逐条证据见
docs/findings-01-架构底细.md。
ASIAIR 不是自研系统,是三层拼装:
| 层 | 实际是什么 |
|---|---|
| 应用层 | 魔改 INDI(C++,XML 协议)为核心。赤道仪走 INDI,单反走 gphoto2,ZWO 自家相机 / 电调 EAF / 滤镜轮 EFW 走闭源 SDK(libASICamera2.so、libasi) |
| 二进制 | 设备 /home/pi/ASIAIR/bin/:zwoair_imager、zwoair_guider、zwoair_updater、zwoair_daemon.sh。C / C++,未见 Go 痕迹 |
| 内嵌开源 | FFmpeg 4.2.2-Kodi、libyuv、OpenCV、IJKPlayer、SQLCipher / MMKV、TUTK P2P、RKNN 模型(nanotrack 目标跟踪) |
| OS | 魔改 Raspberry Pi OS / Raspbian(Debian,32-bit armhf),自编 kernel 4.19.x |
| 通信 | 明文换行分隔 JSON-RPC,无加密。主控制 4700;另有 4800/4801/4900/4500/4400 侧通道;OTA 在 4350/4360 |
| 手机 App | Android 原生 com.zwoasi.asiair,v3.0.0,约 1.17 GB |
| 型号 | 取固件方式 | 风险 |
|---|---|---|
| ASIAIR Pro | 拔 SD 卡 → dd | 最低 |
| ASIAIR Plus(CM4,早期 32 GB) | USB-C + rpiboot 挂 eMMC(reset 键接 nRPI_BOOT) | 低 |
| ASIAIR Plus 256GB / Mini(Rockchip RK3568B2 / RV1126) | maskrom + rkdeveloptool | 高——ZWO 不提供任何官方镜像,进不了 maskrom 就是砖 |
| 层 | 跨代共用? | 说明 |
|---|---|---|
| 应用层 | ✅ 全型号共用,单一 armhf | 一套 asiair_armhf.deb + indi-y_armhf.deb + libgphoto2 喂所有机型;连 Seestar 都共用 |
| OS 层 | ❌ 按 SoC 分叉 | Pi 系(Pro、AA+ CM4)与 Rockchip 系(Mini、AA+ 256GB)两套底座 |
所以逆向目标锁定 asiair_armhf.deb 就对了,跟手上是哪台无关。「型号决定路线」指的是怎么把固件取出来,不是分析对象。
逐条证据见 docs/findings-02-跨代共性.md。
先拆 .deb,不要先拆机器。 官方更新包是 Debian 包 asiair_armhf.deb:
ar x asiair_armhf.deb # → control.tar.xz / data.tar.xz / debian-binary
unxz data.tar.xz
tar -xvf data.tar # → home/pi/ASIAIR/{bin,lib,config,model}
拆出来的 bin/zwoair_* 就是主目标,全程不碰硬件、零变砖风险。
包名 armhf = 32 位 ARM,本身即印证了它照 Raspberry Pi OS(armhf)构建。
binwalk / file / readelfasiair_armhf.deb,对 zwoair_imager 做静态摸底(架构、依赖、符号、硬编码协议)zwoair_imager / zwoair_guidernode v24.15.0,npm registry 可达github.com / raw.githubusercontent.com 从本机直连被重置,api.github.com 正常。下载 Ghidra、OpenAstro 等 GitHub 资源需要代理.gitignore 已按此设置了排除规则。