自注册DM(六)中国电信自注册 CT Register 介绍和常见问题

来源:互联网 发布:魔法王座升级数据 编辑:程序博客网 时间:2024/05/21 17:04

What is CT Register





1、电信自注册使用的app

MTK平台默认使用的短信自注册是DeviceRegister

数据域自注册是SelfRegister

客户可以在项目查看到这两个app的源码:

/vendor/mediatek/proprietary/packages/apps/DeviceRegister
/vendor/mediatek/proprietary/packages/apps/SelfRegister

 

2、若要编译DeviceRegister 和SelfRegister两个app,需要打开对应的宏控

alps/device/mediatek/[project name]/ProjectConfig.mk

MTK_DEVREG_APP=yes

MTK_CT4GREG_APP=yes

 

3、自注册测试步骤/如何抓取自注册mtklog

1)进入工程模式*#*#3646633#*#*->Log and Debugging ->MTKLogger -> 按下Start 按钮开始录制log

2)打开数据业务 (测试数据域自注册,此步骤必做)

         支持移动数据连接、wifi 数据连接

         优先使用wifi 数据连接

3)切换工模里自注册为开,步骤是:

Engineer Mode->Hardware Testing->Device Register->Send Auto Register Message

4)关机

插卡/换卡 开机,等待自注册数据发出(2-5分钟)

5)停止 mtklog

NoteOP09的项目,第(3)步骤默认已打开

      注册过程完全在后台进行,即:无论是发送注册信息,还是接收注册成功确认信息,都不给用户提示。是否注册成功需要分析mtklog来确定。

 

4、简单分析mtklog

(1)分析短信自注册

主要看main_log  (mtklog\mobilelog\APLog_XXX\main_log),搜索关键字DeviceRegister

//检查工模设置的Send Auto Register Message是否enabled。如果为false,请再次进入工模查看,可能测试时忘记这个步骤了

10-28 20:08:44.573  5190  5190 I DeviceRegister/AgentProxy: Get the switch value = 1

10-28 20:08:44.573  5190  5190 I DeviceRegister/AgentProxy: Feature is enabled? True

//发送自注册短信

10-28 20:10:07.569  5969  6002 D DeviceRegister/RegisterMessage: message: <a1><b1>MTK-MT6735C</b1><b2>00000000</b2><b3>460031279496540</b3><b4>MT6735C.P2</b4></a1>

10-28 20:10:07.572  5969  6002 I DeviceRegister/PlatformManager: Send message. length 101 from slot 0

//发送短信成功!

10-28 20:10:09.681  5969  5969 I DeviceRegister/SmsSendReceiver: Send register message success.

//自注册成功,服务器返回success

10-28 20:10:43.754  5969  5969 I DeviceRegister/PlatformManager: Register success!

10-28 20:10:43.754  5969  5969 I DeviceRegister/AgentProxy: setRegisterFlag true

10-28 20:10:43.811  5969  5969 I DeviceRegister/RegisterService: Register success!

 

(2)分析数据域自注册

主要看main_log  (mtklog\mobilelog\APLog_XXX\main_log),搜索关键字SelfRegister

 //检查网络连接

10-28 20:09:03.803  5488  5889 I SelfRegister/RegisterService: [onAvailable] network 100

//组装JSON

10-28 20:09:53.942  5488  6564 D SelfRegister/RegisterMessage: Generate data: {......}

//将打包后的数据通过 HTTP 协议向自注册管理平台发送

10-28 20:09:53.947  5488  6564 D SelfRegister/Utils: Enter httpSend()...

10-28 20:09:54.530  5488  6564 D SelfRegister/Utils: httpSend(), Status code: 200

//收到自注册管理平台的校验结果

10-28 20:09:54.538  5488  5488 I SelfRegister/Utils: Result code 0, desc Success

10-28 20:09:54.576  5488  5488 D AgentProxy: setSelfRegisterFlag true

10-28 20:09:54.538  5488  5488 I SelfRegister/RegisterService: analyseResponse(), resultCode:0 resultDesc:Success

 

 5、客制化

5.1 How to modify the default value of switch in EngineerMode?

