radio日志sim卡信号状态分析
logcat -b radio日志
// 接着将slot 0主卡置为false,将slot 1设置为true
08-09 11:24:40.335 2565 3243 D RILJ : [4820]> RIL_REQUEST_ALLOW_DATA allowed: false [SUB0]
08-09 11:24:40.371 2565 2851 D RILJ : [4820]< RIL_REQUEST_ALLOW_DATA [SUB0]
08-09 11:24:41.153 2565 3250 D RILJ : [4839]> RIL_REQUEST_ALLOW_DATA allowed: true [SUB1]
08-09 11:24:41.159 2565 2855 D RILJ : [4839]< RIL_REQUEST_ALLOW_DATA [SUB1]
// 0表示无数据,5表示有数据且漫游状态,1表示有数据且没有漫游,出现1/5表示数据驻网成功(PS域驻网成功)
08-09 11:24:57.615 2565 2855 D RILJ : [4930]< DATA_REGISTRATION_STATE {, null, null, null, 0, 20, null, null, null, null, null} [SUB1]
08-09 11:25:21.846 2565 2855 D RILJ : [4934]< DATA_REGISTRATION_STATE {, a079, 0011c1d7, 3, null, 20, null, null, null, null, null} [SUB1]
// 这条记录和上面记录结合起来看数据是否真正注册成功,如果失败,result是failure,且mFailCause会提示原因,比如apn不对,或者欠费等。
08-09 11:25:26.265 2565 3074 D QtiDC-2 : DcActivatingState onSetupConnectionCompleted result=SUCCESS SetupResult.mFailCause=NONE dc={QtiDC-2: State=DcActivatingState mApnSetting=[ApnSettingV3] yo, 1991, 45403, yo, null, null, null, null, null, 0, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , RefCount=1 mCid=0 mCreateTime=-1 mLastastFailTime=-1 mLastFailCause=NONE mTag=2
1.查看信号状态
1)搜索"< VOICE_REGISTRATION_STATE"查看CS域注册状态,也就是有无信号,第一个字段表示驻网状态,第四个字段表示网络类型,倒数第二个是拒绝入网原因。SUB0是卡槽1,SUB1是卡槽2
比如下面日志中,13表示被拒绝入网,原因12是LA_NOT_ALLOWED; 5表示驻网成功,为漫游状态,网络类型14表示LTE
07-23 01:36:35.516 748 2757 D RILJ : [5029]< VOICE_REGISTRATION_STATE {13, null, null, 0, null, null, null, 0, null, null, null, null, null, , null} [SUB1]
07-23 01:36:35.516 748 2757 D RILJ : [5033]< VOICE_REGISTRATION_STATE {13, null, null, 0, null, null, null, 0, null, null, null, null, null, 12, null} [SUB1]
07-23 01:38:20.744 748 2751 D RILJ : [5053]< VOICE_REGISTRATION_STATE {5, 03e9, 0c48f100, 14, null, null, null, 0, null, null, null, null, null, 0, null} [SUB0]
07-23 01:38:20.746 748 2757 D RILJ : [5057]< VOICE_REGISTRATION_STATE {, null, null, 0, null, null, null, 0, null, null, null, null, null, 12, null} [SUB1]
07-23 01:38:20.799 748 2751 D RILJ : [5061]< VOICE_REGISTRATION_STATE {5, 03e9, 0c48f100, 14, null, null, null, 0, null, null, 0, null, null, 0, null} [SUB0]
07-23 01:38:42.989 748 2751 D RILJ : [5069]< VOICE_REGISTRATION_STATE {, 03e9, 0c48f100, , null, null, null, 0, null, null, 0, null, null, 0, null} [SUB0]
07-23 01:38:43.235 748 2757 D RILJ : [5073]< VOICE_REGISTRATION_STATE {2, null, null, 0, null, null, null, 0, null, null, null, null, null, 0, null} [SUB1]
07-23 01:38:43.335 748 2751 D RILJ : [5078]< VOICE_REGISTRATION_STATE {, null, null, 0, null, null, null, 0, null, null, null, null, null, 0, null} [SUB0]
2)搜索"< DATA_REGISTRATION_STATE"查看PS域注册状态,也就是有无数据,和CS类似,第一个字段表示驻网状态,第四个字段表示网络类型。对于PS,只有主卡才会驻网,副卡不会驻网,不必关注。
07-24 17:36:01.611 2629 2865 D RILJ : [3764]< DATA_REGISTRATION_STATE {5, a06f, 007e9627, 20, null, 20, null, null, null, null, null} [SUB0]
07-24 17:37:03.030 2629 2870 D RILJ : [3784]< DATA_REGISTRATION_STATE {2, null, null, null, 0, 20, null, null, null, null, null} [SUB1]
07-24 17:37:03.032 2629 2865 D RILJ : [3788]< DATA_REGISTRATION_STATE {5, a06f, 007ed5d8, 11, null, 20, null, null, null, null, null} [SUB0]
3)PS驻网后,还需要搜索DcActivatingState,确认是否建立了网络连接,如果失败mFailCause会显示原因,比如欠费,APN不对
07-25 14:28:52.569 2075 2208 D DC-2 : DcActivatingState onSetupConnectionCompleted result=SUCCESS SetupResult.mFailCause=NONE dc={DC-2: State=DcActivatingState mApnSetting=[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false RefCount=1 mCid=0 mCreateTime=-1 mLastastFailTime=-1 mLastFailCause=NONE mTag=2 mLinkProperties={InterfaceName: rmnet_data0 LinkAddresses: [10.247.13.23/28,] Routes: [0.0.0.0/0 -> 10.247.13.24 rmnet_data0,] DnsAddresses: [115.178.58.26,115.178.58.10,] Domains: null MTU: 1500} linkCapabilities=[ Transports: CELLULAR Capabilities: IA&INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VPN LinkUpBandwidth>=14Kbps LinkDnBandwidth>=14Kbps Specifier: <1>] mRestrictedNetworkOverride=false mApnContexts={{mApnType=default mState=CONNECTING mWaitingApns={[[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false]} mApnSetting={[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false} mReason=nwTypeChanged mDataEnabled=true mDependencyMet=true}={mTag=2 mApnContext={mApnType=default mState=CONNECTING mWaitingApns={[[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false]} mApnSetting={[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false} mReason=nwTypeChanged mDataEnabled=true mDependencyMet=true} mProfileId=0 mRat=0 mOnCompletedMsg={what=0x42000 when=-2h8m4s599ms obj=Pair{{mApnType=default mState=CONNECTING mWaitingApns={[[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false]} mApnSetting={[ApnSettingV3] AIS, 2538, 52003, internet, , , , , , -1, default | ia, IPV4V6, IPV4V6, true, 0, 0, 0, false, 0, 0, 0, 0, , , false} mReason=nwTypeChanged mDataEnabled=true mDependencyMet=true} 2} target=Handler (com.qualcomm.qti.internal.telephony.dataconnection.QtiDcTracker) {6448827} replyTo=null}}}}
驻网信息字段含义
驻网状态字段含义:
case 0: Not registered, MT is not currently searching
* a new operator to register
case 2: // 2 is "searching"
case 3: // 3 is "registration denied"
case 4: // 4 is "unknown" no vaild in current baseband
case 10:// same as 0, but indicates that emergency call is possible.
case 12:// same as 2, but indicates that emergency call is possible.
case 13:// same as 3, but indicates that emergency call is possible.
case 14:// same as 4, but indicates that emergency call is possible.
return ServiceState.STATE_OUT_OF_SERVICE;
case 1: // Registered, home network
return ServiceState.STATE_IN_SERVICE;
case 5:
// in service, roam
return ServiceState.STATE_IN_SERVICE;
default:
loge("regCodeToServiceState: unexpected service state " + code);
return ServiceState.STATE_OUT_OF_SERVICE;
// radio_tech 网络类型 typedef enum {
RADIO_TECH_UNKNOWN = 0,
RADIO_TECH_GPRS = 1,
RADIO_TECH_EDGE = 2,
RADIO_TECH_UMTS = 3,
RADIO_TECH_IS95A = 4,
RADIO_TECH_IS95B = 5,
RADIO_TECH_1xRTT = 6,
RADIO_TECH_EVDO_0 = 7,
RADIO_TECH_EVDO_A = 8,
RADIO_TECH_HSDPA = 9,
RADIO_TECH_HSUPA = 10,
RADIO_TECH_HSPA = 11,
RADIO_TECH_EVDO_B = 12,
RADIO_TECH_EHRPD = 13,
RADIO_TECH_LTE = 14,
RADIO_TECH_HSPAP = 15, // HSPA+
RADIO_TECH_GSM = 16, // Only supports voice
RADIO_TECH_TD_SCDMA = 17,
RADIO_TECH_IWLAN = 18,
RADIO_TECH_LTE_CA = 19,
RADIO_TECH_DC_HSPAP = 20 //for airtel network, AP should display 4G when BP report this tech
} RIL_RadioTechnology;
拒绝入网原因:
// reg_reject_cause
#define IMSI_UNKNOWN_IN_HLR 0x02
#define ILLEGAL_MS 0x03
#define IMSI_UNKNOWN_IN_VLR 0x04
#define IMEI_NOT_ACCEPTED 0x05
#define ILLEGAL_ME 0x06
#define GPRS_SERVICES_NOT_ALLOWED 0x07
#define GPRS_SERVICES_AND_NON_GPRS_SERVICES_NOT_ALLOWED 0x08
#define MS_IDENTITY_CANNOT_BE_DERIVED_BY_THE_NETWORK 0x09
#define IMPLICITLY_DETACHED 0x0A
#define PLMN_NOT_ALLOWED 0x0B
#define LA_NOT_ALLOWED 0x0C
#define NATIONAL_ROAMING_NOT_ALLOWED 0x0D
#define GPRS_SERVICES_NOT_ALLOWED_IN_THIS_PLMN 0x0E
#define NO_SUITABLE_CELLS_IN_LA 0x0F
#define MSC_TEMPORARILY_NOT_REACHABLE 0x10
#define NETWORK_FAILURE 0x11
#define MAC_FAILURE 0x14
#define SYNCH_FAILURE 0x15
#define CONGESTTION 0x16
#define GSM_AUTH_UNACCEPTED 0x17
#define CSG_NOT_AUTHORIZED 0x19
#define SERVICE_OPTION_NOT_SUPPORTED 0x20
#define REQ_SERV_OPT_NOT_SUBSCRIBED 0x21
#define SERVICE_OPT__OUT_OF_ORDER 0x22
#define CALL_CANNOT_BE_IDENTIFIED 0x26
#define NO_PDP_CONTEXT_ACTIVATED 0x28
#define RETRY_UPON_ENTRY_INTO_A_NEW_CELL_MIN_VALUE 0x30
#define RETRY_UPON_ENTRY_INTO_A_NEW_CELL_MAX_VALUE 0x3F
#define SEMANTICALLY_INCORRECT_MSG 0x5F
#define INVALID_MANDATORY_INFO 0x60
#define MESSAGE_TYPE_NON_EXISTANT 0x61
#define MESSAGE_TYPE_NOT_COMP_PRT_ST 0x62
#define IE_NON_EXISTANT 0x63
#define MSG_NOT_COMPATIBLE_PROTOCOL_STATE 0x65
2、查看手机状态
分析日志时,有时候需要查看某段时间wifi是否链接/数据开关是否打开/主副卡设置在哪个卡槽/优选网络模式。
1、wifi开关打开关闭,搜索setWifiEnabled。wifi是否连接,搜索mIsWifiConnected
07-29 02:08:48.704 1471 1471 D WifiService: setWifiEnabled: true pid=1471, uid=1000
07-25 14:26:27.403 1471 2590 D WifiService: setWifiEnabled: false pid=1678, uid=1000
07-25 14:12:18.531 2075 2075 D QtiGsmDCT: [1]NETWORK_STATE_CHANGED_ACTION: mIsWifiConnected=false
07-25 14:12:18.564 2075 2075 D QtiGsmDCT: [0]NETWORK_STATE_CHANGED_ACTION: mIsWifiConnected=true
2、数据开关
08-29 14:00:54.466 1184 11534 D ConnectivityService: setMobileDataEnabled(true) // 打开数据开关
08-29 14:01:11.136 1184 12409 D ConnectivityService: setMobileDataEnabled(false) // 关闭数据开关
07-25 14:28:32.657 12395 12395 D ConnectivityManager: getMobileDataEnabled()- subId=1 retVal=true // 获取数据开关状态
3、设置主副卡
07-25 08:46:36.129 3120 3120 D RILJ : [1722]> RIL_REQUEST_ALLOW_DATA allowed: false [SUB0] // 切换主卡时,先关闭原卡槽主卡
07-25 08:46:36.181 3120 3120 D RILJ : [1723]> RIL_REQUEST_ALLOW_DATA allowed: true [SUB1] // 再切换到新的卡槽
4、设置优选网络模式
07-25 08:46:40.262 3120 3120 D RILJ : [1757]> REQUEST_SET_PREFERRED_NETWORK_TYPE : 10 [SUB0] // 设置
07-25 08:46:40.272 3120 3178 D RILJ : [1757]< REQUEST_SET_PREFERRED_NETWORK_TYPE [SUB0] //
07-25 08:46:40.273 3120 3120 D RILJ : [1758]> REQUEST_SET_PREFERRED_NETWORK_TYPE : 20 [SUB1]
07-25 08:46:40.281 3120 3182 D RILJ : [1758]< REQUEST_SET_PREFERRED_NETWORK_TYPE [SUB1]
优选网络模式值
138 /* NETWORK_MODE_* See ril.h RIL_REQUEST_SET_PREFERRED_NETWORK_TYPE */
139 int NETWORK_MODE_WCDMA_PREF = 0; /* GSM/WCDMA (WCDMA preferred) */
140 int NETWORK_MODE_GSM_ONLY = 1; /* GSM only */
141 int NETWORK_MODE_WCDMA_ONLY = 2; /* WCDMA only */
142 int NETWORK_MODE_GSM_UMTS = 3; /* GSM/WCDMA (auto mode, according to PRL)
143 AVAILABLE Application Settings menu*/
144 int NETWORK_MODE_CDMA = 4; /* CDMA and EvDo (auto mode, according to PRL)
145 AVAILABLE Application Settings menu*/
146 int NETWORK_MODE_CDMA_NO_EVDO = 5; /* CDMA only */
147 int NETWORK_MODE_EVDO_NO_CDMA = 6; /* EvDo only */
148 int NETWORK_MODE_GLOBAL = 7; /* GSM/WCDMA, CDMA, and EvDo (auto mode, according to PRL)
149 AVAILABLE Application Settings menu*/
150 int NETWORK_MODE_LTE_CDMA_EVDO = 8; /* LTE, CDMA and EvDo */
151 int NETWORK_MODE_LTE_GSM_WCDMA = 9; /* LTE, GSM/WCDMA */
152 int NETWORK_MODE_LTE_CDMA_EVDO_GSM_WCDMA = 10; /* LTE, CDMA, EvDo, GSM/WCDMA */
153 int NETWORK_MODE_LTE_ONLY = 11; /* LTE Only mode. */
154 int NETWORK_MODE_LTE_WCDMA = 12; /* LTE/WCDMA */
155 int NETWORK_MODE_TDSCDMA_ONLY = 13; /* TD-SCDMA only */
156 int NETWORK_MODE_TDSCDMA_WCDMA = 14; /* TD-SCDMA and WCDMA */
157 int NETWORK_MODE_LTE_TDSCDMA = 15; /* TD-SCDMA and LTE */
158 int NETWORK_MODE_TDSCDMA_GSM = 16; /* TD-SCDMA and GSM */
159 int NETWORK_MODE_LTE_TDSCDMA_GSM = 17; /* TD-SCDMA,GSM and LTE */
160 int NETWORK_MODE_TDSCDMA_GSM_WCDMA = 18; /* TD-SCDMA, GSM/WCDMA */
161 int NETWORK_MODE_LTE_TDSCDMA_WCDMA = 19; /* TD-SCDMA, WCDMA and LTE */
162 int NETWORK_MODE_LTE_TDSCDMA_GSM_WCDMA = 20; /* TD-SCDMA, GSM/WCDMA and LTE */
163 int NETWORK_MODE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 21; /*TD-SCDMA,EvDo,CDMA,GSM/WCDMA*/
164 int NETWORK_MODE_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 22; /* TD-SCDMA/LTE/GSM/WCDMA, CDMA, and EvDo */
radio日志sim卡信号状态分析的更多相关文章
- 使用C# 实现串口拨号器的SIM卡通信
参考网址:https://www.cnblogs.com/xugang/archive/2012/08/23/2652671.html 写此博客意为抛砖引玉,希望能和博客园的朋友们探讨一下关于.NET ...
- TelephonyManager类:Android手机及Sim卡状态的获取
TelephonyManager这个类很有用,可以得到很多关于手机和Sim卡的信息. 直接上注释后的代码,请享用 package net.sunniwell.app;import android.ap ...
- SIM卡读卡器的研究与设计
SIM卡(Subscriber Identity Module).即用户识别模块,是一张符合GSM规范的"智慧卡".SIM卡可以插入任何一部符合GSM规范的移动电话中," ...
- 手机SIM卡知识大科普
SIM卡 SIM卡是(Subscriber Identity Module 客户识别模块)的缩写,也称为智能卡.用户身份识别卡,GSM数字移动电话机必须装上此卡方能使用.它在一电脑芯片上存储了数字移动 ...
- SIM卡是什么意思?你所不知道的SIM卡知识扫盲(详解)【转】
原文链接:http://www.jb51.net/shouji/359262.html 日常我们使用手机,SIM卡是手机的必须,没有了它就不能接入网络运营商进行通信服务.SIM卡作为网络运营商对于我们 ...
- SIM卡(单卡)配置
SIM卡相关配置 1.GPIO90--->BPI8 GPIO91--->BPI9 GPIO92--->BPI10 2.ProjectConfig.mk:MTK_PROTOCOL1_R ...
- 五分钟了解物联网SIM卡 | 我的物联网成长记10
[摘要] SIM卡是移动通信中不可或缺的组成部分,在物联网解决方案中,设备移动上网也需要使用SIM卡.那么,SIM卡是什么?SIM卡有几种?各种SIM卡有什么区别?本文将为您答疑解惑. 通信进化史 过 ...
- Android8.1 源码修改之插入SIM卡默认启用Volte功能
前言 公用电话产品,插入SIM卡后要求自动打开Volte功能,即插即用,用完拔卡就走 实现 第一步 开关对应的代码 通过打印日志和全局查找,源码位置 vendor/mediatek/proprieta ...
- 物联网SIM卡和SIM卡,真的不是一回事
[摘要]在物联网解决方案中,设备移动上网也需要使用SIM卡.那么,SIM卡是什么?各种SIM卡有什么区别?物联网SIM卡如何选择?本文将为您答疑解惑. 通信进化史 过去几百年间,通信技术经历了天变地异 ...
随机推荐
- Python标准库之ConfigParser模块
配置文件的格式 a) 配置文件中包含一个或多个 section, 每个 section 有自己的 option: b) section 用 [sect_name] 表示,每个option是一个键值对, ...
- 0.[Andriod]之从零安装配置Android Studio并编写第一个Android App
0. 所需的安装文件 笔者做了几年WP,近来对Android有点兴趣,尝试一下Android开发,废话不多说,直接进入主题,先安装开发环境,笔者的系统环境为windows8.1&x64. 安装 ...
- 洛谷 P1049 装箱问题
\[传送门在这呢!!\] 题目描述 有一个箱子容量为\(V\)(正整数,\(0 \le V \le 20000\)),同时有\(n\)个物品(\(0<n \le 30\),每个物品有一个体积(正 ...
- Linux内存管理 (1)物理内存初始化
专题:Linux内存管理专题 关键词:用户内核空间划分.Node/Zone/Page.memblock.PGD/PUD/PMD/PTE.lowmem/highmem.ZONE_DMA/ZONE_NOR ...
- Kaggle教程——大神教你上分
本文记录笔者在观看Coursera上国立经济大学HLE的课程 How to win a data science competetion中的收获,和大家分享.课程的这门课的讲授人是Kaggle的大牛, ...
- iOS开发基础-KVC简单介绍
一.KVC介绍 键值编码(Key Value Coding,KVC):使开发者不必进行任何操作就可以进行属性的动态读写. KVC操作方法由 NSKeyValueCoding 协议提供,而 NSObje ...
- 自己动手,打造轻量级VSCode/C#环境代替LinqPad
.Net 的项目都挺重的,一直想找一个轻量级的 CSharp 环境,能像Python那样,选一个文件就能跑的.之前用的是 LinqPad,但它的缺点也很明显: (1) 不付费,自动完成不能用( ...
- Gruntfile.js模板
module.exports = function(grunt) { // 配置项 var AppConfig = { name: 'app', //源文件目录 src: 'app/src', //生 ...
- python2.7.14安装部署(Linux)
+++++++++++++++++++++++++++++++++++++++++++标题:python2.7.14安装部署(Linux)时间:2019年2月23日内容:Linux下python环境部 ...
- ssh远程 和 上传/下载工具
常用的ssh远程工具有: putty : 软件体积小,开源免费. xshell : 功能强大,亦有免费试用版本 SecureCRT : 功能强大 ftp : 该软件用于上传下载文件 通过ssh ...