VoLTE 基础与通话验证
本文档面向在 DiTing 主控平台上集成 Hi2131E VoLTE 能力的开发者,介绍系统架构、整机通话验证、主控侧公开 RIL 接口、AT 命令以及 VoLTE NV 配置。Hi2131E 固件和 IMS 核心能力以二进制形式交付;开发者通过公开接口和协议进行集成,不修改闭源实现。
VoLTE 开发背景知识
VoLTE架构说明
VoLTE(Voice over LTE,长期演进语音承载)是3GPP标准定义的,基于IMS网络的LTE语音解决方案。通过IMS网络,移动运营商不仅可以无缝的继承传统的语音、短消息业务,还可以将语音通话与丰富的增强功能相整合,提供多样化的服务。本章节描述VoLTE场景下主控芯片和Hi2131E芯片如何实现软件及硬件的二次开发,以最终完成通话业务。
Hi2131E作为支持4G Cat1的Modem蜂窝芯片,提供4G入网数传能力。主控芯片作为穿戴芯片,可提供语音编解码的处理能力。二者配合成为的VoLTE终端,如图1所示。

IMS协议栈(VoLTE基础功能的协议栈)主体代码位于主控芯片,Hi2131E侧支持4G入网功能。和Hi2131E之间存在UART通路和SPI数据传输通路,UART通路传输芯片间的控制指令,SPI通路传输芯片间的数据信息。
表 1 VoLTE系统模块描述
组件名称 |
归属 |
说明 |
|---|---|---|
IMS协议栈 |
主控芯片 |
通过“libims.a”文件,集成编译在主控芯片 SDK版本中。 |
RIL接口 |
主控芯片 |
需要通过主控芯片侧RIL头文件调用。 |
VoLTE相关AT命令 |
Hi2131E |
VoLTE相关AT命令功能,需要通过接入Hi2131E侧的UART串口才可进行发送。 |
当前VoLTE终端提供的自能力如表2所示。
表 2 IMS子系统模块划分
VoLTE功能分类 |
说明 |
|---|---|
基本音频呼叫 |
支持。 |
有卡紧急呼叫 |
支持。 |
呼叫方式 |
支持Precondition资源预留。 |
短信主被叫 |
支持。 |
语音编解码 |
仅支持AMR-WB(mode-set=0-8)编解码。 |
彩铃/漫游 |
支持(IMS网络需支持)。 |
SRVCC |
不支持,仅支持4G网络,无法切换回落。 |
呼叫转移 |
不支持。 |
呼叫保持 |
不支持。 |
三方会议 |
不支持。 |
开发规范和约束
仅在主控芯片的diting版本下支持和Hi2131E芯片的对接调试。
公开接口与闭源边界
| 组成 | 交付方式 | 开发边界 |
|---|---|---|
| 主控侧 RIL 接口 | 公开头文件 | 应用可调用公开接口完成设备、USIM、网络、通话、短信和升级控制 |
| IMS 核心能力 | 预编译 libims.a |
由标准目标链接,不提供内部源码,不进行源码走读或二次修改 |
| Hi2131E Modem | 预烧录/固件包 | 通过 AT 协议和主控 RIL 通路使用,不提供 Hi2131E 侧二次开发接口 |
| 主控适配与状态服务 | 社区 SDK 源码 | 可用于理解初始化、AT 转发和状态查询,不代表开放 IMS 内部实现 |
本章的“快速跑通”基于标准 diting-community 目标已集成的 VoLTE 通路完成整机验证,覆盖主控构建、单板连接和通话流程。
关键接口列表
主控侧通过以下 RIL 接口使用 VoLTE 能力,接口声明见公开头文件。
| 接口 | 用途 |
|---|---|
| ril_at_cmd_sync_get_info | 同步发送 AT 命令并获取响应 |
| ril_register_at_reply_callback | 注册异步 AT 响应回调 |
| ril_get_is_usim_in_position | 查询 USIM 在位状态 |
| ril_get_radio_ims_reg | 查询 IMS 注册状态 |
| ril_set_call_orig_req | 发起语音呼叫 |
| ril_set_call_mt_accept_req | 接听来电 |
| ril_set_auto_answer | 设置自动接听 |
| ril_set_call_rel_req | 结束当前呼叫 |
快速跑通 VoLTE 通话
功能说明与流程
VoLTE 整体交付包含 Hi2131E Modem 和主控侧软件两个部分,通过 UART、SPI、GPIO 等通路建立通信。当前社区版本中,Hi2131E 功能及 AT 命令已经随设备固件提供,开发者构建主控侧 diting-community 目标并完成整机连线、USIM 鉴权和运营商 IMS 注册后,即可验证主叫、被叫和挂断流程。

准备工作
- 使用支持 VoLTE 的 DiTing 版本和已经烧录匹配固件的 Hi2131E。
- 安装可通过核心网鉴权且已开通 VoLTE 的 USIM,并连接天线。
- 按“DiTing 单板外接连线说明”连接供电、主控调试口和 Hi2131E AT/日志口。
- 直接连接 Hi2131E AT 口时,可按本文的 AT 流程发送命令;从 Hi3322 AT 口转发时,使用
AT+IMSAUTOTEST=<2131E AT命令>。转发命令返回的外层OK只表示主控已受理,Hi2131E 的实际响应需要查看异步回调日志。
编译构建
主控侧版本编译
在已初始化一站式 CLI 环境的 PowerShell 中执行:
fbb set-target pack_diting_community
fbb build --clean
fbb flash -f "$env:FBB_SDK_DIR\output\3322\fwpkg\diting-community.fwpkg" --chip 3322 -d --timeout 180
fbb monitor --port COM3 --baud 750000
将 COM3 替换为实际 UART2 日志端口。构建完成后,主控固件包位于 <FBB_SDK_DIR>/output/3322/fwpkg/diting-community.fwpkg。标准目标已经包含 VoLTE、IMS Cat1 通道和 AT 转发配置,无需为本文修改 CMake。
Hi2131E侧版本编译
当前版本中,Hi2131E单板不提供二次开发界面和接口,功能接口和AT命令均已实现。软件版本已经烧录至单板中,直接使用即可。
DiTing单板外接连线说明
现DiTing单板已将主控芯片与Hi2131E芯片整合在同一单板上,以下对该单板外接串口小板以及连线进行说明。
表 1 DiTing单板外接连线说明
DiTing单板模块 |
连接外设 |
说明 |
|---|---|---|
HSUART |
串口小板 |
HSUART1、2、3分别连接串口小板TX、RX、GND。 负责主控芯片版本烧录。 |
UART2 |
串口小板 |
UART2的1、2、3分别连接串口小板TX、RX、GND。 负责AT口打印。 |
USB |
Micro USB线 |
负责Hi2131E的烧录以及AT日志。 |
USB-C |
USB TYPE C |
电源线。 |
VoLTE拨号通话流程
Hi2131E为实现正常的入网功能,需要一张可通过核心网鉴权的USIM卡。
通过AT命令拨打电话
AT命令模块在Hi2131E侧,通过在Hi2131E侧调用相关AT命令,可以实现VoLTE通话。

主叫:
-
开机。
AT+CFUN=1
预期返回:OK
-
发起注册。
AT+CGATT=1
预期返回:OK
IMSSRVSTATUS:0,2(请参见“IMS服务状态更新指示:+IMSSRVSTATUS”章节。)
-
拨打电话。
ATDxxx;
预期返回:OK
+ORIG: 1,0(请参见“发起语音呼叫指示:+ORIG”章节。)
+CALLSTATE: 1,0,1(请参见“呼叫状态上报:+CALLSTATE”章节。)
+CALLSTATE: 1,1,1(收到网侧100trying)
+CONF: 1(请参见“UE收到网络指示:+CONF”章节。)
+CHANNELINFO: 0,1(请参见“主动上报语音带宽信息:+CHANNELINFO”章节。)
说明: 无带内音信息,需本地回铃音上报。此时需要自己制作铃声。
+CALLSTATE: 1,2,1(收到180ringing。)
IRING(请参见“来电指示:IRING”章节。)
+CALLSTATE: 1,3,1(收到invite 200OK,呼叫已经接通。)
+CONN: 1,0(请参见“呼叫接通指示:+CONN”章节。)
-
挂断电话。
ATH
预期返回:OK
+CALLSTATE: 1,4,1(通话结束)
+CEND: 1,100,0(请参见“通话结束指示:+CEND”章节。)
被叫:
-
开机。
AT+CFUN=1
预期返回:OK
-
发起注册。
AT+CGATT=1
预期返回:OK
IMSSRVSTATUS:0,2(请参见“IMS服务状态更新指示:+IMSSRVSTATUS”章节。)
-
接听。
手动接听:ATA(请参见“接听来电:A”章节。)
自动接听:ATS0=x(请参见“设置自动接听:S0”章节。)
预期返回:OK
说明: 自动接听命令建议在注册成功后执行,也可以在开机后执行。 手动接听则是在收到有来电提示(+CALLSTATE: 1,5,1)后执行。
-
挂断电话。
ATH
预期返回:OK
+CALLSTATE: 1,4,1(通话结束)
+CEND: 1,100,0
通过RIL接口拨打电话
RIL接口存在于主控芯片侧,通过在调用相关RIL接口,可以实现VoLTE通话。
主叫:
-
开机。
调用ril_at_cmd_sync_get_info接口(请参见“同步AT命令发送”章节)。
说明: AT命令:AT+CFUN=1 预期返回结果:OK
-
注册入网。
调用ril_at_cmd_sync_get_info接口。
说明: AT命令:AT+CGATT=1 预期返回结果:OK IMSSRVSTATUS:0,2
-
拨打电话。
调用ril_set_call_orig_req接口(请参见“拨打电话”章节)。
-
挂断电话。
调用ril_set_call_rel_req接口(请参见“挂断电话”章节)。
被叫: