天天看點

vowifi android開關,如何配置VoLTE, ViLTE and VoWifi(IMS config for VoLTE, ViLTE and VoWifi)

Selection

Feature option

打開VoLTE(Enable VoLTE)

MTK_IMS_SUPPORT=yes

MTK_VOLTE_SUPPORT=yes

打開ViLTE(Enable ViLTE)

MTK_VILTE_SUPPORT = yes

如果要支援ViLTE,必須也要支援VoLTE。

(2)VoWifi  Feature

Selection

Feature option

打開WFC (Enable WFC)

MTK_IMS_SUPPORT=yes

MTK_VOLTE_SUPPORT=yes

MTK_WFC_SUPPORT=yes

MTK_EPDG_SUPPORT=yes

MTK_FLIGHT_MODE_POWER_OFF_MD=no(No need after Android-M1)

關閉WFC (Disable WFC)

MTK_WFC_SUPPORT=no

VoWifi有些module屬于binary release,如果基線版本不支援VoWifi, 請使用[Patch Release]模闆送出eservice給CPM申請open VoWifi release patch.(VoWifi feature has binary release module, if basic version does not support VoWifi, please submit eservice to CPM according to [patch release template] for VoWifi patch release.)

所有提到的WFC名稱,等同于VoWifi。如果要支援VoWiFi,必須支援VoLTE。(VoWifi=WFC,if enableVoWifi feature, must enable VoLTE firstly.)

(3) Dual VoLTE (93 platform)

雙VoLTE是否開啟,是由AP project configuation控制的。(Single/Dual VoLTE is Switched by AP Project Configuration.)

L+W/Single VoLTE project

L+L/Dual VoLTE project

MTK_MULTI_PS_SUPPORT = yes

MTK_MULTI_PS_SUPPORT = yes

MTK_MULTIPLE_IMS_SUPPORT =1

MTK_MULTIPLE_IMS_SUPPORT = 2

MTK_PROTOCOL2_RAT_CONFIG=W/G

MTK_PROTOCOL2_RAT_CONFIG=L/W/G

operator定制project 如果要支援dual VoLTE,也是使用上述project config。(Operator Customization project also use above configuration to enable dual VoLTE.)

2.針對某家operator,如何配置支援VoLTE、ViLTE和VoWifi (config volte, ViLTE and VoWifi for operator)

開啟dynamic IMS switch 這個feature後(property persist.mtk_dynamic_ims_switch 值為1),需要根據營運商的mccmnc來配置config以支援VoLTE、ViLTE和VoWifi,MTK預設已經配置好了大部分的營運商, 廠商可以新增支援的營運商。(English: If support dynamic IMS switch feature(value of property persist.mtk_dynamic_ims_switch is 1) and some operator need support volte, ViLTE and VoWifi, must add mccmnc config. MTK has add configs for most of operators. Customer can add new config further.)

FeatureName

device config key (default value)

available config key (default value)

VoLTE

config_device_volte_available (false)

carrier_volte_available_bool (aosp is false, MtkCarrierConfigManager.java put as true)

ViLTE

config_device_vt_available (false)

carrier_vt_available_bool (aosp is false, MtkCarrierConfigManager.java put as true)

VoWifi

config_device_wfc_ims_available(false)

carrier_wfc_ims_available_bool (aosp is false, MtkCarrierConfigManager.java put as true)

如果需要新增支援這些feature的營運商,配置相應mccmnc的config檔案并将相應的config key 設定成true即可。(Config related config files to support these features for new opeator.)

"carrier_xxx_available_bool" 三個key的AOSP預設值是false,但是MtkCarrierConfigManager.java将這三個key的預設值改成了true,是以如果客戶版本有使用MtkCarrierConfigManager.java,就可以忽略available config key的配置,隻用關注device config key。(Available config key "carrier_xxx_available_bool" aosp value is false, mtk overwrite these key value as true in MtkCarrierConfigManager.java. If use MtkCarrierConfigManager.java, you can ignore config available config key.)

device config key和available config key差別:前者指定平台是否支援營運商的VoLTE/ViLTE/VoWifi;後者指定營運商的VoLTE/ViLTE/VoWifi是否可用。比如config_device_volte_available = true并且carrier_volte_available_bool = true,isVolteEnabledByPlatform()這個判斷函數才可能傳回true,如果傳回false代表這兩個config沒有配對。(device config key is specifying whether operator VoLTE/ViLTE/VoWifi is available on device. available config key is specifying whether VoLTE/ViLTE/VoWifi should be available for carrier: independent of carrier provisioning. If false: hard disabled. For example, isVolteEnabledByPlatform() return false if config_device_volte_available or carrier_volte_available_bool hase false config value.)

比如需要為40492新增支援VoLTE,ViLTE and VoWifi,就需要配置以下file(For Example: operator's mccmnc is 40492, if support all these features, config as follow):

(1) device/mediatek/common/overlay/telephony/frameworks/base/core/res/res/values-mcc404-mnc92/config.xml

true

true

true

(2)/vendor/mediatek/proprietary/packages/apps/CarrierConfig/assets/carrier_config_40492.xml

【VoWifi白名單】針對90/91/92平台,VoWifi還有一處額外的“VoWifi白名單”配置檔案需要注意(For 90/91/92 platform, there is another config need pay attention for VoWifi, the file is):

vendor/mediatek/proprietary/packages/services/WifiOffload/res/values/arrays.xml

這個file裡面配置了支援VoWifi的營運商,可以搜尋MTK main log,會找到類似如下列印(This file decide if operator support Wifi calling, if you find below information in main log):

04-11 12:25:42.845471 1684 1684 D WifiOffloadService: notifyMalWfcSupported: simId: 0, supported= 0, isEnabled= 1

"supported= 0"代表這家營運商并沒有列入白名單,需要在arrays.xml裡面增加營運商的mccmnc。("supported= 0" means this operator is not listed in the arrays.xml, then you need add coresponde mccmnc to this file.)

PS:如果MTK main log中能搜到關鍵字“WifiOffloadService”,一定就是90/91/92平台之一。(if  search out “WifiOffloadService” in MTK main log, it must be one of 90/91/92 platform.)

04-11 12:25:42.845471 1684 1684 D WifiOffloadService: notifyMalWfcSupported......

3. 如何通過log确認device config有沒有配置(how to check if config_device_xxx_available value for some operator?)

在AP main log中搜尋"ImsConfigManager",可以看到65507這家operator的支援VoLTE和VoWifi(WFC is VoWifi),不支援ViLTE (search "ImsConfigManager" in AP main log, as below log, 65507 config as config_device_volte_available on, config_device_vt_available off, config_device_wfc_ims_available on.)

06-01 06:19:07.584491 1502 1502 D ImsConfigManager: DYNAMIC_IMS_SWITCH_TRIGGER phoneId:0, simState:LOADED

06-01 06:19:07.584765 1502 1502 D ImsConfigManager: get MtkImsConfigImpl of phone 0

06-01 06:19:07.603638 1502 1502 D ImsConfigManager: SIM loaded on phone 0 with mcc: 655 mnc: 7

06-01 06:19:07.610780 1502 1502 D ImsConfigManager: check iccid:8986xxxxxx3112345678

06-01 06:19:07.645687 1502 1502 D ImsConfigManager: Set res capability: volte = 1, vilte = 0, wfc = 1

06-01 06:19:07.717272 1502 1502 D ImsConfigManager: DYNAMIC_IMS_SWITCH_COMPLETE phoneId:0, simState:LOADED

以上log隻有在開機或是熱插拔卡等SIM卡資訊都讀上來之後才會列印。(these log only print when receive SIM state change with SIM loaded state.)

PS: VoWifi = WFC

4. 如何通過log确認available config有沒有配置(how to check if carrier_xxx_available_bool value for some operator?)

如果貴司版本有使用MtkCarrierConfigManager.java,就可以忽略這部分available config key的配置。(If your project use MtkCarrierConfigManager.java, please ignore config available config key.)

在AP radio log中搜尋"isCarrierConfigSupport",可以看到carrier_xxx_available_bool的支援狀态 (search "ImsConfigManager" in AP radio log, it will indicate VoLTE, ViLTE(vt) and VoWifi(wfc) config status)

//VoLTE config as true

06-05 16:03:34.868076 1780 1920 D MtkImsManager: Volte, isResourceSupport:true, isCarrierConfigSupport:true, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

//ViLTE config as true

06-05 16:03:34.892714 1806 1806 D MtkImsManager: Vt, isResourceSupport:true, isCarrierConfigSupport:true, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

//VoWifi config as false

06-05 16:03:34.896064 1780 1920 D MtkImsManager: Wfc, isResourceSupport:false, isCarrierConfigSupport:false, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

5. 确認開關狀态(How to confirm setting enabled or not?)

VoLTE開關預設是打開的。(VoLTE setting default value is true.)

ViLTE開關預設是打開的。(ViLTE setting default value is true.)

VoWIFI開關預設是關閉的,通過carrier config carrier_default_wfc_ims_enabled_bool可以定制某些operator預設打開。(VoWifi setting default value is false,if you wang config default value as on for some operator, you can through carrier config carrier_default_wfc_ims_enabled_bool):

For example:

vendor/mediatek/proprietary/packages/apps/CarrierConfig/assets/carrier_config_405861.xml

ImsManager 和MtkImsManager也會在radio log列印相關log來印證AP層配置和設定的狀态。如果config配置正确,仍然沒有注冊,還需要确認對應設定裡面的開關有沒有打開。(user load需要打開telephony log 才能看到相關的log。)

//isResourceSupport:true 代表config_device_volte_available已經配置成true,enabled = true代表VoLTE開關是打開的。如果要注冊VoLTE,available + enabled都應該是true。

06-07 13:31:05.055478 1147 1147 D MtkImsManager: Volte, isResourceSupport:true, isCarrierConfigSupport:true, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

06-07 13:31:05.061109 1147 1147 D ImsManager: updateVolteFeatureValue: available = true, enabled = true, nonTTY = true

//isResourceSupport:false 代表config_device_vt_available 沒有配置成true,enabled = true代表ViLTE開關是打開的。如果要注冊ViLTE,available + enabled都應該是true。

06-07 13:31:05.022622 1147 1147 D MtkImsManager: Vt, isResourceSupport:false, isCarrierConfigSupport:true, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

06-07 13:31:05.033264 1147 1147 D MtkImsManager: updateVideoCallFeatureValue: available = false, enabled = true, nonTTY = true, data enabled = true

//isResourceSupport:true代表config_device_wfc_ims_available已經配置為true,enabled = false代表WFC開關是關閉的。如果要注冊VoWifi,available + enabled都應該是true。

06-07 13:31:04.966629 1147 1147 D MtkImsManager: Wfc, isResourceSupport:true, isCarrierConfigSupport:true, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

06-07 13:31:04.979197 1147 1147 D ImsManager: updateWfcFeatureAndProvisionedValues: available = true, enabled = false, mode = 2, roaming = false

//isResourceSupport:false代表config_device_wfc_ims_available沒有配置為true,enabled = false代表WFC開關是關閉的。如果要注冊VoWifi,available + enabled都應該是true。

06-07 13:31:05.076595 1147 1147 D MtkImsManager: Wfc, isResourceSupport:false, isCarrierConfigSupport:true, isGbaValidSupport:true, isFeatureEnableByPlatformExt:true

06-07 13:31:05.086758 1147 1147 D ImsManager: updateWfcFeatureAndProvisionedValues: available = false, enabled = false, mode = 2, roaming = false

6. How to check if AP set enable ims to modem?

(1)對于93平台,在MTK radio log中搜尋"AT+EIMSCFG", 這個AT後面跟着6個value值(search "AT+EIMSCFG" in radio log for 93 modem,it is followed by 6 values):

volteEnable, vilteEnable, vowifiEnable, viwifiEnable, smsEnable, imsEnable

such as

06-01 06:18:43.997299 943 1000 I AT : [0] AT> AT+EIMSCFG=1,0,1,0,1,1 (RIL_CMD_READER_3, tid:512083367152)

indicate:volte on, vilte off, vowifi on, viwifi off, sms on, ims enabled

Details:AT+EIMSCFG=1(volte on),0(vilte off),1(vowifi on),0(viwifi off),1(sms on),1(ims enabled)

(2)對于 90/91/92平台,在MTK radio log中搜尋 "AT+EIMS"(search "AT+EIMS" in radio log for 90/91/92 modem);

AT+EIMSVOICE:Voice capability enable or not

AT+EIMSCCP:Video capability enable or not

AT+EIMSWFC:VoWifi enable or not

AT+EIMSSMS:SMS over IMS capability

AT+EIMSVOLTE: VoLTE enable or not

AT+EIMS:enable/disable IMS functionality

(2.1) If you can't see video call button, you can check if AT+EIMSCCP=1 sent in radio log first.

(2.2) If Switch on VoWifi setting, you can see in radio log:

04-11 12:13:54.989483 982 986 D RIL-OEM : data = AT+EIMSWFC=0, length = 12 //Vowifi off

04-11 12:14:25.033981 982 986 D RIL-OEM : data = AT+EIMSWFC=1, length = 12 //Vowifi on

(2.3) WifiOffloadService will transfer all related setting to RDS, these AT is contolled by RDS.

04-11 12:25:40.896286 1684 1684 D WifiOffloadService: notifyMalUserProfile(0): mIsVolteEnabled: true, mIsVilteEnabled: false mIsWfcEnabled: true mFqdn:            mIsWifiEnabled: false mHasWiFiDisabledPending: false mWfcMode: 2 mDataRoamingEnabled: 1 mIsAllowTurnOffIms: false

7. IMS register status

在MTK radio log中搜尋"CIREGU"

// 如果是+CIREGU: 0 代表IMS沒有注冊上

09-04 09:37:14.405392  948   967 I AT : [0] AT< +CIREGU: 0 (RIL_URC_READER, tid:503816533232)

// +CIREGU: 1,d代表注冊上了voice、Video、sms 三中capability over IMS,

// 第二個參數是按bit位代表capability能力的,0x01代表Voice, 0x04代表SMS,0x08代表video

01-01 08:06:44.224432 4013 4044 I AT : [0] AT< +CIREGU: 1,d (RIL_URC_READER, tid:527043679472)

//也可以通過MTK radio log中搜尋"handleFeatureCapabilityChanged"确認VoLTE、VoWifi的注冊狀态,true代表注冊

08-30 11:27:33.560581  1175  1175 D MtkImsPhoneCallTracker: [MtkImsPhoneCallTracker] handleFeatureCapabilityChanged: VoLTE:false ViLTE:false VoWiFi:false ViWiFi:false UTLTE:false UTWiFi:false  isVideoEnabledStateChanged=false

08-30 11:27:33.561725  1175  1175 D MtkImsPhoneCallTracker: [MtkImsPhoneCallTracker] handleFeatureCapabilityChanged: VoLTE:false ViLTE:false VoWiFi:false ViWiFi:false UTLTE:false UTWiFi:false  isVideoEnabledStateChanged=false

08-30 11:27:38.815967  1175  1175 D MtkImsPhoneCallTracker: [MtkImsPhoneCallTracker] handleFeatureCapabilityChanged: VoLTE:true ViLTE:true VoWiFi:false ViWiFi:false UTLTE:true UTWiFi:false  isVideoEnabledStateChanged=true

8. 如果需要看到全部IMS Framework log,需要開啟telephony log (open telephony log to obain full IMS Framework log).

[Important]送出IMS 相關eService,請務必打開telephony log

具體enable telephony log開關方法(open telephony log steps):

1.在撥号盤輸入*#*#3646633#*#* (Dialer input *#*#3646633#*#*);

2.切換到“Log and Debugging”選單,找到“Telephony Log Setting”這項點選進入(“Log and Debugging”-> “Telephony Log Setting”);

3.點選enable,會有“set succeeded. Please reboot phone”提示彈出(press enable,will notify “set succeeded, Please reboot phone")

4.重新開機手機(reboot phone)

重新開機以後log設定會一直有效,除非下次更改設定或恢複出廠設定。(After reboot, This persist config will be enabled unless you reset this setting or do factory reset.)