alps/device/mediatek/[project name]/custom.conf

  • SmsRegState = [Default value of switch in EngineerMode]
  • “1” represent the switch is open by default;

        “0” or non-existent of “dm.SmsRegState” represent not open by default.

 

5.2 How to modify the Manufacture and Software version

The Manufacture and Software version need customized by hand in the following path of source code before build.

  • alps/device/mediatek/[project name]/custom.conf
  • Manufacture = [Manufacture name abbr. for example MTK]
  • SoftwareVersion = [Software version name abbr. for example MTxxxx.P1]

   Note that Manufacture name letters count<=3, and the SoftwareVersion name letters count <= 60, or else they will be cut.

Get the customized information such as Manufacture name and SoftwareVersion name. The customized information is writtened in the file”alps/device/mediatek/[project name]/custom.conf”, and the framework provided API for getting it.

   CustomProperties.getString(String moduleName, String key, String defaultValue);





• CT定制功能,负责自动向电信指定的服务器发送注册消息。包括短信
自注册和数据域自注册
• 短信自注册与数据域自注册的主要区别

注册信息上报的内容不一样

注册方式不一样。短信自注册是通过短信方式(CS)
数据域自注册通过 http Post方式(PS)
• 主要资料
– 中国电信移动终端需求白皮书 -自注册功能分册
– 中国电信六模终端测试方法- 手机终端实验室分册
• 电信只提供要求和测试规范,自注册功能由MTK实现和维护,不建议
客户擅自修改自注册的代码逻辑

短信自注册(DeviceRegister)

Introduction of DeviceRegister
• 以下条件只要有一个 或多个不满足,则向服务器端发送短信自注册
1. 本机注册标志等于1
2. 手机与用户卡中存储的IMSI一致
3. 手机ESN/MEID 与 用户卡中的ESN/MEID 一致
• 短信自注册信息内容包括以下四点
1. Device Model
2. ESN/MEID
3. IMSI
4. Software Version
• 短信自注册整个过程对手机用户是透明的

Introduction of DeviceRegister
• DeviceRegister的路径:
vendor/mediatek/proprietary/packages/apps/DeviceRegister
• DeviceRegister的编译开关:
alps/device/mediatek/[project name]/ProjectConfig.mk
OPTR_SPEC_SEG_DEF=OP09_SPEC0212_SEGDEFAULT OR
MTK_DEVREG_APP=yes
• 编译后,应用图标界面找不到DeviceRegister的图标。
在settings->Apps->All可以找到该应用


How to test DeviceRegister
• 写入MEID
• 进入工程模式*#*#3646633#*#*->Log and Debugging ->MTKLogger -> 按
Start 按钮开始录制log
• 切换工模里短信自注册为开(OP09项目,该项默认打开)


检查结果
– adb shell cat data/nvram/dm/register_flag
(1说明成功)
– main_log -- “DeviceRegister/RegisterService: Register success!”

DeviceRegister Key log

10-28 20:08:44.559 5190 5190 D DeviceRegister/RegisterReceiver: onReceive Intent
{ act=android.intent.action.BOOT_COMPLETED flg=0x8000010
cmp=com.mediatek.deviceregister/.RegisterReceiver (has extras) }
• 10-28 20:08:44.573 5190 5190 I DeviceRegister/AgentProxy: Get the switch value = 1
• 10-28 20:08:44.573 5190 5190 I DeviceRegister/AgentProxy: Feature is enabled? True
• 10-28 20:09:07.458 5969 5995 V DeviceRegister/RegisterService: needRegister
• 10-28 20:10:07.557 5969 6002 D DeviceRegister/RegisterMessage: getRegisterMessage
• 10-28 20:10:07.569 5969 终端型号
           6002 D DeviceRegister/RegisterMessage: message:
          MEID
IMSI
<a1><b1>MTK-MT6735C</b1><b2>00000000</b2><b3>460031279496540</b3>
<b4>MT6735C.P2</b4></a1>




