好的,我们继续接续上一篇文章,对 3GPP TS 31.102 规范进行深度拆解。
深度解析 3GPP TS 31.102:4.2.71 EFOPL & 4.2.72 EFPNN (网络名称的“精准定位”)
本文技术原理深度参考了3GPP TS 31.102 V18.8.0 (2025-03) Release 18规范中,关于“4.2.71 EFOPL (Operator PLMN List)”和“4.2.72 EFPNN (PLMN Network Name)”的核心章节,旨在为读者深入剖析手机屏幕上那些带有地域特色的运营商名称(如“北京移动”、“广东联通”)是如何实现的。USIM卡通过
EFOPL和EFPNN这对黄金搭档,将网络名称显示的颗粒度从“国家级”提升到了“省市级”甚至更精细的“区域级”。
在之前的章节中,我们介绍了EFSPN,它让虚拟运营商可以显示自己的品牌。但是,基础运营商(MNO)也有自己精细化显示的需求。
我们的主角“李想”是一位经常出差的商务人士。他发现了一个有趣的现象:虽然他的手机卡和注册的网络并没有变(MCC/MNC都是460-00),但当他在北京时,手机左上角显示的是“北京移动”;而当他飞到上海落地后,手机显示的却自动变成了“上海移动”。
手机是如何知道它现在应该显示哪个地名的呢?仅仅靠MCC和MNC显然不够,因为它们在全国是统一的。答案就是:手机利用了更精细的位置信息——位置区码 (LAC) 或 跟踪区码 (TAC),并结合USIM卡中的EFOPL和EFPNN文件,实现了这种“千人千面”的精准显示。
EFOPL(Operator PLMN List): “运营商PLMN列表”,实际上是一张**“区域定义表”**。它划定了一系列地理区域(通过LAC/TAC范围),并为每个区域指定一个“名称索引”。EFPNN(PLMN Network Name): “PLMN网络名称”,它是一个**“名称数据库”**。它存储了各种具体的网络名称字符串(如“北京移动”、“上海移动”)。
这对文件协同工作,实现了“在什么地方 (OPL) → 显示什么名字 (PNN)”的逻辑闭环。
1. “区域划界者”:4.2.71 EFOPL (运营商PLMN列表)
EFOPL的核心价值在于,它不仅能识别网络(PLMN),还能识别网络下的具体区域。
If service n° 37 is “available”, this file shall be present. This EF contains a prioritised list of Location Area Information (LAI) or Tracking Area Identity (TAI) identities that are used to associate a specific operator name contained in EFPNN or EFSPN with the LAI/TAI.
这段原文指出了EFOPL的关键作用:将位置区域 (LAI/TAI) 与 特定的运营商名称 (contained in EFPNN) 关联起来。
EFOPL的工作机制
EFOPL是一个线性固定文件,每一条记录定义了一个“区域规则”。
记录结构剖析:
每一条EFOPL记录包含以下核心字段:
- PLMN ID (3 bytes): MCC + MNC。
- LAC/TAC Start (2 bytes): 区域的起始位置区码/跟踪区码。
- LAC/TAC End (2 bytes): 区域的结束位置区码/跟踪区码。
- PNN Record Identifier (1 byte): 指向
EFPNN文件中某条记录的指针。
场景化举例:
中国移动希望实现分省显示。假设北京的TAC范围是0x1000到0x1FFF,上海的TAC范围是0x2000到0x2FFF。
运营商会在李想的USIM卡EFOPL中预置如下记录:
- 记录1 (北京区域):
- PLMN:
460-00 - TAC范围:
0x1000-0x1FFF - PNN指针:
'01'(指向EFPNN第1条记录)
- PLMN:
- 记录2 (上海区域):
- PLMN:
460-00 - TAC范围:
0x2000-0x2FFF - PNN指针:
'02'(指向EFPNN第2条记录)
- PLMN:
当李想在北京(假设当前基站TAC为0x1005)时,手机读取当前TAC,遍历EFOPL,发现0x1005落在记录1定义的[0x1000, 0x1FFF]范围内。于是,手机确定应该使用EFPNN的第1条记录来显示名称。
2. “名称数据库”:4.2.72 EFPNN (PLMN网络名称)
EFPNN是真正存储那些显示在屏幕上的字符串的地方。
If service n° 45 is “available”, this file shall be present. This EF contains the full and short form versions of the network name…
EFPNN不仅存储全称,还可以存储简称,以适应不同屏幕尺寸的显示需求。
EFPNN文件结构与编码剖析
EFPNN也是一个线性固定文件,每条记录存储一个网络名称信息。
表 4.2.72-1: EFPNN 文件结构
| 属性 | 值 |
|---|---|
| Identifier | ’6FC5’ |
| Structure | Linear Fixed |
| Record length | X bytes |
| Update activity | Low |
| Access Conditions | READ: ALWAYS, UPDATE: ADM |
记录内容 (X bytes)
| 字节 | 描述 | M/O | 长度 |
|---|---|---|---|
| 1 to X | Network name TLV objects | M | X bytes |
编码核心:网络名称 TLV
EFPNN的记录内容由一个或多个TLV对象组成,主要包括:
- Full Network Name TLV (Tag ‘43’): 网络全称,如“China Mobile Beijing”。
- Short Network Name TLV (Tag ‘45’): 网络简称,如“CM BJ”。
每个名称字段内部还可以包含编码信息(如指明是使用英语ASCII还是中文UCS2编码),以支持国际化显示。
场景化举例(续):
接上例,EFPNN文件中的记录内容如下:
- 记录1 (对应北京):
- Full Name: “北京移动” (UCS2编码)
- Short Name: “北京移动”
- 记录2 (对应上海):
- Full Name: “上海移动” (UCS2编码)
- Short Name: “上海移动”
当李想在北京时,手机通过EFOPL的指引找到EFPNN的记录1,最终在屏幕上显示出“北京移动”。
3. EFOPL/EFPNN 与 EFSPN 的协同与优先级
我们现在有了两套显示机制:基于HPLMN/VPLMN判断的EFSPN,和基于精细位置判断的EFOPL/EFPNN。它们如何共存?
3GPP定义了一套复杂的优先级规则(TS 22.101),简而言之:
EFSPN(服务提供商名称): 代表了用户的签约品牌。如果EFSPN的显示条件满足(例如,要求在归属网络也显示SPN),它通常具有最高优先级或者会与网络名称组合显示。EFOPL/EFPNN(精细化网络名称): 代表了当前实际物理网络的定制化名称。它的优先级高于手机内置的默认网络名称列表。- 默认名称: 如果以上文件都不存在,手机才会使用自己固件里预存的“MCC/MNC → 网络名称”映射表(例如显示最基础的“China Mobile”)。
组合显示效果:
很多时候,手机会将两者组合。例如,虚拟运营商用户可能看到“谷粒移动 | 联通 4G”。这里“谷粒移动”来自EFSPN,而“联通”可能就来自通过EFOPL/EFPNN匹配到的当前网络名称。
总结:方寸屏幕上的“地理与人文”
EFOPL和EFPNN这对文件,是运营商精细化运营在USIM卡上的体现。它们不仅是一个技术实现,更是一种商业和文化策略的载体。
- 实现精细化运营: 允许运营商根据行政区划(省、市)甚至更小的校园、园区(通过特定的TAC规划),向用户展示定制化的网络名称,增强用户的在地感和归属感。
- 灵活的解耦设计:
EFOPL负责“划地盘”,EFPNN负责“起名字”。这种解耦设计使得一个名称(如“中国移动”)可以被多个不同的区域记录所共享,节省了存储空间,也便于维护。 - 提升漫游体验: 在国际漫游场景下,运营商也可以通过预置国外的区域信息,将合作伙伴的网络名称显示为更友好、更易懂的中文名称。
对于李想来说,当他下飞机看到手机上自动跳出的“欢迎来到上海”以及左上角变成“上海移动”的那一刻,他感受到的是一种无缝衔接的、贴心的服务体验。而这一切,都是手机在后台默默地查阅EFOPL这张精密地图,并从EFPNN这个丰富的名称库中找到了准确答案的结果。
FAQ环节
Q1:EFOPL是只能用TAC(4G/5G)吗?LAC(2G/3G)能用吗?
A1:都能用。EFOPL的记录结构设计得非常灵活。它定义的区域范围是基于LAC/TAC的。在2G/3G网络中,手机获取的是LAC(Location Area Code);在4G/5G网络中,手机获取的是TAC(Tracking Area Code)。EFOPL中的范围比对逻辑对两者都适用,手机会根据当前注册的网络类型,自动选择使用LAC还是TAC去和列表中的值进行比对。
Q2:如果我所在区域的TAC不在任何EFOPL记录的范围内,手机显示什么?
A2:这称为“未匹配”状态。此时,手机会回退到下一级显示策略。
- 它可能会去检查是否有一个“通配符”记录(例如,TAC范围是
0000到FFFF的记录),作为该PLMN的默认名称。 - 如果没有通配符记录,它可能会直接显示该PLMN的默认名称(可能存储在手机固件中,或
EFPNN的某条默认记录中)。
Q3:运营商修改了网络名称(例如从“中国网通”变成了“中国联通”),需要换卡才能更新显示吗?
A3:不需要。EFPNN和EFOPL都是可以通过**OTA(空中下载)**进行远程更新的。运营商只需要在后台系统发起一个OTA任务,向所有受影响用户的USIM卡推送新的EFPNN记录内容,手机在接收并刷新后,屏幕上的显示就会自动变为新的名称。
Q4:EFPNN里的名称支持Emoji表情吗?
A4:技术上取决于编码方式和手机的支持程度。EFPNN支持UCS2(Unicode)编码,理论上可以包含Emoji字符。如果运营商在名称字符串中编入了Emoji的Unicode码,且用户的手机字库支持显示该Emoji,那么屏幕上就可以显示出来。不过出于兼容性和严肃性的考虑,运营商很少在正式的网络名称中使用Emoji。
Q5:为什么有时候手机显示的名称和EFPNN里定义的不一样?
A5:这可能是手机操作系统(OS)的覆盖行为导致的。一些手机厂商为了统一用户体验,可能会在操作系统层面对特定的MCC/MNC强制显示内置的名称,而忽略USIM卡中的EFPNN设置。或者,手机当前处于Wi-Fi通话(VoWiFi)状态,此时显示的名称可能会遵循另一套基于Wi-Fi的命名规则。3GPP标准虽然定义了USIM的行为,但最终的屏幕显示权掌握在手机OS手中。