跳转至

VoLTE NV 与集成验证

VoLTE相关NV

VoLTE支持的NV配置,均存在Hi2131E上,可以通过Hi2131E的DebugKits工具对这些NV进行配置修改,建议VoLTE相关的NV全部保持默认值配置。

定义路径

  • 公共配置文件:匹配版本的 Hi2131E NV 配置包中的 common.json
  • Hi2131E 独有配置文件:同一配置包中的 acore_ims.json
  • 客户自定义配置文件:同一配置包中的 customer.json

上述文件用于说明 Hi2131E 侧的 NV 配置布局。已交付设备可通过与固件版本匹配的 DebugKits 查看和配置 NV;除明确允许修改的字段外,建议保持默认值。

定义约束

  • 用户新定义的module_id应位于1~255之间。

  • 用户新定义的module_id应按顺序编号,避免重复。

模块说明

参数

说明

模块 ID

31

模块名

IMSA

模块描述

IMS适配层

模块类型

Custom

模块Key

IMS_SIP_CONFIG

Key ID

0x5001

Key 状态

alive

Key 描述

IMS NV配置。

结构类型

#define IMS_PARM_STRING_SIZE  129
#define NUM_TWO_SIZE          2
typedef enum {
    IMS_PARM_URI_FORMAT_TYPE_DEFAULT = 0,        /* default */
    IMS_PARM_URI_FORMAT_TYPE_SIP,                   /* sip */
    IMS_PARM_URI_FORMAT_TYPE_TEL,                   /* tel */
    IMS_PARM_URI_BUTT = 0xFF,
} ims_parm_uri_format_type;
typedef enum {
    IMS_PARM_TRANSPORT_TYPE_UDP = 0,
    IMS_PARM_TRANSPORT_TYPE_TCP,
    IMS_PARM_TRANSPORT_TYPE_BUTT = 0xFF,
} ims_parm_transport_type;
typedef struct {
    ims_parm_transport_type transport_type;
    ims_parm_uri_format_type uri_format;
    uint8_t                 header_compact_enabled;
    uint8_t                 forking_flag;
    uint32_t                server_port;
    uint32_t                timer_sip_reg_value;
    uint32_t                subs_reg_expires;
    uint32_t                rsv1;
    uint32_t                rsv2;
    uint32_t                rsv3;
    uint32_t                rsv4;
    uint32_t                sip_socket_keep_alive_value;
    int8_t                  user_agent[IMS_PARM_STRING_SIZE];
    int8_t                  timer_reg;
    int8_t                  sms_format_timer_dereg[NUM_TWO_SIZE];
    uint32_t                tcp_threshold;
} ims_parm_sip;

默认值

transport_type                 =IMS_PARM_TRANSPORT_TYPE_UDP
uri_format                  =IMS_PARM_URI_FORMAT_TYPE_DEFAULT
header_compact_enabled              =0
forking_flag                    =0(不支持修改)
server_port                 =5060
timer_sip_reg_value             =600000
subs_reg_expires                =2000
rsv1                        =16000(不支持修改)
rsv2                        =17000(不支持修改)
rsv3                        =128000(不支持修改)
rsv4                        =128000(不支持修改)
sip_socket_keep_alive_value         =0(不支持修改)
user_agent[IMS_PARM_STRING_SIZE]        ={0}(不支持修改)
timer_reg                   =0(不支持修改)
sms_format_timer_dereg[NUM_TWO_SIZE]        ={2,0}(不支持修改)
tcp_threshold                   =16500

备注

-

IMS_PARM_VOIP

Key ID

0x5002

Key 状态

alive

Key 描述

IMS VoIP配置。

结构类型

