IMS配置

扩展资料### IMS(IP Multimedia Subsystem)

  • 定义与目的:IMS是一个框架,用于提供跨越不同类型网络(例如,移动网络、固定网络等)的多媒体和语音通信服务。其设计目标是支持任何类型的通信服务,无论是语音、视频、消息传递还是Web服务,均通过IP协议进行传输。
  • 组成:IMS基于标准化的网络架构,包括一系列的功能实体和协议,用于处理身份验证、授权、会话建立、计费等。核心组件包括CSCF(呼叫会话控制功能)、HSS(家庭用户服务器)、SLF(订阅定位功能)等。
  • 优势:IMS支持多种访问类型(如LTE、Wi-Fi、固定宽带等),使得服务提供商能够跨网络提供无缝的服务。它还支持服务融合,即用户可以在不同的设备和网络上使用相同的服务。

SIP(Session Initiation Protocol)

  • 定义与目的:SIP是一个信令协议,用于启动、修改和终止跨IP网络的实时会话。这些会话可以包括语音、视频、聊天等多媒体元素。
  • 工作原理:SIP工作在应用层,它定义了建立、管理和终止会话的一系列请求和响应消息。SIP消息可以在用户代理(UA)之间直接交换,也可以通过代理服务器进行中继。
  • 特点:SIP是一个灵活和可扩展的协议,支持多种通信模式(如点对点通信、多方会议等)。它可以与其他网络服务和协议(如DNS、HTTP等)紧密集成,提供丰富的通信服务。

IMS与SIP的关系

  • IMS使用SIP作为其主要的信令协议来控制多媒体会话的建立、管理和终止。在IMS架构中,SIP提供了一种标准化方式来实现各种通信服务,如VoLTE(基于LTE网络的语音通话)、视频通话和即时消息传递等。
  • SIP为IMS提供了必要的信令机制,而IMS为SIP提供了一个全面的网络架构,用于部署、管理和交付多媒体服务。

修改ims默认开关、图标配置及显示

查看carrierConfig配置默认值及其备注可以在以下文件查找(可以自己去挖安卓原生的配置项):
sys\frameworks\base\telephony\java\android\telephony\CarrierConfigManager.java
修改运营商配置,根据carrier-id在对应文件修改

  • carrier-id 在sys\packages\providers\TelephonyProvider\assets\latest_carrier_id\carrier_list.textpb中根据plmn搜索
  • 找不到carrier-id直接用plmn命名模仿相邻文件在该目录新建文件 例:carrier_config_mccmnc_46001.xml
  • 根据carrier-id没有找到对应文件,则模仿相邻文件新建

sys/packages/apps/CarrierConfig/assets/carrier_config_carrierid_1492_O2.xml


默认开启普通漫游
<Boolean name="carrier_default_data_roaming_enabled_bool" value="true"/> 
漫游彩信自动下载
<boolean name="mmsRoamingAutoRetrieveByDefault" value="false"/>
默认关闭volte
<boolean name="enhanced_4g_lte_on_by_default_bool" value="false"/>
-------------------------------------------------------------------
这个是vowif数据首选项,不配是默认wifi  |  配置为1默认蜂窝数据
<int name="carrier_default_wfc_ims_mode_int" value="1" />
默认开启vowifi
<boolean name="carrier_default_wfc_ims_enabled_bool" value="true"/>
隐藏vowifi开关(**需要vowifi能力需要配成true**)
 <boolean name="carrier_wfc_ims_available_bool" value="false"/>  
vowifi选项不可编辑
 <boolean name="editable_wfc_mode_bool" value="false" />  
--------------------------------------------------------------------
默认语音信箱
<string name="default_vm_number_string">*169</string>

WFC字符串显示格式 wfc_spn_format_idx_int

 0: %s
 1: %s Wi-Fi Calling
 2: WLAN Call
 3: %s WLAN Call
 4: %s Wi-Fi
 5: WiFi Calling | %s
 6: %s VoWifi
 7: Wi-Fi Calling
 8: Wi-Fi
 9: WiFi Calling
10: VoWifi
11: %s WiFi Calling
1Boolean Call

以下为自己定义的属性,目前仅在EU软件使用,请根据需要添加对应代码逻辑

 隐藏LTE图标
 <boolean name="oem_show_volte_icon_bool" value="false"/>  
隐藏lte设置菜单
 <boolean name="oem_show_volte_switch_bool" value="false"/>  
仅隐藏WFCSettings里面的菜单(call设置正常显示)
<boolean name="oem_show_only_settings_wfc_menu_bool" value="false"/>

修改volte/vowifi/vilte的支持情况

当前plmn不支持volte/vowifi/vilte时,可以自己模仿相邻文件添加支持

vnd/vendor/mediatek/proprietary/hardware/ril/fusion/libcarrierconfig/carrierconfig.c
{ MCC_MNC_SEPARATOR, "00101" }, / TEST SIM /
** #include <config_data/carrier_config_001_01.h>**

vnd/vendor/mediatek/proprietary/hardware/ril/fusion/libcarrierconfig/config_data/carrier_config_214_05.h
{ RFX_STATUS_KEY_CONFIG_DEVICE_VOLTE_AVAILABLE, "1"},
{ RFX_STATUS_KEY_CONFIG_DEVICE_VT_AVAILABLE, "0"},
{ RFX_STATUS_KEY_CONFIG_DEVICE_WFC_AVAILABLE, "1"},

Change-Id:I43efa456ec2a81ef391b1c5279045c0eb25c3b1d

不显示漫游R图标

sys/vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/connectivity/MobileSignalController.java
Change-Id: I295768df237d7b2f843ec150d2b437e638776b59

**按plmn开启 XCAP/Ut **

Change-Id: Ic5702a11bf0b36834460fe9f2c63d45105fe4ddc

6765-ZH189_G5832W1258L135782028384041F_EU_OM/mcu/pcore/custom/modem/common/ps/custom_ssds.c

** 按网络mcc隐藏特殊号码通话记录**

sys/vendor/mediatek/proprietary/packages/services/Telecomm/src/com/android/server/telecom/CallLogManager.java
Change-Id: I790a9051496d4864d252e42ca7c98da7b4b77836

移除某个国家紧急号码

sys/frameworks/opt/telephony/src/java/com/android/internal/telephony/emergency/EmergencyNumberTracker.java

if ("it".equalsIgnoreCase(countryIso) && ("118".equals(eccInfo.phoneNumber)) && !isSimAbsent()) {
** logd("countryIso is IT , not add specific number");**
** continue;**
}
2024-03-20T08:31:01.png

apn配置

sys\device\mediatek\config\apns-conf.xml
mtkA14设备中的路径:/system/etc/apns-conf.xml(如需快速验证可直接修改该文件)

<apn carrier="CMWAP"   //显示在Setting中APN列表里的名字
        mcc="460"                //读取IMSI得到的MCC
        mnc="00"                  //读取IMSI得到的MNC
        apn="cmwap"            //apn
        proxy="10.0.0.172"    //代理wap连接一般需要,net连接时为空
        port="80"                  //端口
        mmsproxy="10.0.0.172"  //彩信代理
        mmsport="80"           //彩信端口
