[DESCRIPTION] MVNO(Mobile Virtaul Network Operator)虚拟网络运营商,没有自己的实体网络,通过租用MNO(Mobile Network Operator)的网络来提供网络服务。 我们知道Spec规定operator之间是通过MCC/MNC (Mobile Country Code/Mobile Network Code)来区分的;而MVNO和对应MNO的MCC/MNC是相同的,那就需要MVNO定义额外的栏位(通常都是SIM卡中某支文件)来和对应MNO做区分;具体这个额外的栏位是什么是每个MVNO自己定义的,需要向MVNO确认。 [SOLUTION] 目前MTK支持区分MVNO的方式有四种(KK以前没有EF_GID1方式),每种包含运营商名称Spn显示和APN两个方面的需求;Spn显示方面每种区分方式对应一个xml的配置表: 1. EF_SPN方式,对应MVNO配置到Virtual-spn-conf-by-efspn.xml中 2. EF_IMSI方式,对应MVNO配置到Virtual-spn-conf-by-imsi.xml中 3. EF_PNN方式,对应MVNO配置到Virtual-spn-conf-by-efpnn.xml中 4. EF_GID1方式,对应MVNO配置到Virtual-spn-conf-by-efgid1.xml中 需要向MVNO确认的信息如下: 1. 区分方式是以上哪种,从而决定相关信息需要配置到哪个xml中 2. MVNO的MCC/MNC是什么 3. MVNO的区分栏位的值是什么 4. MVNO需要显示成什么 5. MVNO是否有自己的APN需要配置(还是直接使用对应MNO的),如果需要,值是什么 KK以前(JB*.MP): 一 SPN的设定: (1)通过EF_SPN区分 这中方式是读取SIM中的文件EF_SPN,结合SIM的mccmnc+spn,在virtual-spn-conf-by-efspn.xml 中查找有没有对应的记录,如果有这表示这个SIM是MVNO的卡,同时取name字段的内容当作运营商名称。 如果知道MVNO的SIM卡中的SPN是“abc”,MNO的MCC/MNC是10000,期望显示运营商名是”MVNO“,那就这样加记录(在Virtual-spn-conf-by-efspn.xml中) <virtualSpnOverride mccmncspn="10000abc“ name="MVNO"> (2)通过EF_IMSI区分 这中方式是imsi中有一段特殊的数字标识用于和MNO区分 例如MNO的MCC/MNC是46692,MVNO的IMSI是466923302848289,IMSI的第9位(注意:是0 base, 所以index要填08)起连续2个数字为特殊标识(28),期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-imsi.xml中) <virtualSpnOverride mccmnc="46692" index="08" length="02" pattern="28" name=“MVNO”> (3)通过EF_PNN区分 EF_PNN是SIM中的一个option的文件,里面存放一组网络运营商名称(PLMN Network Name)。这种方式即是读取EF_PNN中的第一个pnn来匹配。如果MNO的MCC/MNC是10000,MVNO中EF_PNN的第一个pnn是“abc”,期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-efpnn.xml中) <virtualSpnOverride mccmncpnn="10000abc“ name="MVNO"> 二 APN的设定 其对应的文件是apns-conf.xml,和spn-conf.xml相同的目录。对比SPN,APN就简单许多,APN填写和SPN区分选择有联系。 这里举例说明,原MNO的APN的设定 <apn carrier="Orange Entreprise" mcc="100" mnc="00" apn="MNO的apn" user="MNO的user" password="MNO的password" type="default,supl" /> (1)通过EF_SPN区分 区分是通过spn字段,和spn记录中的spn字段相同 假如spn中MVNO对应记录是<virtualSpnOverride mccmncspn="10000abc“ name="MVNO">; <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" spn="abc" <<增加这个字段 apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" /> (2)通过EF_IMSI区分 通过imsi的pattern区分,和spn中的pattern相同。 假如spn中的MVNO记录是<virtualSpnOverride mccmnc="46692" index="08" length="02" pattern="28" name=“MVNO”> 那这个对应的MVNO的AP是 <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" imsi="28" <<增加这个字段 apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" /> (3)通过EF_PNN区分 区分是通过pnn字段,和spn记录中的pnn字段相同 假如spn中MVNO对应记录是<virtualSpnOverride mccmncpnn="10000abc“ name="MVNO">; <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" pnn="abc" <<增加这个字段 apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" /> KK以后(包含KK): 一 SPN的设定: 所有MVNO区分方式的virtual xml的构成都应该是mccmnc+pattern (1)通过EF_SPN区分 这中方式是读取SIM中的文件EF_SPN,结合SIM的mccmnc+spn,在virtual-spn-conf-by-efspn.xml 中查找有没有对应的记录,如果有这表示这个SIM是MVNO的卡,同时取name字段的内容当作运营商名称。 如果知道MVNO的SIM卡中的SPN是“abc”,MNO的MCC/MNC是10000,期望显示运营商名是”MVNO“,那就这样加记录(在Virtual-spn-conf-by-efspn.xml中) <virtualSpnOverride mccmncspn="10000abc“ name="MVNO"> (2)通过EF_IMSI区分 这中方式是imsi中有一段特殊的数字标识用于和MNO区分 例如MNO的MCC/MNC是46692,MVNO的IMSI是466923302848289,IMSI的第9位起连续2个数字为特殊标识(28),期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-imsi.xml中)
<virtualSpnOverride imsipattern="4669246692×××28×××××" name=“MVNO”> (3)通过EF_PNN区分 EF_PNN是SIM中的一个option的文件,里面存放一组网络运营商名称(PLMN Network Name)。这种方式即是读取EF_PNN中的第一个pnn来匹配。如果MNO的MCC/MNC是10000,MVNO中EF_PNN的第一个pnn是“abc”,期望显示的运营商名称是“MVNO”,那就这样加记录(Virtual-spn-conf-by-efpnn.xml中) <virtualSpnOverride mccmncpnn="10000abc“ name="MVNO"> (4)通过EF_GID1区分 EF_GID1是SIM中的一个option的文件,里面存放了n个byte的数据;如果MNO的MCC/MNC是10000,MVNO的EF_GID1的内容是"11",期望显示的运营商名称是"MVNO",那就这样加记录(Virtual-spn-conf-by-efgid1.xml中) <virtualSpnOverride mccmncgid1="1000011" name="MVNO"> 二 APN的设定 其对应的文件是apns-conf.xml,和spn-conf.xml相同的目录。对比SPN,APN就简单许多,APN填写和SPN区分选择有联系。 这里举例说明,原MNO的APN的设定 <apn carrier="Orange Entreprise" mcc="100" mnc="00" apn="MNO的apn" user="MNO的user" password="MNO的password" type="default,supl" /> (1)通过EF_SPN区分 区分是通过spn字段,和spn记录中的spn字段相同 假如spn中MVNO对应记录是<virtualSpnOverride mccmncspn="10000abc“ name="MVNO">; <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" mvno_type="spn" <<增加这两个字段 mvno_match_data="abc" /> (2)通过EF_IMSI区分 通过imsi的pattern区分,和spn中的pattern相同。 假如spn中的MVNO记录是<virtualSpnOverride imsipattern="4669246692×××28×××××" name=“MVNO”> 那这个对应的MVNO的APN是 <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" mvno_type="imsi" <<增加这两个字段 mvno_match_data="46692×××28×××××" /> (3)通过EF_PNN区分 区分是通过pnn字段,和spn记录中的pnn字段相同 假如spn中MVNO对应记录是<virtualSpnOverride mccmncpnn="10000abc“ name="MVNO">; <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" mvno_type="pnn" <<增加这两个字段 mvno_match_data="abc" /> (4)通过EF_GID1区分 区分是通过gid1字段,和spn记录中的gid1字段相同 假如spn中MVNO对应记录是<virtualSpnOverride mccmncgid1="1000011" name="MVNO">; <apn carrier="Orange Entreprise" <<设定中显示的名称 mcc="100" mnc="00" apn="MVNO的apn" user="MVNO的user" password="MVNO的password" type="default,supl" mvno_type="gid" <<增加这两个字段, 注意是gid而不是gid1 mvno_match_data="11" /> 有些地区的MVNO要求忽略国内漫游(national roaming),如果有此需求可以参考: ID: FAQ11783 [NW]MVNO忽略国内漫游(ignore national roaming) 如果按照上述配置后,锁屏界面/下拉列表界面 显示的名字和配置的不同,可能按照spec显示了更高优先级的名字,比如NITZ/EONS… 遇到这类问题属于网络运营商名称显示,可以同时参考如下FAQ: ID: FAQ08919 [NW]网络运营商名称显示规则(锁屏界面,下拉列表)---网络名称 客制化方法 和 问题处理flow |
|