typedef enum {
    IMS_PARM_SESSION_REFRESH_TYPE_UAC = 0x00,        /* Client Refresh */
    IMS_PARM_SESSION_REFRESH_TYPE_UAS,               /* Server Refresh */
    IMS_PARM_SESSION_REFRESH_TYPE_BUTT = 0xFF,
} ims_parm_session_refresh_type;
typedef enum {
    IMS_PARM_SESSION_REFRESH_METHOD_UPDATE = 0x00,         /* Update */
    IMS_PARM_SESSION_REFRESH_METHOD_REINVITE,              /* Reinvite */
    IMS_PARM_SESSION_REFRESH_METHOD_BUTT = 0xFF,
} ims_parm_session_refresh_method;
typedef struct {
    uint8_t                             session_timer_enabled;
    uint8_t                             pre_condition_enable;
    ims_parm_session_refresh_type       session_refresh_type;
    ims_parm_session_refresh_method     session_refresh_method;
    uint16_t                            session_expires;
    uint8_t                             rtp_inactive_timer[2];
} ims_parm_voip;

默认值

session_timer_enabled           =1(不支持修改)
pre_condition_enable            =1
session_refresh_type            =IMS_PARM_SESSION_REFRESH_TYPE_UAC(不支持修改)
session_refresh_method          =IMS_PARM_SESSION_REFRESH_METHOD_UPDATE(不支持修改)
session_expires             =1800(不支持修改)
rtp_inactive_timer[2]           ={10,1}(不支持修改)

备注

-

IMS_PARM_VOIP_CODE

Key ID

0x5003

Key 状态

alive

Key 描述

IMS VoIP语音编码配置。

结构类型

typedef enum {
    IMS_PARM_AUDIO_CAP_AMR_NB_AND_WB = 0x00,        /* AMR-NB and AMR-WB (AMR-NB preferred) */
    IMS_PARM_AUDIO_CAP_AMR_WB_AND_NB,               /* AMR-WB and AMR-NB (AMR-WB preferred) */
    IMS_PARM_AUDIO_CAP_AMR_NB,                      /* AMR-NB */
    IMS_PARM_AUDIO_CAP_AMR_WB,                      /* AMR-WB */
    IMS_PARM_AUDIO_CAP_EVS_AND_AMR_NB_AND_WB,       /* AMR-NB and AMR-WB and EVS (EVS preferred) */
    IMS_PARM_AUDIO_CAP_EVS = 5,
    IMS_PARM_AUDIO_CAP_TYPE_BUTT
} ims_parm_audio_cap;
typedef enum {
    IMS_PARM_AUDIO_CODE_MODE_OCTECT_ALIGN = 0x00,       /* Octet-aligned Mode */
    IMS_PARM_AUDIO_CODE_MODE_BAND_EFFICIENT,            /* Bandwidth-Efficient Mode */
    IMS_PARM_AUDIO_CODE_MODE_EF_AND_OC,                 /* bandwidth-efficient and octet-aligned Mode */
    IMS_PARM_AUDIO_CODE_MODE_OC_AND_EF,                 /* octet-aligned and bandwidth-efficient Mode */
    IMS_PARM_AUDIO_CODE_TYPE_BUTT
} ims_parm_audio_code_mode;
typedef struct {
    ims_parm_audio_cap                  comm_audio_cap;
    uint8_t                             set_nb_amr_mode_flag;
    uint8_t                             set_wb_amr_mode_flag;
    ims_parm_audio_cap                  nr_audio_cap;
    uint32_t                            nb_amr_mode_set;
    uint32_t                            wb_amr_mode_set;
    ims_parm_audio_code_mode            nb_amr_audio_code_mode;
    ims_parm_audio_code_mode            wb_amr_audio_code_mode;
    uint16_t                            ptimer_value;
    uint8_t                             video_resolution; // 以下参数为保持和IMS一致
    uint8_t                             h264_level;
    uint8_t                             video_fps;
    uint8_t                             cvo_flag;
    uint32_t                            video_bitrate;
} ims_parm_voip_code;

默认值

comm_audio_cap          =IMS_PARM_AUDIO_CAP_AMR_WB_AND_NB
set_nb_amr_mode_flag        =0
set_wb_amr_mode_flag        =0
nr_audio_cap            =IMS_PARM_AUDIO_CAP_AMR_NB_AND_WB
nb_amr_mode_set         =0
wb_amr_mode_set         =0
nb_amr_audio_code_mode      =IMS_PARM_AUDIO_CODE_MODE_EF_AND_OC
wb_amr_audio_code_mode      =IMS_PARM_AUDIO_CODE_MODE_EF_AND_OC
ptimer_value                =20
video_resolution        =0
h264_level          =1
video_fps           =30
cvo_flag            =0
video_bitrate           =640000

备注

不支持修改。

IMS_PARM_SS_CONF

Key ID

0x5004

Key 状态

alive

Key 描述

IMS VoIP语音编码配置。

结构类型

#define IMS_PARM_STRING_SIZE 129
typedef struct {
    uint8_t     conf_factory_uri[IMS_PARM_STRING_SIZE];
    uint8_t     reject_with_486[3];
} ims_parm_ss_conf;

默认值

conf_factory_uri                       ={0}
reject_with_486                        ={0}

备注

不支持修改。

IMS_PARM_SS_SECURITY

Key ID

0x5005

Key 状态

alive

Key 描述

IMS IPSEC配置。

结构类型

typedef struct {
    uint8_t     null;
    uint8_t     aes;
    uint8_t     des;(不支持修改)
    uint8_t     rsv[1];
} ealgo_capability;
typedef struct {
    uint8_t     md5;(不支持修改)
    uint8_t     sha;
    uint8_t     rsv[2];
} algo_capability;
typedef struct {
    uint8_t                     srtp_flag;(不支持修改)
    uint8_t                     sock_support_linger[3];(不支持修改)
    ealgo_capability            ealgo;
    algo_capability             algo;
} ims_parm_security;

默认值

srtp_flag                   =0
sock_support_linger[3]              ={2,0,0}
ealgo                       ={1,0,0,{0}}
algo                        ={0,1,{0,0}}

备注

-

IMS_PARM_MEDIA

Key ID

0x5006

Key 状态

alive

Key 描述

IMS媒体配置。

结构类型

typedef struct {
    uint8_t        dtx_enable;
    uint8_t        rsv[3];
} ims_parm_media;

默认值

dtx_enable                   = 1
rsv[3]                       ={0}

备注

不支持修改。

IMS_PARM_UE_CAPABILITY

Key ID

0x5007

Key 状态

alive

Key 描述

IMS UE能力配置。

结构类型

typedef struct {
    uint8_t     reserved0;
    uint8_t     reserved1;
    uint8_t     reserved2;
    uint8_t     reserved3;
    uint8_t     reserved4;
    uint8_t     reserved5;
    uint8_t     reserved6;
    uint8_t     reserved7;
    uint8_t     reserved8;
    uint8_t     reserved9;
    uint8_t     reserved10;
    uint8_t     reserved11;
    uint8_t     reserved12;
    uint8_t     reserved13;
    uint8_t     reserved14;
    uint8_t     reserved15;
} uint8_nv_stru;
typedef struct {
    uint16_t     reserved0;
    uint16_t     reserved1;
    uint16_t     reserved2;
    uint16_t     reserved3;
    uint16_t     reserved4;
    uint16_t     reserved5;
    uint16_t     reserved6;
    uint16_t     reserved7;
} uint16_nv_stru;
typedef struct {
    uint32_t     reserved0;
    uint32_t     reserved1;
    uint32_t     reserved2;
    uint32_t     reserved3;
    uint32_t     reserved4;
    uint32_t     reserved5;
    uint32_t     reserved6;
    uint32_t     reserved7;
} uint32_nv_stru;
typedef struct {
    uint8_t                 rsp_sip_timeout;
    uint8_t                 image_attr_flag;
    uint8_t                 att_feature_flag;
    uint8_t                 vdf_switch;
    uint8_t                 keep_alive_flag;
    uint8_t                 ipsec_flag;
    uint8_t                 rsv[2];
    uint8_nv_stru           uint8_nv_para[16];
    uint16_nv_stru          uint16_nv_para[16];
    uint32_nv_stru          uint32_nv_para[8];
} ims_parm_ue_capability;

