Telephony--短信问题分析方法

短信问题总结

短信的发送可以分为AP侧和modem侧进行分析,AP侧主要检查是否有下发发送短信的消息给到modem,而modem侧主要检查的是有没有将短信发送出去,以及网络端给回的响应信息。

1. 短信中心号码出错导致短信发送失败

①从AP侧可以看短信中心号码是否为空,AT+CSCA 查询SIM的SMSC

②从modem侧看网络端返回的CP_DATA,查看信令的详细内容,看是否是短信中心号码出错

Type    Index    Time    Local Time    Module    Message    Comment    Time Different
PS (PCORE)    79238    120596103    20:01:42:013    SMSAL_2 - SMS_2    MSG_ID_SMS_SUBMIT        
OTA(PCORE)  79240    120596105    20:01:42:013    SMS_2   [MS->NW] [MO] SMS__RP_DATA

(rl_id=0)     RP-Destination Address
1... .... = Extension: No Extension
.000 .... = Type of number: unknown (0x00)    
OTA (PCORE)    82302    120638628    20:01:44:826    SMS_2    [NW->MS] [MO] SMS__RP_ERROR (rl_id=0)    Invalid mandatory information (96)    

2. 短信发送出去,接收方没有收到

短信发送可以从发送端和接收端分析到底问题出在哪里

①发送端

AP侧如果有下发RIL_REQUEST_CDMA_SEND_SMS

Modem侧可以看到如下四条信令

发送短信:

(UE->NW)CP-DATA[包含SMS的文本内容;包含RP-DATA]     

(UE<-NW)CP-ACK [简单响应收到上一个CP-DATA;不包含RP]

(UE<-NW)CP-DATA[如果短信有什么异常或网络拒绝等异常cause会携带在里面;包含RP-ACK或者是RP-ERROR,响应上面的RP-DATA]

(UE->NW)CP-ACK [简单响应NW收到了上一个CP-DATA;不包含RP]

那么也就说明短信时有发送出去的,如果在CP-DATA中没有看到明显的错误码,或者错误提示,那么问题很有可能是发生在网络侧,接下来就看接收端的信令流程

②接收端

接收短信:

(UE<-NW)CP-DATA[包含SMS的文本内容;包含RP-DATA]

(UE->NW)CP-ACK [简单响应收到上一个CP-DATA;不包含RP]

(UE->NW)CP-DATA[如果短信有什么异常或手机拒绝等异常cause会携带在里面;包含RP-ACK或者是RP-ERROR,响应上面的RP-DATA]

(UE<-NW)CP-ACK [简单响应手机收到上一个CP-DATA;不包含RP]

接收端的信令跟发送端的信令一样,只不过是从网络端发送UE端,与发送的时候相反。

a.如果MT端没有收到如上的指令,那么问题就发生在网络端了;

b.如果MT端收到了上述的指令,但是指令中有错误信息,可以从手机发送往网络端的CP_DATA中看是否有错误信息,如果都没有,那么就是MT端出了问题;

c.如果从AP log看没有上传UNSOL_RESPONSE_NEW_SMS的AT消息,那么问题出在了modem侧;

d.如果从AP log有看到AT指令,但是没有把对应的信息显示出来,那么就需要看下消息传递到哪里被阻断了,还是说对应的进程被杀死了。

3. 没有收到送达报告

送达报告是发送端主动请求网络端发送的,在MO端的表现是类似“已送达”的字样出现在短信发送的界面,如果没有主动请求,那么在短信发送界面上就仅仅有“发送成功”的字样。送达报告类的问题可以从以下的步骤检查:

①MO端有没有设置需要网络端发送送达报告,在短信的设置界面内有对应的按钮

②在MO端的modem log的CP_DATA中可以看出是否有要求网络端返回送达报告的请求

..1. .... = TP-SRR: A status report is requested

4. 短信接收时间错误

对于短信的接收时间有两个不同的理解,一个是手机的系统时间,一个是短信中心发到手机的PDU包里面的时间。

这个对于不同的客户有不同的需求,有的客户需要让短信的接收时间跟手机系统时间保持一致,那么这个只能由上层实现,对于framework,我们只能够保证手机PDU解析出来的时间没有问题就可以。

这里以MTK平台为例,解析PDU包的内容。使用ELT打开modem log,然后关联wireshake,对信令的详细信息进行解析,就可以输出为txt文件或者在信令的详细信息里面有时间的说明。

5. 长短信发送出去但接收方没有收到

长短信的发送跟普通短信类似,不同之处在于在AP侧的处理。长短信在AP侧会进行分割,并且modem会对消息片段进行标注,MO和MT端在哪个片段出现了问题就很清楚了。有时候在MT端没有收到长短信,但查看modem log,其实是某些片段丢失,导致长短信没有显示出来,那么这个就属于网络问题了。

高通的modem log中的关键log如下,seq_num就是消息片段。

[0xB0EC] OTA LOG 11:38:20.000 LTE NAS EMM Plain OTA Incoming Message Downlink NAS transport Msg

ref_num = 194 (0xc2)

max_num_msgs = 19 (0x13)

seq_num = 12 (0xc)\\\

//next MT SMS is 15,lost seq_num = 13 and 14

[0xB0EC] OTA LOG 11:38:21.200 LTE NAS EMM Plain OTA Incoming Message Downlink NAS transport Msg

ref_num = 194 (0xc2)

max_num_msgs = 19 (0x13)

seq_num = 15 (0xf)\\\\\

//next MT SMS is 17,lost seq_num = 16

[0xB0EC] OTA LOG 11:38:22.285 LTE NAS EMM Plain OTA Incoming Message Downlink NAS transport Msg

ref_num = 194 (0xc2)

max_num_msgs = 19 (0x13)

seq_num = 17 (0x11)        \\\\\\

 

猜你喜欢

转载自blog.csdn.net/binge__/article/details/81388220