【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析
源码阅读:AOSPXRef
常用日志关键字
Note:">"下发MD,"<"MD上报,[]中的id有请求和返回的对应关系
KEY | Comment |
---|---|
> OPERATOR | 下发MD,请求运营商信息 |
< OPERATOR | MD上报运营商注册信息 |
> DATA_REGISTRATION_STATE | 下发MD请求驻网状态信息 |
< DATA_REGISTRATION_STATE | MD上报驻网状态 |
Poll ServiceState done | SST 更新网络状态完成 |
updateSpnDisplayCdnr | 网络状态变化触发SPN更新 |
实网Log分析
// radio关闭时不会更新SPN
03-27 14:23:59.808824 2120 2120 D MTKSST : [GsmSST1] updateSpnDisplay: radio is off w/ showPlmn=true plmn=null
03-27 14:23:59.808919 2120 2120 D MTKSST : [GsmSST1] updateSpnDisplay: rawSpn =
// 还没获取到运营商信息。(请求运营商信息的过程很快,耗时短,都不需要半秒的)
03-27 14:23:29.955064 2120 2120 D RILJ : [1938]> OPERATOR [PHONE0]
03-27 14:23:29.967462 2120 2455 D RILJ : [1938]< OPERATOR {, , } [PHONE0]
// 还没驻网成功,搜网或处于飞行模式
03-27 14:23:59.737880 2120 2585 D RILJ : [1984]> DATA_REGISTRATION_STATE [PHONE0]
03-27 14:23:59.747966 2120 2455 D RILJ : [1984]< DATA_REGISTRATION_STATE {.regState = NOT_REG_MT_SEARCHING_OP, .rat = UNKNOWN, .reasonForDenial = NONE, .cellIdentity = {.noinit = {}}, .registeredPlmn = , .accessTechnologySpecificInfo = {.noinit = {}}} [PHONE0]
// 驻网在本地LTE网络,从mccmnc和registeredPlmn可以确认。
疑问:根据什么确认显示alphaLong还是alphaShort?
03-27 14:23:59.969940 2120 2585 D RILJ : [1988]> DATA_REGISTRATION_STATE [PHONE0]
03-27 14:24:00.049672 2120 2455 D RILJ : [1988]< DATA_REGISTRATION_STATE {.regState = REG_HOME, .rat = LTE, .reasonForDenial = NONE, .cellIdentity = {.lte = {.base = {.base = {.mcc = 722, .mnc = 07, .ci = 256, .pci = 0, .tac = 1, .earfcn = 2525}, .operatorNames = {.alphaLong = AR - Movistar, .alphaShort = Movistar}, .bandwidth = 10000}, .additionalPlmns = [], .optionalCsgInfo = {.noinit = {}}, .bands = [5]}}, .registeredPlmn = 72207, .accessTechnologySpecificInfo = {.eutranInfo = {.lteVopsInfo = {.isVopsSupported = true, .isEmcBearerSupported = true}, .nrIndicators = {.isEndcAvailable = false, .isDcNrRestricted = false, .isNrAvailable = false}}}} [PHONE0]
03-27 14:23:59.960990 2120 2120 D RILJ : [1986]> OPERATOR [PHONE0]
// 通知应用程序网络状态发生变化
03-27 14:23:59.986333 2120 2455 D RILJ : Unsol response received; Sending ack to ril.cpp [PHONE0]
03-27 14:23:59.986511 2120 2455 D RILJ : [UNSL]< UNSOL_RESPONSE_NETWORK_STATE_CHANGED [PHONE0]
// 驻网信息,由Modem根据当时注册网络的信息上报的,和Telephony的SST信息一致。
03-27 14:23:59.987577 2120 2455 D RILJ : [1986]< OPERATOR {AR - Movistar, Movistar, 72207} [PHONE0]
// CS在无线局域网,注册在HOME LTE(在CS域中,语音和短信数据通过电路交换方式传输),可用服务:[VOICE, SMS, VIDEO]
03-27 14:24:00.057818 2120 2585 D NRM-C-0 : onRequestNetworkRegistrationInfoComplete result: 0, info: NetworkRegistrationInfo{ domain=CS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[VOICE,SMS,VIDEO] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=VoiceSpecificRegistrationInfo { mCssSupported=false mRoamingIndicator=0 mSystemIsInPrl=0 mDefaultRoamingIndicator=0} dataSpecificInfo=null nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}
// PS状态变化,从搜网到注册完成,驻网在HOME LTE,具备DATA能力,
03-27 14:24:00.074533 2120 2601 D NRM-I-0 : onRequestNetworkRegistrationInfoComplete result: 0, info: NetworkRegistrationInfo{ domain=PS transportType=WLAN registrationState=NOT_REG_OR_SEARCHING networkRegistrationState=NOT_REG_OR_SEARCHING roamingType=NOT_ROAMING accessNetworkTechnology=UNKNOWN rejectCause=0 emergencyEnabled=false availableServices=[] cellIdentity=null voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 0 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo : mVopsSupport = 1 mEmcBearerSupport = 1 } nrState=**** rRplmn=null isUsingCarrierAggregation=false}
03-27 14:24:00.103294 2120 2585 D NRM-C-0 : onRequestNetworkRegistrationInfoComplete result: 0, info: NetworkRegistrationInfo{ domain=PS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[DATA] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 16 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo : mVopsSupport = 2 mEmcBearerSupport = 2 } nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}
// TS.25是MD配,但是来源TS.25的SPN显示优先级很低
03-27 14:24:00.208931 2120 2120 D MtkRILJ : lookupOperatorNameMVNO plmn name update to TS.25/MVNO: AR - Movistar
// ServiceState 更新网络状态完成,切换到LTE,alphatag更新到AR - Movistar
03-27 14:24:00.223138 2120 2120 D MTKSST : [GsmSST0] Poll ServiceState done: newSS={mVoiceRegState=0(IN_SERVICE), mDataRegState=0(IN_SERVICE), mChannelNumber=2525, duplexMode()=1, mCellBandwidths=[10000], mOperatorAlphaLong=AR - Movistar, mOperatorAlphaShort=AR - Movistar, isManualNetworkSelection=false(automatic), getRilVoiceRadioTechnology=14(LTE), getRilDataRadioTechnology=14(LTE), mCssIndicator=unsupported, mNetworkId=-1, mSystemId=-1, mCdmaRoamingIndicator=-1, mCdmaDefaultRoamingIndicator=-1, mIsEmergencyOnly=false, isUsingCarrierAggregation=false, mArfcnRsrpBoost=0, mNetworkRegistrationInfos=[NetworkRegistrationInfo{ domain=PS transportType=WLAN registrationState=NOT_REG_OR_SEARCHING networkRegistrationState=NOT_REG_OR_SEARCHING roamingType=NOT_ROAMING accessNetworkTechnology=UNKNOWN rejectCause=0 emergencyEnabled=false availableServices=[] cellIdentity=null voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 0 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo : mVopsSupport = 1 mEmcBearerSupport = 1 } nrState=**** rRplmn=null isUsingCarrierAggregation=false}, NetworkRegistrationInfo{ domain=CS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[VOICE,SMS,VIDEO] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=AR - Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=VoiceSpecificRegistrationInfo { mCssSupported=false mRoamingIndicator=0 mSystemIsInPrl=0 mDefaultRoamingIndicator=0} dataSpecificInfo=null nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}, NetworkRegistrationInfo{ domain=PS transportType=WWAN registrationState=HOME networkRegistrationState=HOME roamingType=NOT_ROAMING accessNetworkTechnology=LTE rejectCause=0 emergencyEnabled=false availableServices=[DATA] cellIdentity=CellIdentityLte:{ mCi=256 mPci=0 mTac=1 mEarfcn=2525 mBands=[5] mBandwidth=10000 mMcc=722 mMnc=07 mAlphaLong=AR - Movistar mAlphaShort=AR - Movistar mAdditionalPlmns={} mCsgInfo=null} voiceSpecificInfo=null dataSpecificInfo=android.telephony.DataSpecificRegistrationInfo :{ maxDataCalls = 16 isDcNrRestricted = false isNrAvailable = false isEnDcAvailable = false mLteAttachResultType = 0 mLteAttachExtraInfo = 0 LteVopsSupportInfo : mVopsSupport = 2 mEmcBearerSupport = 2 } nrState=**** rRplmn=72207 isUsingCarrierAggregation=false}], mNrFrequencyRange=0, mOperatorAlphaLongRaw=AR - Movistar, mOperatorAlphaShortRaw=Movistar, mIsDataRoamingFromRegistration=false, mIsIwlanPreferred=false}
03-27 14:24:00.224207 2120 2120 D MTKSST : [GsmSST0] RAT switched Unknown -> LTE at cell 256
// 非漫游,根据EF中displayRule显示SPN值,但是实际界面显示了PLMN
03-27 14:24:00.252327 2120 2120 D MTKSST : [GsmSST0] carrierName=, overrideName=
03-27 14:24:00.252465 2120 2120 D ServiceStateTracker: [0] updateSpnDisplayCdnr: curSpn = ; curPlmn = AR - Movistar; curDisplayRule = 2
03-27 14:24:00.258072 2120 2120 I CDNR : getCarrierDisplayNameFromEf withoutRoaming = false
03-27 14:24:00.258204 2120 2120 I CDNR : getCarrierDisplayNameFromEf registeredPlmnNumeric = 72207; isRoaming = false; showSpn = true; showPlmn = false; spn =
// 根据EF内容,更新了SPN为AR - Movistar,同PLMN,所以会显示AR - Movistar
03-27 14:24:00.258433 2120 2120 D CDNR : getCarrierDisplayNameFromEf displayRule = { SPN_bit = 2, PLMN_bit = 0 }; spn = AR - Movistar; plmn = AR - MovistarshowSpn = true; showPlmn = false
03-27 14:24:00.258617 2120 2120 D CDNR : CarrierName from EF: { spn = AR - Movistar, dataSpn = null, showSpn = true, plmn = AR - Movistar, showPlmn = false
03-27 14:24:00.267668 2120 2120 D ServiceStateTracker: [0] updateTctSpnDisplay: updateSpnDisplay: changed sending intent, rule=2, showPlmn='false', plmn='AR - Movistar', showSpn='true', spn='AR - Movistar', dataSpn='null', subId='2'
03-27 14:24:00.303102 2120 2120 D ServiceStateTracker: [0] setCarrierText simNumeric:72207, operatorNumeric:72207, gid1:FFFFFFFF, carrierText:AR - Movistar
相关说明
1、不同平台的Modem配置TS.25或许会存在差异,比如6835芯片的配置路径在modem_t_6835 / mcu/custom/service/plmn/TS25。
2、TS25文件用于显示运营商名称,较新的平台机制(带MIPC的平台)才移到Modem维护的。没有TS.25时,会在Telephony AP侧配置,spn-conf.xml中。
定制方案
无法修改网络上报的信息,客制化只能在Telphony FW中配置运营商名称期望值。
针对平台定义的运营商名称,修改在spn-conf.xml,具体看mk编译生效文件的路径,可能用:
- /device/mediatek/system/common/
- /device/mediatek/common/
<spnOverride numeric="72207" spn="Movistar"/>
<spnOverride numeric="722070" spn="Movistar"/>
相关文章:
【笔记】Android U RILJ 中与运营商名称SPN显示相关的日志分析
源码阅读:AOSPXRef 常用日志关键字 Note:">"下发MD,"<"MD上报,[]中的id有请求和返回的对应关系 KEYComment> OPERATOR下发MD,请求运营商信息< OPERATORMD上报运营商注册信息> DA…...

蓝桥杯【奇怪的捐赠】c语言
我会将这题的解题的核心思路解为将10进制转化成7进制,毕竟题目上说的很清楚7的几次方 然后附上我认为的最优解 #include<stdio.h> int main() {int n 1000000;int sum 0;while (n ! 0){int a;a n % 7;n n / 7;sum a ;}printf("%d", sum);retu…...
【3月比赛合集】5场可报名的「创新应用」、「数据分析」和「程序设计」大奖赛,任君挑选!
CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 创新应用赛(2场比赛)数据分析赛&#…...

vue3 视频播放功能整体复盘梳理
回顾工作中对视频的处理,让工作中处理的问题的经验固化成成果,不仅仅是完成任务,还能解答任务的知识点。 遇到的问题 1、如何隐藏下载按钮? video 标签中的controlslist属性是可以用来控制播放器上空间的显示,在原来默…...

vue-ueditor-wrap上传图片报错:后端配置项没有正常加载,上传插件不能正常使用
如图所示,今天接收一个项目其中富文本编辑器报错 此项目为vue2项目,富文本编辑器为直接下载好的资源存放在public目录下的 经过排查发现报错的函数在ueditor.all.min.js文件内,但是ueditor.all.min.js文件夹是经过压缩的 所以直接ÿ…...
数据仓库的发展历程
数据仓库的概念可以追溯到20世纪60年代,但真正形成理论并被企业广泛应用还需要一个较长的发展过程。大致可以分为以下几个阶段: 决策支持系统(DSS)时期(1960s-1970s) 这一时期,随着管理信息系统(MIS)和电子计算机的兴起,企业开始尝试构建面向决策的数据处理系统。最初的决策支…...

MySQL开窗函数
测试环境:mysql8.0.18 官方文档:https://dev.mysql.com/doc/refman/8.0/en/window-functions.html 一、窗口函数介绍二、语法结构三、自定义窗口1.rows(重点)2.range3.默认窗口 四、常用窗口函数示例1.row_number & rank &…...

Java学习笔记(23)
多线程 并发 并行 多线程实现方式 1.继承Thread类 自己创建一个类extends thread类 Start方法开启线程,自动执行重写之后的run方法 2.实现runable接口 自己创建一个类implements runnable Myrun不能直接使用getname方法,因为这个方法是thread类的方法…...

nodejs下载安装以及npm、yarn安装及配置教程
1、nodejs下载安装 1.1、使用nodejs版本管理工具下载安装,可一键安装、切换不同nodejs版本, nvm-setup.zip:安装版,推荐使用 本次演示的是安装版。 1、双击安装文件 nvm-setup.exe 选择nvm安装路径 例如:E:\Soft…...
Playwright库page.evaluate()方法执行JavaScript 表达式
page.evaluate() 方法是 Playwright 中常用的方法之一,用于在页面上下文中执行 JavaScript 代码。它允许在浏览器环境中执行各种操作,如操作 DOM 元素、获取页面数据、执行复杂的计算等,并将结果返回到 Node.js 或 Python 代码中。 在 Playw…...

【微服务】OpenFeign+Sentinel集中处理远程调用异常
文章目录 1.微服务基本环境调整1.对10004模块的application.yml调整2.启动nacos以及一个消费者两个提供者3.测试1.输入http://localhost:8848/nacos/index.html 来查看注册情况2.浏览器访问 http://localhost:81/member/nacos/consumer/get/13.结果 2.使用OpenFeign实现微服务模…...

集合嵌套,Collections,斗地主案例,日志框架
文章目录 集合嵌套List嵌套ListList嵌套MapMap嵌套Map Collections类方法排序 sort 乱序 shuffle 斗地主案例需求思路代码 日志框架介绍优势体系结构Logback概述快速入门配置详解 集合嵌套 List嵌套List public static void main(String[] args){//一个年级有许多班级…...
maven pom relativePath属性的作用
maven pom relativePath属性的作用 文章目录 maven pom relativePath属性的作用一、relativePath出现的地方二、relativePath默认值三、四、<relativePath>一个pom路径 一、relativePath出现的地方 搭建maven项目,子模块指定父模块试,经常会在par…...

【STM32 HAL库SPI/QSPI协议学习,基于外部Flash读取。】
1、SPI协议 简介 SPI 协议是由摩托罗拉公司提出的通讯协议 (Serial Peripheral Interface),即串行外围设备接口,是 一种高速全双工的通信总线。它被广泛地使用在 ADC、LCD 等设备与 MCU 间,要求通讯速率 较高的场合。 SPI 物理层 SPI 通讯…...
Nginx入门--初识Nginx的架构
一、概述 Nginx的架构设计旨在高效处理并发的网络请求。它采用了事件驱动的、非阻塞的IO模型,可以同时处理成千上万个并发连接,而不会消耗太多的系统资源。 二、主要组件 Nginx的主要组件包括: Master Process(主进程…...

网络性能提升10%,ZStack Edge 云原生超融合基于第四代英特尔®至强®可扩展处理器解决方案发布
随着业务模式的逐渐转变、业务架构逐渐变得复杂,同时容器技术的兴起和逐渐成熟,使得Kubernetes、微服务等新潮技术逐步应用于业务应用系统上。 为了充分释放性能、为业务系统提供更高效的运行环境,ZStack Edge 云原生超融合采用了第四代英特尔…...

双非计算机考研目标211,选11408还是22408更稳?
求稳得话,11408比22408要稳! 很多同学只知道,11408和22408在考察的科目上有区别,比如: 11408考的是考研数学一和英语一,22408考察的是考研数学二和英语二: 考研数学一和考研数学二的区别大吗…...

简单了解策略模式
什么是策略模式? 策略模式提供生成某一种产品的不同方式 Strategy策略类定义了某个各种算法的公共方法,不同的算法类通过继承Strategy策略类,实现自己的算法 Context的作用是减少客户端和Strategy策略类之间的耦合,客户端只需要…...
算法——运动模型
智能驾驶中常用的速度计算算法包括基于GPS的速度计算、惯性测量单元(IMU)的速度计算、雷达测距的速度计算、视觉测距的速度计算等。这些算法可以单独使用或者结合使用,以提高速度计算的准确性和稳定性。 智能驾驶中常用的加速度计算算法包括…...

基于R语言lavaan结构方程模型(SEM)技术应用
结构方程模型(Sructural Equation Modeling,SEM)是分析系统内变量间的相互关系的利器,可通过图形化方式清晰展示系统中多变量因果关系网,具有强大的数据分析功能和广泛的适用性,是近年来生态、进化、环境、…...

19c补丁后oracle属主变化,导致不能识别磁盘组
补丁后服务器重启,数据库再次无法启动 ORA01017: invalid username/password; logon denied Oracle 19c 在打上 19.23 或以上补丁版本后,存在与用户组权限相关的问题。具体表现为,Oracle 实例的运行用户(oracle)和集…...

Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序
一、开发环境准备 工具安装: 下载安装DevEco Studio 4.0(支持HarmonyOS 5)配置HarmonyOS SDK 5.0确保Node.js版本≥14 项目初始化: ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
动态 Web 开发技术入门篇
一、HTTP 协议核心 1.1 HTTP 基础 协议全称 :HyperText Transfer Protocol(超文本传输协议) 默认端口 :HTTP 使用 80 端口,HTTPS 使用 443 端口。 请求方法 : GET :用于获取资源,…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...