默认值

rsp_sip_timeout             =0
image_attr_flag             =0
att_feature_flag            =0
vdf_switch              =0
keep_alive_flag             =1
ipsec_flag              =0
rsv[2]                  ={0}
uint8_nv_para[16]
={{0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}, {0}}
uint16_nv_para[16]           ={0}
uint32_nv_para[8]            ={{0, 0, 0, 0, 64, 536870912, 0, 0}, {0}, {0}, {0}, }, {0}, {0}, {0}}

备注

仅支持ipsec_flag。

IMS_PARM_SIP_TIMER

Key ID

0x5008

Key 状态

alive

Key 描述

IMS SIP定时器配置。

结构类型

typedef struct {
    uint32_t    timer_t1_value;
    uint32_t    timer_t2_value;
    uint32_t    timer_t4_value;
    uint32_t    timer_ta_value;
    uint32_t    timer_tb_value;
    uint32_t    timer_tc_value;
    uint32_t    timer_td_value;
    uint32_t    timer_te_value;
    uint32_t    timer_tf_value;
    uint32_t    timer_tg_value;
    uint32_t    timer_th_value;
    uint32_t    timer_ti_value;
    uint32_t    timer_tj_value;
    uint32_t    timer_tk_value;
} ims_parm_sip_timer;

默认值

timer_t1_value  =2000
timer_t2_value  =16000
timer_t4_value  =17000
timer_ta_value  =2000
timer_tb_value  =128000
timer_tc_value  =200000
timer_td_value  =200000
timer_te_value  =2000
timer_tf_value  =128000
timer_tg_value  =2000
timer_th_value  =128000
timer_ti_value  =17000
timer_tj_value  =128000
timer_tk_value  =128000

备注

不支持修改。

IMS_NV_EMERGENCY_URN

Key ID

0x5009

Key 状态

alive

Key 描述

IMS紧急呼叫URN。

结构类型

#define EMC_CATEGOTY_URN_SIZE 6
#define EMC_URN_SIZE 65
typedef struct {
    uint8_t     category;
    uint8_t     urn[EMC_URN_SIZE];
    uint8_t     rsv[2];
} ims_emc_category_urn;
typedef struct {
    ims_emc_category_urn    emc_cat_urn[EMC_CATEGOTY_URN_SIZE];
} ims_nv_emergency_urn;

默认值

{0}

备注

不支持修改。

IMS_PARM_STRING_SWITCH_VALUE

Key ID

0x500A

Key 状态

alive

Key 描述

IMS字符串配置。

结构类型

#define IMS_PARM_STRING_SIZE 129
typedef struct {
    char            phone_context[IMS_PARM_STRING_SIZE];
    char            phone_context_impu[IMS_PARM_STRING_SIZE];
    char            dislay_name[IMS_PARM_STRING_SIZE];
    uint8_t         rsv[1];
} ims_parm_string_switch_value;

默认值

{0}

备注

当前流程不使用该字段。

IMSA_NV_IMS_CTRL

Key ID

0x500B

Key 状态

alive

Key 描述

IMSA参数配置。

结构类型

