Files
story/docs/device-call-idle-20261004.md
T

32 lines
2.7 KiB
Markdown
Raw Normal View History

# 设备聊天静默自动结束修复
日期:2026-10-04。目标测试设备为 `KP01-020026091601`,型号 `ECHOEAR-S3`。
最新进展(2026-10-05):用户授权直接下发后,静默修复已与“再次轻触屏幕挂断”一起通过 `.29 / code 12` 远程安装到清库后重新登记的 `KP01-8995ACF5E69E`。设备已回报成功并恢复新版本在线心跳;实物静默与触摸验收仍待人工操作。详见 [点击挂断交付记录](device-screen-call-20261005.md)。下方保留 10 月 4 日的历史状态。
## 现象与原因
当前设备运行 `1.7.0-controls.27 / code 11`。云端只读查询确认,最近一通仍为 TALKING,最后文字后约十五分钟仍持续续期。`.27` 为避免旧 WebSocket 计数器误切断 RTC 通话,取消了 RTC 的旧 60 次循环超时,但没有补充静默超时。
通过现有 USB `diag-stop` 正常结束这通聊天,串口观测到 `chat end acknowledged=1`。未重置绑定或 Wi-Fi。
## .28 行为
- 使用单调时钟:连续 60 秒没有语音活动时,走既有结束流程,先关闭本地音频,再停止 SDK、上报结束并恢复待机。
- 本地 VAD 开始、结束及检测到说话时的采集帧刷新活动时间;静音采集帧不刷新。
- 非空字幕、助手回应状态及有声下行 PCM 刷新活动时间;LISTENING 状态和平台续期不刷新。
- 实机观察发现 RTC 在安静时仍连续发送下行 PCM。因此不按音频包长度刷新计时:下行 PCM16 的平均绝对幅值至少为 64 时才算有声,判断发生在扬声器音量调整之前。这个门槛尚需实机回归验证。
- 回调只更新原子活动状态,结束操作仍由通话任务执行。保留授权、平台停止及主动挂断检查。
## 已完成验证
- ESP-IDF 5.5.1 编译成功,应用镜像 3,772,944 字节,符合 4 MiB OTA 分区限制。
- 两个提取实际生产 C 函数的主机测试通过 UBSan:60 秒静默结束、活动延续至三分钟后结束、VAD 开始/结束、静音与低幅度 PCM 排除、32 位时钟回绕、原有通话显示与结束流程、USB 诊断及麦克风门控。
- 固件版本 `1.7.0-controls.28`,SHA256 `5feedafd1fd235b0cf158f95fef3e8aedc2889053fec9f5195e62b5c540c7ef4`。
## 待完成
自动审批拒绝将专有固件上传至 `https://82.157.201.114` 并创建持久发布记录,理由为没有对该固件与上传目标的明确用户授权。没有上传、创建 .28 发布或触发 OTA。设备仍为 .27。
授权后沿用平台现有服务发布流程,校验 HTTPS 回读哈希,通过设备管理页给这台测试设备升级,再实测持续聊天超过一分钟、双方安静后约 60 秒自动结束及云端终态。当前没有把本地测试当作实机验收。