DeviceRegister Key log
mainlog搜索DeviceRegister 检查短信自注册情况
• 10-28 20:10:09.681 5969 5969 I DeviceRegister/SmsSendReceiver: onReceive Intent
{ act=com.mediatek.deviceregister.MESSAGE_SEND flg=0x10 (has extras) }
• 10-28 20:10:09.681 5969 5969 I DeviceRegister/SmsSendReceiver: Send register message
success.
• 10-28 20:10:09.923 5969 6568 I DeviceRegister/PlatformManager: write pESN 8099E473 to
uim.
• 10-28 20:10:43.753 5969 5969 I DeviceRegister/PlatformManager: message originating
address:10659401
• 10-28 20:10:43.754 5969 5969 I DeviceRegister/PlatformManager: message user data:0104
• 10-28 20:10:43.754 5969 5969 I DeviceRegister/PlatformManager: Register success!
• 10-28 20:10:43.754 5969 5969 I DeviceRegister/AgentProxy: setRegisterFlag true
radiolog查看SMS发送的AT命令
• 10-28 20:10:07.790 1235 1245 D C2K_RIL : <fd 25> AT > AT+CMGS="0",
如果发送失败,
"00000210020406020699652840060100086e000320001001670328101ac801e30989f1e311
返回HCMGSF
89f26aa2596a6aa1b1b999aa19e17b1189f1e31191f18181818181818181e17b1191f1e31199f
1a1b18181998991b9c9a1c9b1a9a181

数据域自注册(SelfRegister)

Introduction of SelfRegister
• 终端与用户卡配对关系发生改变时,主动向自注册管理平台上报终端
和用户卡基本信息的过程。移动终端利用分组数据域通道(Http Post
Json方式)向自注册管理平台发送自注册数据包实现自注册功能的需
求。







introduction of SelfRegister
• 何时发起数据域自注册
1. 刷机、升级、恢复出厂设置之后第一次插卡开机自注册
2. 双卡终端换卡后开机自注册可以参考下表
  
 卡2有变化 卡2无变化 卡1有变化 注册注册卡1无变化 注册不注册

3不插卡或漫游时不发生自注册
4开机自注册失败间隔一小时重试,最多重试10次



• 调试
– 调整手机时间,提前让一小时后的alarm生效
note:卡1和卡2交换卡槽,不发起自注册
数据连接在非CT卡,不发起自注册


Introduction of SelfRegister
• SelfRegister的路径:
vendor/mediatek/proprietary/packages/apps/SelfRegister
• SelfRegister的编译开关:
alps/device/mediatek/[project name]/ProjectConfig.mk
MTK_CT4GREG_APP==yes OR
OPTR_SPEC_SEG_DEF== OP09_SPEC0212_SEGDEFAULT
• 编译后,应用图标界面找不到SelfRegister的图标。
在settings->Apps->All可以找到该应用


How to test SelfRegister
• 写入MEID
• 不插卡开机,进工程模式*#*#3646633#*#*->Log and Debugging
->MTKLogger -> 按下图红色Start 按钮开始录制log
• 切换工模里数据域自注册为开
• 打开数据连接 or WIFI
• 插卡开机,等待短信自注册信息发出
• 检查结果
– adb shell cat data/nvram/dm/self_reg_flag
(1说明成功)
– main_log -- “SelfRegister/RegisterService: analyseResponse(), resultCode:0
resultDesc:Success”

SelfRegister Key log
• 10-28 20:08:53.056 5488 5488 D SelfRegister/RegisterReceiver: Action:
   android.intent.action.BOOT_COMPLETED
• 10-28 20:08:57.347 5488 5488 D SelfRegister/RegisterReceiver: Action:
   android.intent.action.ACTION_SUBINFO_RECORD_UPDATED
• 10-28 20:09:53.778 5488 5488 V SelfRegister/RegisterService: Enter needRegister()...
• 10-28 20:09:53.864 5488 5488 I SelfRegister/RegisterService: [isNetworkTypeValid]
   network valid
