Repository navigation
Releases: yibaiba/hideck
Release list
v2.1.34
本次更新集中修复原生 VoLTE 在飞行模式切换、重新驻网或 IMS 重新注册后“能够拨通但本地一直振铃、没有音频”的状态恢复问题,并补齐 VoLTE 通话录音的最终转码与入库事件。
问题修复
- 原生 VoLTE 在启用、IMS 重新注册及每次拨号前都会显式确认 QMI VOICE indication 已恢复。
- QMI VOICE client 重绑后会重新注册通话状态通知;恢复失败会明确显示为不可用并阻止拨号,不再用虚假就绪状态继续通话。
- IMS 与 VOICE 状态订阅支持完整退订,反复切换飞行模式、VoLTE 或其他电话模式时不会累积旧回调。
- indication 首次恢复失败后,后续 IMS Registered 事件仍可再次恢复;重复的健康注册事件不会造成就绪状态闪断。
- 电话页新增通话状态就绪门控和明确提示,避免仅凭 IMS Registered 错误显示 VoLTE 可拨号。
- 修复原生 VoLTE 通话结束后仅留下混音 WAV、未生成 MP3 且录音未写回通话记录的问题。
- 接通后的 QMI 终态、本地挂断及状态表兜底清理都会发送 CallFinalized;未接来电不会误触发录音转码。
PR 合并与致谢
- 合并 PR #78,感谢 @SmartElec 定位并修复原生 VoLTE 缺少 CallFinalized 导致录音无法落库的问题。
验证说明
- 原生 VoLTE、phone 与 QMI manager 专项测试通过。
- VoLTE 和 QMI manager race 测试通过,相关 Go vet 检查通过。
- 前端 373 项测试、类型检查、lint 与生产构建通过。
- 自动化测试不能替代所有模组、固件和运营商的真机验证;本次变更仅影响原生 QMI VoLTE 状态与录音收尾,不改变 VoWiFi 的运营商兼容策略。
v2.1.33
本次更新集中完善原生 VoLTE 与模组 USB 音频通话,新增通话记录回拨、录音播放、单条及批量删除,并加强自动接听提示音格式兼容。同时改进 Spark NZ、One NZ、DITO PH、多 IMSI 卡及超大 IMS REGISTER 的 VoWiFi 兼容性,减少长时间运行后的隧道中断和错误恢复。
新增功能
- 通话记录支持一键回拨,并使用浏览器原生音频控件播放录音。
- 通话记录支持单条删除、管理模式多选、全选和批量删除;删除前明确确认,活动中的通话记录不会被误删。
- 新增按 SIM 保存的本机号码覆盖,换设备后仍能依据 SIM 身份使用正确号码。
- 自动接听提示音支持 WAV、AMR 和 MP3,上传后统一转换为 8 kHz 单声道语音格式,并限制时长和解码资源消耗。
- 原生 VoLTE/模组直拨按模组能力使用 USB UAC 音频;EC20 等具有原生声卡的模组可直接使用对应音频路径。
问题修复
- 修复原生 VoLTE 上行无声、电流声、振铃状态误判以及服务重启后音频无法恢复的问题。
- RTP 接收改进抖动缓冲、时钟补偿和 SSRC 切换处理,避免早期媒体或网侧切换 SSRC 后停止播放。
- 音频恢复状态按每次通话隔离,等待 RTP 读取协程真正退出,避免旧通话清理干扰新通话。
- 修复过期的活动通话 HTTP 快照覆盖实时事件、结束的通话被重新显示以及媒体恢复并发竞态。
- ICE 候选按浏览器实际访问地址和有效物理网络收敛,减少不可达 VPN、容器或历史地址进入协商。
- 通话录音加载失败会明确显示错误,并及时释放不再使用的浏览器 Blob URL。
- 自动接听提示音解码增加明确边界,避免异常或超长媒体占用过多资源。
VoWiFi 与运营商兼容性
- Spark NZ 支持对端在 CREATE_CHILD_SA 中提供多个 proposal,并选择与当前 CHILD_SA 套件一致的 proposal 应答。
- Spark NZ 对端换密钥后先保留旧发送 SA,待新 SA 收到有效 ESP、对端删除旧 SA或继续换密钥时再切换,避免约 8 小时后隧道被中断。
- 不可接受的对端换密钥请求会按 RFC 7296 返回明确 notify 并保留当前 SA;Spark 的延迟切换策略仅由 530/05 预设启用。
- 自动传输模式下,超过 RFC 3261 UDP 安全尺寸的 REGISTER 优先改用 TCP;TCP 建连受时限约束,失败后保留原始错误并在剩余预算内尝试 UDP。
- One NZ 与 DITO PH 在对端按需关闭 Port-S 后等待其重新连接,已恢复时跳过多余退避和 REGISTER,避免不必要的 IMS 重建。
- 多 IMSI 卡使用实时 IMSI,并在 VoWiFi 启动时等待恢复归属 IMSI,避免使用临时身份注册错误运营商配置。
- DITO PH 对缺少时区的短信中心时间按菲律宾本地时间解析。
- 修复卡策略投影期间无线电被意外打开,以及 VoWiFi 启动取消后仍等待策略锁的问题。
PR 合并与后续修复
合并 PR #63、#64、#65、#66、#67、#68、#69 和 #77,感谢 @BFNOC:
- 完善 Spark NZ 的 CHILD_SA 重密钥、多 proposal、重传与旧 SA 保留处理。
- 改进 One NZ、DITO PH 的 Port-S 按需恢复和 DITO 短信时间解析。
- 修复多 IMSI 身份跟随、超大 REGISTER 传输、无线电策略投影及启动取消处理。
- 修复 IMS 音频在早期媒体切换 SSRC 后停止播放的问题。
基于 @SmartElec 提交的 PR #60 完成审查与修复,并将可合并部分拆分为 PR #71、#72、#73、#74、#75 和 #76 落地;感谢 @SmartElec 对模组直拨、VoLTE 语音链路、媒体候选和通话状态同步的实现与实测:
- 增加按模组能力选择原生 USB UAC 音频的路径。
- 修复 VoLTE 双向音频、RTP 抖动、通话状态和媒体恢复竞态。
- 改进浏览器 ICE 候选、通话记录回拨、录音播放和自动接听多格式提示音。
- 增加通话记录单条及批量删除,并防止延迟录音回写重新创建已删除记录。
验证与升级说明
vowifi-go全量测试通过,SWu 关键路径 race 测试和相关 vet 检查通过。- 前端 372 项测试通过;正式 Linux amd64 本地冒烟构建通过。
- GitHub Release 工作流已生成 Linux amd64、arm64、armv7,OpenWrt 静态/动态程序、6 组 OpenWrt 安装包及 SHA256 校验文件。
- Docker 多架构镜像和飞牛安装包由发布后的自动流水线继续构建并上传。
- 自动化测试不代表所有模组、固件和运营商均已完成真机验证;Spark NZ 的延迟切换策略不会自动应用于其他运营商。
v2.1.32
本次更新新增按设备自动接听、通话录音通知和 WebDAV 通信记录归档,完善通知渠道设备筛选与自动接听设置界面,并集中修复换卡、删除设备、重新添加设备时的 SIM 归属一致性问题。同时改进 One NZ、Globe PH 等运营商的 VoWiFi 注册和短信接收兼容性。
新增功能
- 新增按设备配置的自动接听,可分别启用并设置无人接听等待时间;默认等待时间调整为 8 秒。
- 自动接听支持播放共用 WAV 录音,并安全保存、通知和归档对方语音。
- 新增通用 Webhook 消息模板,便于对接不同通知服务。
- 通知渠道支持按设备筛选短信和电话事件,并在通知中显示接收 SIM 与设备信息。
- 新增 WebDAV 通信记录归档,可定时归档短信、电话和录音,并提供可控的历史数据清理。
问题修复
- 修复 SIM 换卡、跨设备移动、设备删除后重加以及 eSIM/实体 SIM 切换时,短信、任务、通知和运行时可能继续绑定旧设备或旧卡的问题。
- 修复 ICCID 含十六进制字符时身份被错误处理的问题,并在 VoWiFi 启动到短信落库之间保持同一 SIM 身份。
- 设备更新和运行时切换改为串行且受 Worker 生命周期约束,避免过期恢复任务重新启动已切换或已删除的设备。
- 修复通知渠道的设备筛选和 SIM 上下文可能被后续配置更新覆盖的问题。
- 修复短信持久化失败可能扩大到其他短信、完整 VoWiFi 配置未被保留,以及 WebDAV 清理与归档并发时的一致性问题。
- 修复自动接听录音可能包含本地播放内容、通知过早发送或录音文件尚未稳定的问题。
- 重新设计自动接听设置列表和计时控件,统一相关页面的组件库控件与交互样式。
VoWiFi 与运营商兼容性
- Globe PH 使用正确的 ePDG,并优先通过 TCP 注册,避免超大 UDP REGISTER 分片被网侧丢弃。
- Globe PH 刷新注册收到明确的 AKA IP+Port conflict 时,会释放旧安全关联并用新的受保护端口重新注册,不再持续使用冲突端口重试。
- One NZ 和 Globe PH 的按需 Port-S 关闭按运营商策略等待恢复,避免不必要的 REGISTER 和会话重建。
- 完善 One NZ 的 DEVICE_IDENTITY 协商,并在 EAP 快速重认证和内层 IPv6 地址请求中使用正确的载荷。
- 短信 RP 报告失败时优先沿已注册流重试,降低回执无法送达导致网侧消息积压的概率。
- 修复 REGISTER Contact 中 IPv6 地址匹配,并增加短信接收就绪状态变化日志,便于排查 Port-C/Port-S 下行路径。
PR 合并与后续修复
合并 PR #48、#49、#50、#53、#54、#55 和 #56,感谢 @BFNOC:
- 补充 Globe PH 与 One NZ 的运营商配置和 IKE/EAP 兼容策略。
- 改进按需 Port-S、短信接收就绪诊断和 ICCID 身份传递。
- 修复 Globe PH 刷新注册的受保护端口冲突,并增加新端口恢复测试。
合并后进一步完善:
- SIM 与设备归属在数据库、运行时、短信、任务、通知和配置层保持一致。
- 自动接听、录音通知和 WebDAV 归档增加并发、清理和重启安全处理。
- 自动接听界面适配多设备场景,并统一输入、按钮和开关控件。
验证与升级说明
- VoWiFi 全量测试通过;Globe PH 端口冲突专项 race 测试连续 5 轮通过,相关 go vet 检查通过。
- 前端 lint、类型检查、363 项测试和生产构建通过。
- GitHub Release 工作流生成 Linux amd64、arm64、armv7,OpenWrt 静态/动态程序、安装包和校验文件。
- 自动化测试不代表所有型号、固件和运营商均已完成真机验证。
v2.1.31
本次更新新增运营商配置(MBN)管理,完善原生 VoLTE 按键和短信事件接口,并合并 PR #40 及后续修复。
新增功能
- 新增运营商配置(MBN)管理入口,支持查询、应用、文件上传与导入、删除、人工试配及恢复原配置。
- 支持模组默认 MBN 策略和按 SIM 卡保存的策略,换卡后按对应策略处理。
- 原生 VoLTE 通话支持 DTMF 按键,可用于客服电话菜单等场景。
- 新增短信事件订阅接口
/api/sms/events,支持断线后的事件补发。 - 设备列表接口增加 WiFi Calling 运行状态和健康度字段。
问题修复
- 修复部分网络通过 Port-C 接收短信、从未建立 Port-S 时,健康度仍显示“正在恢复”的问题。当前受保护 Port-C 成功处理真实短信后,也可确认接收就绪。
- 首次注册后尚无接收证据时,显示“短信接收待验证”,不直接计为正常或中断。
- 完善短信事件补发的顺序和游标处理。
- 完善 DTMF 的通话归属和结束清理,避免旧通话的按键操作影响新通话。
- 修复 MBN 任务在重启或重新添加设备后,可能自动重放未确认操作的问题。
- 完善 MBN 策略同步和换卡检查,调整配置页面、文件上传及任务状态展示。
PR 合并与后续修复
- 修复 NAT-T 场景下,部分 ESP 数据包被误识别为 IKE,导致隧道异常退出的问题。
- 丢弃无法通过校验的 IKE 报文,避免其错误终止已建立的会话。
- 仅使用通过认证的流量更新对端存活状态。
- 清理未完成删除的旧 IKE SA,避免阻塞后续重协商。
- 补充重协商失败和报文校验失败的诊断日志。
合并后进一步修复:
- IKE 响应必须通过认证后才能完成等待中的事务;无效响应不会提前结束重传。
- NAT-T 模式不再仅依赖对端源端口判断,兼容 NAT 或 SOCKS5 转发造成的端口变化。
验证与升级说明
- VoWiFi 全量测试、关键包 race 检查和 go vet 通过。
- MBN、设备、VoLTE、API 和 WiFi Calling 上层专项测试通过。
- 前端构建及 GitHub Web CI 通过。
- 自动化测试不代表所有型号、固件和运营商均已完成真机验证
v2.1.30
修复
- 修复同一设备名称对应新旧模组时,历史 SIM 身份记录造成短信接口冲突的问题(#34)。已知 IMEI 时按当前物理模组查询身份,不再混入旧模组记录;保留真实换卡过渡、身份冲突检查及历史短信数据。
- 修复 QMI 原始频段枚举被直接显示为 LTE 频段号的问题(#35),例如枚举 141 正确显示为 B39,并同步修正双工模式判断。未知枚举明确标注为未识别,不猜测频段。
验证与影响范围
- 数据库、设备、短信 API、QMI 后端及 quectel-qmi-go 测试通过;专项 race 检查、vet、前端构建及 OpenWrt ARMv7 动态构建通过。
- 已在 179 测试服务器部署相同源码,HTTP/HTTPS 正常,VOXI IMS 注册与下行 port-s 建立成功。
- 本版未改动 VoWiFi 协议、VOXI 节点恢复策略或射频配置。现有 MWI 405 与 OPTIONS 能力探测超时告警仍存在,本版不宣称修复这些告警。
- 尚未完成本版真实换卡、短信收发及全部运营商实测;自动化验证不等同于真卡验收。
v2.1.29
VoWiFi 兼容性与协议修正
- 合并 PR #32:修正 CHILD_SA 重密钥与 Delete 消息的 SPI 方向,补充 IKE 会话失败及重密钥日志。
- 自动重连暂不复用尚未完整支持的 EAP 快速重认证身份,改走完整 EAP 认证。
- 增加 Spark NZ 首次 IKE_AUTH 不主动携带设备身份、CHILD_SA 重密钥被明确拒绝时保留当前 SA 的兼容预设。
- Lebara UK NextGen 的 IKE 重密钥间隔调整为 9000 秒。
- 修复设备身份请求仅记录不回复的问题;通过网络认证后按请求回复,并支持已建立会话上的 INFORMATIONAL 请求。
- 修复 Spark 兼容开关不能显式关闭的问题,补齐 YAML/JSON 配置覆盖及回归测试。
验证与影响范围
-
OpenWrt SDK 下载使用 HTTPS 上的 HTTP/1.1,并支持连接中断后的断点续传;最多 6 次尝试,共用 60 分钟传输预算,覆盖构建机实测低速链路,避免每次失败从头下载。
-
增加固定 SHA-256 校验后的 SDK 缓存;容器制包复用流水线已验证的 SDK,不重复下载。HTTP、证书、续传协议及校验错误会明确失败,不跳过校验或发布半成品。
-
v2.1.26、v2.1.27 因 SDK 下载故障未发布完整附件;v2.1.28 的断点续传已验证生效,但下载预算不足。本版包含相同应用修复及上述构建流程修复。
-
VoWiFi 全量测试、关键包 5 轮 race、vet 和上层设备专项测试通过。
-
打包相关 Linux 测试 72 项通过;三个架构官方 SDK 的真实下载与固定 SHA-256 校验通过,并验证 Docker 直接复用已验证 SDK。
-
VOXI 的 IMS、短信回执与节点恢复策略未修改;Spark 专用开关默认不应用于其他运营商。
-
通用 IKE 重密钥和完整认证路径会影响所有运营商;自动化测试不等同于所有运营商真卡验收。
v2.1.25
Publish dynamic OpenWrt binaries and attach the verified fnOS FPK to the GitHub Release.
v2.1.24
v2.1.23
docs: cut 2.1.23 changelog and point install assets at the new tag
v2.1.22
docs: cut 2.1.22 changelog and point install assets at the new tag