typedef struct {
    uint8_t                            single_cause_num;     // 临时被禁原因数量
    uint8_t                            single_cause_list[IMSA_NV_MAX_TEMP_PDN_SINGLE_CAUSE_NUM];     // 临时被禁列表
} imsa_nv_pdn_temp_rej_cause_list;
typedef struct {
    uint8_t                            single_cause_num;     // 永久被禁原因数量
    uint8_t                            single_cause_list[IMSA_NV_MAX_PERM_PDN_SINGLE_CAUSE_NUM];     // 永久被禁列表
} imsa_nv_pdn_perm_rej_cause_list;
typedef struct {
    uint8_t                             temp_forb_feature_flag;     // 临时被禁特性控制开关
    uint8_t                             perm_forb_feature_flag;     // 永久被禁特性控制开关
    uint8_t                             rsv[2];
    imsa_nv_pdn_temp_rej_cause_list     pdn_temp_rej_cause_list;    // PDN临时被拒原因值列表
    imsa_nv_pdn_perm_rej_cause_list     pdn_perm_rej_cause_list;    // pdn永久被拒原因值列表
} imsa_pdn_rej_forbidden_ctrl;
typedef struct {
    uint32_t    max_time;           // RFC5626计算重试时间时的maxtime,单位:s
    uint32_t    base_time;          // RFC5626计算重试时间时的basetime,单位:s
    uint32_t    retry_period;        // 注册失败后周期性重试时间间隔,单位:s
    uint32_t    save_retry_times;    // 保存NV配置的IMS注册失败重新尝试次数,0表示无限次尝试
   imsa_pdn_rej_forbidden_ctrl pdn_rej_forb_ctrl;  // 承载被拒控制模块
} imsa_nv_ims_ctrl;

默认值

max_time                       =1800
base_time                   =30
retry_period                =0
save_retry_times            =5
pdn_rej_forb_ctrl                       =[18, [8, 26, 27, 29, 30, 31, 32, 34, 38, 54, 95, 96, 97, 98, 99, 100, 101, 111, 0, 0, 0, 0, 0]], [2, [28, 33, 0, 0, 0, 0, 0]]

备注

-

IMSA_NV_IMS_CONFIG

Key ID

0x500C

Key 状态

alive

Key 描述

IMSA参数配置。

结构类型

typedef struct {
    uint8_t user_info_flag;
    uint8_t auth_type;

    uint8_t esim_switch;
    uint8_t attach_for_ims;
    char impi[128];
    char impu[128];
    char domain[128];
    char pass_word[128];
} imsa_nv_ims_config;

默认值

{0}

备注

attach_for_ims默认值为0,设置为1表示ue入网时使用ims上下文。

PCT用例3GPP TS 34.229-1 19.5.9和3GPP TS 36.523-1 9.2.1.1.28需将attach_for_ims设置为1。

IMSA_UE_CAP

Key ID

0x500D

Key 状态

alive

Key 描述

IMSA UE能力配置。

结构类型

typedef struct {
    uint8_t voice_call_on_ims_support_flag; // IMS语音使能项,1:支持,0:不支持
    uint8_t sms_on_ims_support_flag;  // IMS短信使能项,1:支持,0:不支持
    int16_t call_rsrp_threhold;       // 呼叫门限值
    uint32_t res_ready_timer_len;    // 资源预留定时器时长(2500~3000)
} imsa_ue_cap;

默认值

voice_call_on_ims_support_flag     =1
sms_on_ims_support_flag             =1
call_rsrp_threhold  =-120
res_ready_timer_len                     =2500

备注

-

IMS_PCSCF_DISCOVERY_POLICY

Key ID

0x500E

Key 状态

alive

Key 描述

IMSA NV配置PCSCF地址。

结构类型

