android: match official libcoresdk handshake - 66f cali-info, 670+EP0x84 cali fetch w/ cache, drop legacy 66b/pre-start FFC

This commit is contained in:
ZXCLI
2026-09-10 02:01:26 +08:00
parent 1a2fc7abb8
commit 8ecd50228a
5 changed files with 158 additions and 28 deletions
+26
View File
@@ -290,6 +290,32 @@
- 预期:本轮装上后,日志应出现 `first reads [0] n=...` 与递增的 frames/rendered
画面出图。若 timeouts 持续上涨且 reads=0,再看 5s re-kick 与 halted 状态。
## 用户反馈修复 第十五轮(2026-09-10BREAKTHROUGH:逆向官方 libcoresdk 找到缺失握手)
- [x] **用户回传第三轮日志**clear_halt 修复已生效(0x81 每 500ms 健康轮询 25s
无遗漏),但相机确实 0 字节;66b 仅在相机上电后响应一次,随后对一切命令
沉默,~27s 后相机掉线重启。**官方 App 在同一手机正常** → 排除供电/硬件。
- [x] **逆向 analysis/ida/export 的 libcoresdk(arm64) 反编译(官方在用的库)**
- `CNetComm` 命令层全貌:66f=ReadCaliInfo(响应 0x5BB5B55E pair={u64 标定
文件大小, u64 版本});**670=GetCaliFile**(响应带大小 → 从 **EP 0x84**
按 ≤512KB 块、60s 超时读回标定文件;日志串 "First running on new host,
it will cost some time for initializing...");672=FFC673=START
674=STOP676/677=省电参数(AutoPowerSave,非图像传输)。
- **官方安卓连接序列根本不发 66b/66c**66b 是 PC libmagcore 旧演示遗留),
也不发预启动 FFC;序列 = 66f →(缓存缺失)670+0x84 拉取 → 读线程 →
50ms → START。FFC 由帧驱动(pipeline onFfc)。
- 推断:我们一直发的 66b 把该固件带入旧式握手模式并卡死(66b 有响应、
之后全哑、看门狗 ~25s 重启)——与全部日志吻合。
- [x] **IrSession 按官方序列重写连接**66f1000ms 读,解析 pair)→ 缓存
`files/cali/magcore.cali.<version>` 命中则直接用 → 否则 670 + EP 0x84
拉取(60s/块,进度日志,成功后写缓存)→ loadDdt(拉取文件优先,失败回退
内置 DDT)→ 50ms → START。删除 66b/66c/预启动 FFC×2;首帧后补发一次
66b 拿 info 块(MDT 用)。UsbTransport 加 endpointByAddress()。
- [x] 构建+单测全过;APK 已更新(11.87MB)。
- 预期日志特征:`66f cali-info ok` + `cali pair: size=1856416...`
`first run on this host: fetching cali file...``cali fetched+cached`
`first reads [0] n=...` → frames 递增 → 出图。
## 待办
- 真机USB实测(温度绝对值标定、FFC/录像/MDT保存端到端)——进行中: