1 背景

平台:高通865(SM8250)
版本:Android R
运营商:中国移动

2 现象

部分移动卡设置 无人接听时呼叫转移 提示 “出现连接问题或 MMI 码无效”

3 Log分析

AP侧Log提示error

07-29 19:02:35.696 2791 2823 I QImsService: ImsSenderRxr : [0333]> REQUEST_SET_CALL_FORWARD_STATUS [SUB0]
07-29 19:02:36.880 2791 2867 I QImsService: IFRequest : [0333]< REQUEST_SET_CALL_FORWARD_STATUS error: 2
07-29 19:02:36.909 2929 2929 D ImsPhone: [0] getCommandException code= 0, errorString= 出现连接问题或 MMI 码无效。(0)
07-29 19:02:36.925 2929 2929 D RILJ : [7291]> QUERY_CALL_FORWARD_STATUS cfreason = 2 serviceClass = 1 [PHONE0]
07-29 19:03:06.767 2929 3007 D RILJ : [7291]< QUERY_CALL_FORWARD_STATUS error 40 [PHONE0]
07-29 19:03:06.768 2929 3007 D RilRequest: [7291]< QUERY_CALL_FORWARD_STATUS error: com.android.internal.telephony.CommandException: MODEM_ERR ret={}

Modem侧上报QMI_FAILURE_CAUSE_SYSTEM_FAILURE,sip_error_code = 403

2021 Jul 29 11:02:35.660 [A9] 0x1544 QMI_MCS_QCSI_PKT
packetVersion = 2
MsgType = Response
Counter = 240
ServiceId = VOICE
MajorRev = 2
MinorRev = 124
ConHandle = 0x00000060
MsgId = 0x00000033
QmiLength = 17
Service_VOICE {
ServiceVOICEV2 {
voice_set_sups_service {
voice_set_sups_service_respTlvs[0] {
Type = 0x02
Length = 4
resp {
result = QMI_RESULT_FAILURE
error = QMI_ERR_SUPS_FAILURE_CAUSE}}
voice_set_sups_service_respTlvs[1] {
Type = 0x10
Length = 2
failure_cause {
failure_cause = QMI_FAILURE_CAUSE_SYSTEM_FAILURE}}
voice_set_sups_service_respTlvs[2] {
Type = 0x18
Length = 2
sip_error_code {
sip_error_code = 403}}}}}

systemFailure在代码中的定义

/** * System failure.*/
#define   systemFailure                0x22     // (十进制 34)
位置:Cm_gw.h (mmcp\api\public)

Refer to 3GPP 24.080的systemFailure说明

4.3.2.9 systemFailure
This error is returned by the network, when it cannot perform an operation because of a failure in the network.

SIP Error Code 403,即禁止

403 Forbidden

继续modem侧分析

// 设置
11:02:34.505869 [0x1544] QMI_MCS_QCSI_PKT
MsgType = Request
voice_set_sups_service {
voice_service = VOICE_SERVICE_REGISTER
reason = VOICE_REASON_FWD_NOREPLY
service_class = 1
number = 189xxxxxxxx
timer_value = 20// IMS Error
11:02:35.658665 IMS/Verbose/Medium/OTHER [IMSSupplementaryService.cpp 3281] HandleSpecificErrorCodes - Block Ut// error code: 34
11:02:35.659356 MMODE/STRM/High/CM [ cmipsups.c 790] cmipsups_common_conf_proc: retry duration: 0 , error code: 34, error tag : 2 asub_id 0 is_ext_resp = 0 err_present 1// 网络侧拒绝了timer_value = 20的设置请求
// 向网络请求
2021 Aug 2 08:27:10.502 [A6] 0x19FA IMS HTTP Message
Direction = UE_TO_NETWORK
HTTP Message = PUT ...
Content-Length: 1062
Content-Type: application/xcap-el+xml
X-3GPP-Intended-Identity: "sip:+86139xxxxxxxx@gd.ims.mnc000.mcc460.3gppnetwork.org"
User-Agent: 3gpp-gba
Authorization: Digest username="..."
Host: xcap.ims.mnc000.mcc460.pub.3gppnetwork.org:80
Connection: Keep-Alive
<ss:communication-diversion xmlns:cp="urn:ietf:params:xml:ns:common-policy" active="true">
<ss:NoReplyTimer>20</ss:NoReplyTimer> =========> timer_value = 20// 网络回应
2021 Aug 2 08:27:10.952 [7B] 0x19FA IMS HTTP Message
Direction = NETWORK_TO_UE
HTTP Message = HTTP/1.1 403 Forbidden =========>NW didn't set NoReplyTimer// 对比机OK的情况
// 分析得知timer_value = 0
2021 Aug 10 09:45:15.383 [44] 0x19FA IMS HTTP Message
Direction = NETWORK_TO_UE
HTTP Message = HTTP/1.1 200 OK
<xcap:NoReplyTimer>0</xcap:NoReplyTimer> =========>NW set NoReplyTimer

4 分析结论

最后,用出问题的机器和SIM卡通过手动设置MMI码之后测试,即设置timer_value = 0之后OK。

说明一下:
该SIM卡用对比机设置timer_value = 20之后也会fail。

MMI码命令:

**61*Num**Time#

示例,拨号盘输入命令,然后拨号即可

**61*10086**20#

到这里,情况就比较明了了,即:
当timer_value = 20,网络侧拒绝设置;
当timer_value = 0,网络侧允许设置。

注意
这里如果timer_value ≠ 0,全都会失败。

5 修改方法

AP侧查看设置timeSec的Log

08-02 17:13:46.728 2864 2864 D CallForwardEditPreference: callForwardInfo=[CallForwardInfo: status= active , reason= 2, serviceClass= 1, timeSec= 20 seconds, number=[xxx]]

通过AP侧的Log打印,定位到CallForwardEditPreference.java的onDialogClosed()中:

int time = 0;
if (reason == CommandsInterface.CF_REASON_NO_REPLY) {PersistableBundle carrierConfig = PhoneGlobals.getInstance().getCarrierConfigForSubId(mPhone.getSubId());if (carrierConfig.getBoolean(CarrierConfigManager.KEY_SUPPORT_NO_REPLY_TIMER_FOR_CFNRY_BOOL, true)) {time = 20;}
}

在time = 20之前有个判断,即KEY_SUPPORT_NO_REPLY_TIMER_FOR_CFNRY_BOOL,
最后,在移动的运营商配置中,把它设置为false即可。

<boolean name="support_no_reply_timer_for_cfnry_bool" value="false"/>

设置后,time会使用默认值0,之后这类SIM卡就不会再出现这个问题。


以上陋解,多多指教~
转载请注明出处,谢谢~

部分移动卡 无人接听时呼叫转移失败 问题分析相关推荐

  1. iPhone呼叫转移失败

    在想要呼叫转移的号码前面添上 +86.

  2. [转]申瓯 JSY2000-06 程控电话交换机呼叫转移设置

    说明:若申瓯程控电话交换机分机有事不在位置上或遇忙分机正忙时为使某些重要来话不丢失,可设置将呼入本机的电话转移至其他分机及公网固定电话或手机.电话交换机使用了本功能不管分机用户在什么地方都能接听到办公 ...

  3. 固定电话/小灵通/手机呼叫转移设置方法

    作者:Saver 原载:Saver省钱妙招 版权所有,转载时必须以链接形式注明作者和原始出处及本声明. 一般呼叫转移有几种状态,呼叫无条件前转:将所有来话转移到用户指定的号码上:呼叫无应答前转:当打入 ...

  4. Elastix 设置呼叫转移

    方案目的:解决自己在公司的分机没人接听的情况,比如说周末,或是公司没人的时候. 方案情景:当你公司的分机没人接听时,你可以将此未接听的呼叫转移到你家里的分机或是你的手机上面去.我们可以假设你公司分机的 ...

  5. Android(生活小窍门=。=)之四种呼叫转移情景

    运行商为我们提供了如下4中呼叫转移场景: 1.始终进行呼叫转移:不管当前手机处于何种状态,来电都会被转移到指定的电话号码上.在使用这种呼叫转移时应当非常小心,如果启用了这种呼叫转移,你可就永远也接不着 ...

  6. 移动**21*设置无法接通_手机怎么设置让别人给你打电话时是无人接听或空号?...

    手机设置成,别人打电话过来的时候是空号或者无人接听.最好的办法是:拨打运营商客服进行停机服务或者注销.这样对方拨打你的号码的时候,自然不能拨通电话了, 当然,我们这里说的是空号,那么什么情况下可以空号 ...

  7. 手机呼叫转移设置代码及无信号时仍然可紧急呼叫原因

    整理网上关于手机呼叫转移的资料: 呼叫转移的种类一共有四种,分为: 无条件呼叫转移,就是将所有的来电都转移到某一个电话号码上去,此时为最优先选项,高于其它转移. 遇忙呼叫转移,当别人打你手机却占线时, ...

  8. 苹果呼叫转移设置不了_不改装!不用双卡神器!亲测用苹果老机型实现“单卡双号”效果...

    最近,心血来潮,想把手头闲置的iPhone6S从单卡改成双卡. 虽说iPhone6S已经过时,但小巧轻薄的手感简直要命,最近几次从抽屉里拿出来体验,都被深深惊艳到.屏幕虽然不大,电池也过小,但在手感和 ...

  9. 手机\固定电话座机呼叫转移设置方法

    首先我们要了解什么是呼叫转移,呼叫转移-CF(Call Forwarding,),是电信业一项传统通信业务,又称呼叫前转.呼入转移.如果您的电话无法接听或您不愿接电话,可以将来电转移到其它电话号码上. ...

  10. 苹果呼叫转移设置不了_手机不想接电话怎么设置空号

    点击上方蓝字关注我们 导 语 用户可以给手机设置呼叫转移,一旦有电话打进来,就自动转接某个空号. 如此一来,有人拨打你号码时,就会提示"您拨打的号码是空号". 此方法只会影响手机通 ...

最新文章

  1. 5G都不能取代的Wi-Fi6,到底有多厉害?
  2. Android recipe 在代码中写布局
  3. stm32之端口复用和重映射
  4. matlab greythresh,Matlab-图形算法和图像处理指南
  5. 聊聊信号的回勾和过冲(转)
  6. 【Tuxedo】Tuxedo入门
  7. ELK Stack (1) —— ELK + Redis安装
  8. 排序序列排序算法总结(二)——快速排序、归并排序
  9. 中国古代道家思想与网页重构的思考
  10. 特斯拉电池检测_特斯拉风格的割草机,也是采用电池供电
  11. c++类的成员函数作回调函数为啥要声明为static的
  12. Nginx安装负载均衡配置 fair check扩展
  13. javascript异步代码的回调地狱以及JQuery.deferred提供的promise解决方式
  14. 老毛桃官方网站linux,老毛桃 Ubuntu
  15. Python网络爬虫--项目实战--scrapy爬取贝壳网
  16. 各种学习网址总结-程序猿值得拥有 持更
  17. Hello C++(十九)——C++类型识别
  18. 静态路由(也许是目前最全的)
  19. App Store2016年最新审核规则
  20. [Cu (L) (Phen )]·1/4H2O配合物

热门文章

  1. 【.Net】asp.net 把图片从CMYK印刷模式转换为RGB原色模式
  2. [转载]美国夫妻生活如何在钱上更亲密
  3. Android 获取外网IP地址
  4. android 6.0 usb网卡,Android安卓6.0使用技巧:让手机化身网卡和声卡
  5. win的反义词_常见英语反义词、近义词、同义词及词形转换(附电子版)
  6. matlab中log和复数表示,matlab复数表示
  7. 华为员工晒百万收入,网友:看来我对华为也有误解
  8. yzj学长的即兴发挥
  9. DOS命令行界面打开文件
  10. R语言使用aov函数进行单因素方差分析(One-way ANOVA)、使用multcomp包的glht函数检验组均值之间所有成对对比差异、使用plot函数可视化Tukey HSD两两均值比较图