#define IMSA_NV_IPV4_ADDR_LEN            4
#define IMSA_NV_IPV6_ADDR_LEN            16
typedef struct {
    uint32_t                          bit_op_prim_pcscf_addr  : 1;
    uint32_t                          bit_op_sec_pcscf_addr   : 1; // 如果bitOpSecPcscfAddr为1,bitOpPrimPcscfAddr也必须为1
    uint32_t                          bit_op_spare          : 30;
    uint8_t                           prim_pcscf_addr[IMSA_NV_IPV4_ADDR_LEN];
    uint8_t                           sec_pcscf_addr[IMSA_NV_IPV4_ADDR_LEN];
} imsa_nv_pdp_ipv4_pcscf;
typedef struct {
    uint32_t                          bit_op_prim_pcscf_addr  : 1;
    uint32_t                          bit_op_sec_pcscf_addr   : 1; // 如果bitOpSecPcscfAddr为1,bitOpPrimPcscfAddr也必须为1
    uint32_t                          bit_op_spare          : 30;
    uint8_t                           prim_pcscf_addr[IMSA_NV_IPV6_ADDR_LEN];
    uint8_t                           sec_pcscf_addr[IMSA_NV_IPV6_ADDR_LEN];
} imsa_nv_pdp_ipv6_pcscf;
typedef struct {
    imsa_pcscf_discovery_policy pcscf_discover_policy;  // P-CSCF获取策略
    uint8_t                     rsv[3];
    imsa_nv_pdp_ipv4_pcscf       ipv4_pcscf;            // 承载IPv4 P-CSCF信息
    imsa_nv_pdp_ipv6_pcscf       ipv6_pcscf;            // 承载IPv6 P-CSCF信息
} imsa_nv_pcscsf_discovery_policy;

默认值

pcscf_discover_policy      =IMSA_PCSCF_DISCOVERY_POLICY_PCO
rsv[3]              ={0}
ipv4_pcscf                  ={0}
ipv6_pcscf                  ={0}

备注

不支持修改。

IMS_SIP_PORT

Key ID

0x500F

Key 状态

alive

Key 描述

IMS注册端口范围。

结构类型

typedef struct {
    uint16_t    ims_min_port;
    uint16_t    ims_max_port;
} ims_sip_port;

默认值

ims_min_port                =5000
ims_max_port                =32000

备注

不支持修改。

IMS_COMM_PARA_CONFIG

Key ID

0x5010

Key 状态

alive

Key 描述

IMS语音端口号范围。

结构类型

typedef struct {
    uint32_t    speech_start;
    uint32_t    speech_end;
    uint32_t    video_start;
    uint32_t    video_end;
} ims_comm_para_config;

默认值

{0}

备注

当前流程不使用该字段。

IMSA_NV_CALL_IMS_CCWA_CTRL_MODE

Key ID

0x5011

Key 状态

alive

Key 描述

-

结构类型

typedef enum {
    IMSA_CALL_CCWA_CTRL_BY_NW = 0,
    IMSA_CALL_CCWA_CTRL_BY_UE = 1,
    IMSA_CALL_CCWA_CTRL_MODE_BUTT = 0xFF,
} imsa_call_ccwa_ctrl_mode;
typedef enum {
    IMSA_CALL_CCWAI_MODE_DISABLE = 0,
    IMSA_CALL_CCWAI_MODE_ENABLE = 1,
    IMSA_CALL_CCWAI_MODE_BUTT = 0xFF,
} imsa_call_ccwai_mode;
typedef struct {
    imsa_call_ccwa_ctrl_mode    ccwa_ctrl_mode;
    imsa_call_ccwai_mode        ccwai_mode;
    uint8_t                     rsv[2];
} imsa_nv_call_ims_ccwa_ctrl_mode;

默认值

ccwa_ctrl_mode                      =IMSA_CALL_CCWA_CTRL_BY_UE
ccwai_mode                            =IMSA_CALL_CCWAI_MODE_ENABLE
rsv[2]                                       ={0}

备注

不支持修改。


基于公开接口集成自己的业务

业务状态机

应用层只组织公开接口的调用顺序和业务状态,不接触 IMS 或 Hi2131E 内部实现。推荐按以下阶段设计:

  1. 调用 ril_get_is_usim_in_position 检查 USIM 是否在位。
  2. 使用 ril_at_cmd_sync_get_info 发送 AT+CFUN=1AT+CGATT=1,确认 Modem 功能和网络附着请求已受理。
  3. 调用 ril_get_radio_ims_reg 或根据 +IMSSRVSTATUS 上报确认 IMS 已注册。
  4. 主叫时调用 ril_set_call_orig_req;被叫时根据产品交互选择 ril_set_call_mt_accept_reqril_set_auto_answer
  5. 根据 +CALLSTATE+CONF+CONN+CHANNELINFO+CEND 更新界面、铃音和音频状态。
  6. 通话结束时调用 ril_set_call_rel_req,并清理应用层通话资源。

