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;**
}
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;
}
}
开启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 **
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;
** 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补充业务不能使用时可以检查这里
禁用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能力
- 检查是否存在实体运营商的apn(即不配置这两个属性:mvno_type、mvno_match_data)
- 且实体运营商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
示例
**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;
}
** 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"}
vnd/vendor/mediatek/proprietary/hardware/ril/fusion/mtk-ril/mdcomm/ims/ImsCustomizedUtils.cpp
**配置 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);
**配置 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");
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