• 10-28 20:09:53.942 5488 6564 D SelfRegister/RegisterMessage: Generate data:
   {"REGVER":"1.0","MEID":"A0000100001000","MODELSMS":"MTK-
  MT6735C","SWVER":"MT6735C.P2","UETYPE":1,"MACID":"00:00:00:00:00:00","OSVE
 R":"android5.1","HWVER":"8G","IMEI1":"","IMEI2":"","SIM1CDMAIMSI":"46003127949
6540","SIM1ICCID":"89861114257552219329","SIM1LTEIMSI":"460110418622949","SIM
1TYPE":2,"SID":13844,"NID":2,"BASEID":11281,"SIM2IMSI":"460077120685773"}
• 10-28 20:09:53.947 5488 6564 D SelfRegister/Utils: Enter httpSend()...
• 10-28 20:09:54.538 5488 5488 I SelfRegister/RegisterService: analyseResponse(),
   resultCode:0 resultDesc:Success


Eservice Analysis
• Server问题 : ALPS03221826



03-27 16:55:01.849930 3879 3879 I DeviceRegister_SmsSendReceiver: onReceive Intent
{ act=com.mediatek.deviceregister.MESSAGE_SEND flg=0x10 (has extras) }
03-27 16:55:01.850052 3879 3879 I DeviceRegister_SmsSendReceiver: get result code:-1
03-27 16:55:01.850097 3879 3879 I DeviceRegister_SmsSendReceiver: Send register message
success.
根据规范要求,server接收到自注册信息后,应该立即返回自注册结果。AT命令为 CMTI
但是radiolog并没有发现接收任何信息(搜索CMTI )
而且mainlog也不会打印DeviceRegister-RegisterService: Register success
正常情况下,server收到自注册信息之后,有返回带一个status告知手机自注册是否成功



04-18 11:08:07.298502 4200 4200 I DeviceRegister_PlatformManager: message originating
address:10659401
04-18 11:08:07.299053 4200 4200 I DeviceRegister_PlatformManager: message user
data:0104
04-18 11:08:07.299131 4200 4200 I DeviceRegister_PlatformManager: Register success!
结论:可以判断为电信自注册服务器的问题。请换个时间和地点测试,咨询电信负责人是
否该时段server有问题



Eservice Analysis
• Server问题 : ALPS03221773

03-29 14:41:47.267691 3735 3735 D SelfRegister_RegisterMessage: Generate data:
{“REGVER”:“4.0......
• 03-29 14:41:47.268884 3735 4619 D SelfRegister_Utils: Enter httpSend()...
• 03-29 14:41:47.271589 3735 4619 D SelfRegister_Utils: httpSend(), ===Before execute()
• 03-29 14:41:54.564756 3735 4619 D SelfRegister_Utils: httpSend(), ===After execute()
• 03-29 14:41:54.564805 3735 4619 D SelfRegister_Utils: httpSend(), Status code: 500
• 03-29 14:41:54.565553 3735 3735 E SelfRegister_Utils: checkRegisterResult(), response is
null!
• 03-29 14:41:54.565612 3735 3735 E SelfRegister_RegisterService: Register fail!
以上是测试机的log,服务器偶现返回Status code: 500,正常应该返回200,正常log如下:
• 03-29 14:49:39.787344 4057 4734 D SelfRegister_Utils: httpSend(), Status code: 200
• 03-29 14:49:39.791800 4057 4057 I SelfRegister_Utils: Result code 0, desc Success
• 03-29 14:49:39.791898 4057 4057 I SelfRegister_RegisterService: analyseResponse(),
resultCode:0 resultDesc:Success
结论: 每次手机都有成功发送注册信息给server,但是server有时返回200,有时返回500,
不稳定。偶尔出现的server故障,更换时间点再次测试


Eservice Analysis
• 无效log
– Project错误
– 提交错误的log
– log信息不全,如没有开机log、缺少modem log
• 改进方向
– Log和描述的问题相符,包含开机和发生问题
– 提交完整的mtklog
– 如case描述和操作步骤较复杂,请提供截屏或者操作视频
– 请先自查:mtklog\mobilelog\APLog_201*_****_****\main_log_*,
搜索DeviceRegister 以及 SelfRegister有app运行信息
• 如:开机广播 onReceive Intent { act=android.intent.action.BOOT_COMPLETED


Eservice Analysis
• Log解读: ALPS03167939 查询main log ,发现发起了2次短信自注册


分析mainlog,可以看到发了2次。因为第一次发的短信自注册失败,所以才会发第二次,
这是正常情况
02-20 12:05:12.959339 2010 2010 I DeviceRegister/SmsSendReceiver: get result code:1
02-20 12:05:12.959372 2010 2010 I DeviceRegister/SmsSendReceiver: Send register
message failed.
02-20 12:05:12.959513 2010 2010 I DeviceRegister/RegisterService: Have tried 0 times
02-20 12:06:14.644522 2010 2010 I DeviceRegister/SmsSendReceiver: get result code:-1
02-20 12:06:14.644660 2010 2010 I DeviceRegister/SmsSendReceiver: Send register
message success.
02-20 12:07:09.695185 2010 2010 I DeviceRegister/PlatformManager: Check register result
Intent { act=android.telephony.sms.CDMA_REG_SMS_ACTION flg=0x10
cmp=com.mediatek.deviceregister/.RegisterService (has extras) }
02-20 12:07:09.699665 2010 2010 I DeviceRegister/PlatformManager: message originating
address:1065940102-20 12:07:09.699712 2010 2010 I DeviceRegister/PlatformManager:
message user data:010402-20 12:07:09.699735 2010 2010 I
DeviceRegister/PlatformManager: Register success!
发送失败有三次retry机会,如果retry3次也发送不成功,请提交eservice. 但目前这份log可以
看到发送成功,而且server也返回ok, 贵司判断是正常现象,可不必提交eservice.




Eservice Analysis
Case问题 (5个)
• ALPS03221731 非测试场景:热插拔
• ALPS03265709、ALPS03265831 数据链接在非CT卡上,不需要进行数据
域自注册
• ALPS03239648 短信自注册IMSI, 为CDMA IMSI (46003 **********)
非LTE IMSI (46011**********)
• ALPS03259431 ABA场景
1. A测试机插入电信4G卡》2. 电信4G卡再插入B测试机》3. 电信4G卡
再插入A测试机
步骤3:短信自注册再次注册,数据域自注册不需要
建议:如果有质疑自注册app的逻辑和行为、认为上报的内容不准确的
情况,贵司可以先研读《中国电信移动终端需求白皮书 -自注册功能
分册》和《中国电信六模终端测试方法- 手机终端实验室分册》,若
还有疑问,请提交eservice,并且附上相关文献内容或截图以及mtklog.




Eservice Analysis
Datasharping问题 ALPS03267520

分析mainlog,搜索SelfRegister,找到以下log, 发送自注册消息时报错
04-27 15:17:58.395936 3834 4362 D SelfRegister_Utils: Enter httpSend()...
04-27 15:17:58.400044 3834 4362 D SelfRegister_Utils: httpSend(), ===Before execute()
04-27 15:18:38.474287 3834 4362 E SelfRegister_Utils: IOException in httpSend()!
04-27 15:18:38.474457 3834 4362 W System.err: java.net.UnknownHostException: Unable
to resolve host "zzhc.vnet.cn": No address associated with hostname
04-27 15:18:38.474858 3834 4362 W System.err: at
java.net.Inet6AddressImpl.lookupHostByName(Inet6AddressImpl.java:125)
04-27 15:18:38.474914 3834 4362 W System.err: at
java.net.Inet6AddressImpl.lookupAllHostAddr(Inet6AddressImpl.java:74)
04-27 15:18:38.474978 3834 4362 W System.err: at
java.net.InetAddress.getAllByName(InetAddress.java:757)
04-27 15:18:38.478850 3834 3834 E SelfRegister_Utils: checkRegisterResult(), response is
null!04-27 15:18:38.478934 3834 3834 E SelfRegister_RegisterService: Register fail!
这初步看起来像是server有问题,找不到zzhc.vnet.cn对应的server ip. 但不能急于下结论。还
要分析netlog确认情况。




15:22:00 看到有DNS Query,并且返回了结果42.99.2.15 (这就是数据与自注册的server   ip,与对比机的一致。说明域名以及DNS query结果没有问题)
  再搜索ip.addr==42.99.2.15 没有任何数据交互了

Eservice Analysis
• 注意时间关系。15:17:58 selfregister发出request请求,15:18:38 unknownHostException
实际上在15:22:00 做DNS Query,等有返回的时候,selfregister早就判断该次失败了

从M开始,很多版本开启了Datashaping功能,灭屏后禁止使用数据,以节省功耗。
Mainlog搜索ACTION_SCREEN_OFF 和 DataShapingService 找到以下trace
04-26 21:17:24.253593 1562 1748 D vol.VolumeDialogControl: onReceive
ACTION_SCREEN_OFF //灭屏
04-26 21:17:47.645887 1202 1521 D DataShapingService: [setCurrentState]: set to
STATE_CLOSE
//进入datashaping, 数据暂时关闭。
04-26 21:18:46.059723 1202 1521 D DataShapingService: [setCurrentState]: set to
STATE_OPEN_LOCKED //停止datashaping之后queue的包才会陆续发出去
再搜索ip.addr==42.99.2.15 没有任何数据交互了
• 解决方案:
Step1: 修改DataShapingServiceImpl.java 的openLteDataUpLinkGate 方法
Step2:修改selfregister/RegisterService.java, 调用openLteDataUpLinkGate 方法,让其在数据
域自注册时,不要做datashaping



CR提交规范
• 关于CMCC和CT入库,提交eservice时,请注意
• 1.Title 正确标注
– 正式入库: [CMCC Official 第x轮入库] or[CT Official 第x轮入库]
– 自测试或预测试: [CMCC Pre-test] or [CT Pre-test]
• 2.Title 需正确标记模块信息,如[VoLTE NV-IOT] 、 [TDL外场] 、[TDS RRM
一致性] 等等,若跟仪表相关(Anite/R&S....),请附上仪表信息
• 3.CR描述请写明测试案例对应的编号(例如TC-SIXMLAB-10101)以及关键测
试步骤
• 4.需要附上完整的Log信息,用FEX上传,或是直接附到CQ Web eservcie
的Attach里
• CMCC、CU和CT都有自注册(或DM)功能,还请注意区分project



basic knowledge
– UIM - User Identity Model
• A kind of smart card applied by CDMA phone
– ESN - Electronic Serial Numbers
• Mainly used with CDMA phones, like IMEI for GSM
• 4位,容量有限,2008年耗尽,被MEID取代
– MEID - Mobile Equipment Identifier
• Globally unique number identifying a mobile equipment
• 14位,取代ESN。TIA 分配管理的, 每1M $8000
– pESN - Pseudo ESN
• 4位,伪ESN ,用于后向兼容操作
• 0x80 + last 24 bits SHA-1(MEID)
– IMSI:国际移动用户识别码(IMSI:International Mobile
Subscriber Identification Number)是区别移动用户的标志,储
存在SIM卡中,可用于区别移动用户的有效信息


basic knowledge
– ICCID - Integrate circuit card identity
• 固化在手机SIM卡中,为IC卡的唯一识别号码。20位数字组成
– SID - System ID
• CDMA网络的系统识别码
– NID - Network ID
• CDMA网络的网络识别码
– Base ID - Base station ID
• CDMA基站的ID



FAQ1
Q1:How to modify the default value of switch in EngineerMode?
A1: DeviceRegister 修改
alps/device/mediatek/[project name]/custom.conf
• dm.SmsRegState = [Default value of switch in EngineerMode]
• “1” represent the switch is open by default;
• “0” or non-existent of “dm.SmsRegState” represent not open by default.
SelfRegister 修改
frameworks/base/packages/SettingsProvider/res/values/mtk_defaults.xml
– 修改下图这个值,6是on , 2是off。




FAQ2
Q2: How to Customize Manufacture and Software
A2:The Manufacture and Software version need customized by hand in the
following path of source code before build.
• alps/device/mediatek/[project name]/custom.conf
• dm.Manufacture = [Manufacture name abbr. for example MTK]
• dm.SoftwareVersion = [Software version name abbr. for example
MTxxxx.P1]
• Note that Manufacture name letters count<=3, and the SoftwareVersion
name letters count <= 60, or else they will be cut.
– Get the customized information such as Manufacture name and
SoftwareVersion name. The customized information is writtened in the
file”alps/device/mediatek/[project name]/custom.conf”, and the framework
provided API for get it.
• CustomProperties.getString(String moduleName, String key, String
defaultValue);




































































原创粉丝点击