异常与恢复设计

  • 每个同步接口都检查返回值,并同时判断 AT 响应内容;接口调用成功不等于网络侧业务成功。
  • 为 USIM 不在位、未附着、IMS 未注册、拨号失败、对端释放和网络释放分别设计状态分支。
  • 对异步 AT 转发,区分主控桥接命令的 OK 与 Hi2131E 的真实响应,避免把“命令已受理”误判为“业务完成”。
  • 在重试前查询当前注册和呼叫状态,限制重试次数,防止在网络不可用时持续拨号。
  • 本地回铃音、蓝牙音频和扬声器音频属于主控媒体业务,按产品音频链路单独验证。

集成验证

至少完成以下验证并记录固件版本、运营商、USIM、信号和日志:

  • 开机后 USIM 识别、网络附着和 IMS 注册成功。
  • 主叫建立、振铃、接通、双向语音和本端挂断正常。
  • 被叫提示、手动/自动接听、双向语音和对端挂断正常。
  • 无卡、弱网、IMS 未注册、对端拒接和异常释放路径能返回到可再次呼叫的状态。

注意事项

  • 仅主控芯片的 diting 版本支持与 Hi2131E 对接调试。
  • Hi2131E 不提供二次开发界面和内部源码;不要将预编译库、固件包或内部媒体测试包装层描述为社区可修改 Demo。
  • 直接连接 Hi2131E AT 口与通过 Hi3322 AT 口转发是两条不同通路。经主控转发时必须使用 AT+IMSAUTOTEST=<命令> 并查看异步响应。
  • VoLTE 通话依赖有效 USIM、运营商 LTE/IMS 网络、正确天线和音频硬件。固件编译成功不能替代整机通话验证。
  • 无带内音信息时,需要主控侧提供本地回铃音;自动接听建议在注册成功后设置。
  • 功能支持范围以“VoLTE 系统模块描述”和能力表为准。SRVCC、呼转、呼叫保持和三方会议等不支持能力不得在应用中默认启用。
  • VoLTE 相关 NV 属于交付配置,除明确允许修改的条目外保持默认值;标注“不支持修改”的配置不得改写。
  • 日志级别、FOTA 包大小限制以及各 AT/NV 小节中的说明均属于运行约束,不能仅依据接口返回值忽略。

常见编译与运行错误

现象 可能原因 处理方法
链接阶段找不到 IMS 符号 目标不是 diting-community,或预编译 libims.a 未按标准配置接入 使用标准目标构建,检查 src/interim_binary/3322/libs/volte/evb_standard/libims.a 是否存在,不修改无关 CMake
主控 AT 口返回 OK,但业务无变化 AT+IMSAUTOTEST 的外层响应只表示转发请求已受理 查看 ims autotest at rsp 异步日志,确认 Hi2131E 的真实响应
USIM 无法识别或无法附着 USIM、卡座、天线、网络或账户能力不满足要求 检查 USIM 在位状态、鉴权能力、信号和运营商网络
已附着但不能拨号 IMS 尚未注册或运营商未开通 VoLTE 查询 ril_get_radio_ims_reg/+IMSSRVSTATUS,确认状态后再拨号
呼叫已接通但无声音 主控音频路由、编解码、扬声器/麦克风或蓝牙链路未就绪 分别验证呼叫控制和媒体链路,检查 +CHANNELINFO 与主控音频日志
指定补充业务无效 当前版本不支持该能力 核对能力表,不使用 SRVCC、呼转、保持或三方会议等未支持功能
升级包制作或升级失败 包大小、版本、签名或串口链路不满足要求 按本文 FOTA 接口限制及2131E FOTA升级包制作工具 用户指南逐项检查