1、sim-lock是什么?
sim-lock也叫subsidy lock 补贴锁, carrier lock, lock,是带合约的机器,运营商限制你使用其他运营商的sim卡,对于长期客户,出国时可以给运营商打电话要一个临时的unlock code。对于Android Teleephony来说,对应SIM卡状态为Network sim locked状态。
2、锁卡的需求
根据3GPP TS 22.022协议,个性化定制是分为很多种类,常见的有NP锁,NS锁,CP锁,SP锁等,每种锁需要的需要的参数不相同。
- NP(Network personalisation )锁仅仅需要卡的mcc mnc
- NS(Network Subset personalisation )锁需要卡的mcc mnc以及卡的IMSI的6位7位
- SP(Service Provider personalisation )锁需要卡的mcc mnc以及卡的GID1
- Corporate(Corporate personalisation)锁需要卡的mcc mnc以及卡的GID1和GID2
- SIM/USIM 锁需要卡的mcc mnc以及卡的IMSI的6位7位,以及卡IMSI的8到15位
3、解锁过程
SIM LOCK解锁流程如下。
那么如果SIM卡有PIN和PUK码,锁屏界面是先弹PIN和PUK锁还是运营商锁呢?
会先弹PIN和PUK锁,因为卡中的IMSI必须在PIN解锁时才能读取到,Modem需要相关卡信息才能进行锁卡,因此肯定会先弹PIN和PUK锁。
4、MTK平台Modem锁预制
参考custom/service/nvram/custom_nvram_sec.c
5、集成Jio SIM lock需要做什么?
1、修改SystemUI ,Telephony ,Settings等
主要包括锁屏界面,JioSim必须是DDS卡,锁屏启动数据开关,WIFI链接,紧急拨号等处理
2、集成SLC APK,SE权限以及Android权限
3、SLC APK与modem接口实现
3.1、MTK使用JNI方式实现,需要集成libslcjni.so,反编译SLC APK可以看到相关jni实现
实现接口代码在vendor/mediatek/proprietary/frameworks/opt/subsidylock/
模块名为lib_remote_simlock
相关Log打印如下
3.2、Qualcomm使用AIDL方式实现
实现接口代码在vendor/qcom/proprietary/commonsys/telephony-apps/RemoteSimlock
4、Modem锁卡配置
5、未解锁时如何判断JIO卡 ---- 只能通过ICCID判断