user_editable="0"    //可见不可编辑
        user=""                        
        server=""
        password=""
        mmsc="[http://mmsc.monternet.com"](http://mmsc.monternet.com")    //彩信中心
        type="default,mms,hipri,wap"       //该apn支持的类型


GPRS加密算法支持情况

具体可参考:FAQ25432
如果需要禁用 GEA1(当前是默认禁用),则可以在makefile 中启用 DISABLE_GEA1
makefile (mcu/make/common/rule_def/common_def.mak)。
o COM_DEFS += DISABLE_GEA1

其他|Modem修改

注册到22210网络的UE不应视为漫游网络

mcu/pcore/custom/modem/common/ps/custom_l4_utility.c

** BEEONE-2949 **

if (kal_mem_cmp(mcc_mnc,"22249",5) == 0)
{
if (kal_mem_cmp(plmn,"22201",5) == 0)
{
custom_is_on_hplmn = KAL_TRUE;
}
}

2024-03-20T08:31:34.png

开启WFC紧急

开启WFC紧急:
nvram_vdm_ads_profile_ptr->profile_emerg.general_setting_emerg.allow_wfc = 1;

modem\6765-ZH189_G5832W1258L135782028384041F_EU_OM\mcu\common\modem\sbp\sbp_nvram_vdm_config.c

根据plmn配置EVS功能

6765-ZH189_G5832W1258L135782028384041F_EU_OM/mcu/pcore/custom/modem/common/ps/custom_imc_config.c

#ifdef __EVS_SUPPORT__
nvram_ims_profile_ptr->ua_config.evs_support = 1;
nvram_ims_profile_ptr->ua_config.UA_call_codec_order1 = 17;
#endif /* __EVS_SUPPORT__ */

参考修改: Change-Id: Ic916a5cf735e4828b29978c0c62251be6c615014

等待呼叫应该基于终端

mcu/pcore/custom/modem/common/ps/custom_ssds.c

参考修改:6603
**BEEONE-2974 BEEONE-2976 **

2024-03-20T08:32:08.png

ECC应该是CSFB

mcu/common/modem/sbp/sbp_nvram_vdm_config.c

nvram_vdm_ads_profile_ptr->profile_emerg.general_setting_emerg.allow_ims = 0;
nvram_vdm_ads_profile_ptr->profile_emerg.general_setting_emerg.allow_wfc = 0;

2024-03-20T08:33:10.png

** Enable VoLTE Roaming **

mcu/pcore/custom/modem/common/ps/custom_imc_config.c

nvram_ims_profile_ptr->imc_config.ims_roaming_mode = 1;

**[FAQ15745] 如何从log里确认手机支持的UIA/UEA **

仅支持CS

mcu/pcore/custom/modem/common/ps/custom_ssds.c
当Xcap补充业务不能使用时可以检查这里
2024-04-03T08:56:04.png

禁用IMS紧急呼叫

mcu/common/modem/sbp/sbp_nvram_vdm_config.c

nvram_vdm_ads_profile_ptr->profile_emerg.general_setting_emerg.allow_ims = 0;

Emergency call over SIP(需再确认)

mcu/common/modem/sbp/sbp_nvram_vdm_config.c

nvram_vdm_ads_profile_ptr->profile_emerg.general_setting_emerg.allow_ims = 0;

【FAQ20673】无法注册vowifi

需要检查实体运营商的apn是否有配置wfc能力

  1. 检查是否存在实体运营商的apn(即不配置这两个属性:mvno_type、mvno_match_data)
  2. 且实体运营商apn bearer_bitmask是否有配置18

重启手机后无法注册vowifi

参考: ALPS08756247
** mcu/pcore/custom/modem/common/ps/custom_iwlan_config.c**

wans_ims_wlan_roaming_barring_enable = KAL_FALSE;
以下内容配置为相同(KAL_TRUE)
ims_wlan_no_location_cell_last_cell_as_home_enable
wans_ims_wlan_use_nv_md_srv_if_unknown_home_in_flight_mode
wans_location_enable

**[FAQ25316] 如何启用/禁用 IMS、wifi 短信 **

mcu\pcore\custom\modem\common\ps\custom_sdm_utility.c

  • sdm_cust_prefer_sms_over_sgs_to_ims_tbl[]:定义了在哪些网络运营商下,系统应优先通过SGs(而非IMS)发送SMS(1表示偏好SGs)。
  • sdm_cust_sms_over_wifi_allowed_tbl[]:指定了哪些网络运营商允许通过WiFi发送SMS(0表示禁用-SMS over IP)。
    sdm_cust_retry_domain_preference_tbl[]:为不同的网络运营商设置了SMS重试的域名偏好。
  • sdm_cust_sms_over_cs_when_2g_call_on_going_tbl[]:确定当2G呼叫进行中时,是否允许通过CS(电路交换)网络发送SMS。
  • sdm_cust_sms_over_wifi_preference_tbl[]:定义了在哪些网络运营商下,系统偏好通过WiFi发送SMS。
  • sdm_cust_sms_over_ip_allowed_tbl[]:指出了哪些网络运营商允许通过IP网络(例如WiFi或LTE)发送SMS。
  • sdm_cust_sms_over_cs_when_roaming_tbl[]:指定了在漫游条件下,是否优先通过CS网络发送SMS。
  • sdm_cust_sms_over_wifi_allowed_in_roaming_tbl[]:定义了在漫游条件下,哪些网络运营商允许通过WiFi发送SMS。

参考:Change-Id: Icc9252f89a7d5ee3a7f766e4529555cf33345afb

当UE收到来自NW报错时走CSFB

LJ MTK不写清楚,配置路径在mcu\pcore\custom\modem\common\ps\custom_ssds.c
示例2024-04-03T09:17:41.png
2024-04-03T09:18:03.png

**IMS implementation for A1 Croatia--ch-aw-recv=-1 **

mcu/pcore/custom/modem/common/ps/custom_imc_config.c

  		nvram_ims_profile_ptr->ua_config.ch_aw_recv                         = -1; 

**IShould only setup one data PDP session **

mcu/pcore/custom/modem/common/ps/custom_imc_config.c

  if (0 == (kal_mem_cmp(mccmnc, "23001", 5)))
	{
		*atcmd_req_type = CUSTOM_SSDS_PATH_TYPE_CS_ONLY;
        return  KAL_TRUE;
	} 

2024-04-03T09:54:27.png

** To include tag country on SIP header P-access-network-info (PANI) **

mcu/pcore/custom/modem/common/ps/custom_imc_config.c

  		nvram_ims_profile_ptr->ua_config.ch_aw_recv                         = -1; 

** 是否支持srvcc **

mcu/pcore/custom/modem/common/ps/custom_imc_config.c

b0: SRVCC

b1: aSRVCC

b2: midSRVCC

b3: bSRVCC

nvram_ims_profile_ptr->ua_config.srvcc_feature_enable = 0x000F; // enable SRVCC, aSRVCC, bSRVCC and mid-sRVCC
C

**配置 SIP message User Agent **

vnd/vendor/mediatek/proprietary/hardware/ril/fusion/libcarrierconfig/config_data/carrier_config_xxx_xx.h

{ RFX_STATUS_KEY_CUSTOMIZED_USER_AGENT_FORMAT, "234"}
2024-04-03T09:44:19.png
vnd/vendor/mediatek/proprietary/hardware/ril/fusion/mtk-ril/mdcomm/ims/ImsCustomizedUtils.cpp
2024-04-03T09:43:07.png

**配置 XCAP User Agent **

apps/module/utinterface/custom/src/CustomUtConfig.cpp

  		strncpy ( (char*)nvram_ims_profile_ptr->ua_config.user_agent,  
			"TCL T433D / Android 14 Go (E11E)", 
			sizeof (nvram_ims_profile_ptr->ua_config.user_agent)-1);

2024-04-03T09:48:17.png

**配置 IMS

User Agent **
apps/module/utinterface/custom/src/CustomUtConfig.cpp

SET_STR("21630", IDX_STR_UA_PREFIX, "");
SET_STR("21630", IDX_STR_UA_MODEL, "TCL-T433D-E11E");
SET_STR("21630", IDX_STR_UA_DEFAULT, "XCAP Client");
2024-04-03T09:46:38.png

IMS implementation for A1 Serbia--SMS over SMSIP

6765-ZH189_G5832W1258L135782028384041F_EU_OM/mcu/pcore/custom/modem/common/ps/custom_imc_config.c

					nvram_ims_profile_ptr->ua_config.sms_network_types                  = 0x03;  //lzerong  modify 20240308 IMS implementation for A1 Serbia--SMS over SMSIP
					nvram_ims_profile_ptr->imc_config.sms_support                   	= 1; 	//lzerong add 20240308 IMS implementation for A1 Serbia--SMS over SMSIP

语言&&运营商信息

全球语言缩写大全 | MuLogin帮助文档

95~我想带你去海边