• 关于MTK平台SIM-ME Lock的配置方案


    针对一些运营商的锁网需求,MTK平台已经对其有很好的支持。绝大多数的海外需求可以通过直接配置相关文件来完成。这里简单描述一下配置方法,不做原理分析。

    相关数据结构分析:

    Modem中与SML锁网配置相关的数据结构有:

     

    Sml_context_struct:SML上下文,

    cat:SML种类,目前MTK平台共支持7种锁网方式(Network Lock,Network Subset Lock,Service Provider Lock,Corporate Lock,IMSI Lock,Linked NS-SP Lock,Linked SIM-C Lock)

    key:modem侧解锁密钥配置

    Code_cat_n:Network Lock锁网参数配置

    Code_cat_ns:Network Subset Lock锁网参数配置

    ……

    Sml_category_meta_struct:锁网种类

    State:锁定状态,枚举值:

    Typedef enum{

    SML_STATE_NULL,

    SML_STATE_LOCK,

    SML_STATE_UNLOCK,

    SML_STATE_AUTOLOCK,

    SML_STATE_DISABLE

    } sml_state_enum;

    通常,锁定该类别配置SML_STATE_LOCK(0x01),否则选择SML_STATE_UNLOCK(0x02)即可。

    Retry_count:可以retry的次数。

    Autolock_count:

    Num:锁网参数表有效集合个数。

    Sml_control_key_struct:解锁密钥

    State:SML_KEY_EMPTY/SML_KEY_SET,

    这里我们一致取值SML_KEY_SET(0x01),

    Key:解锁密钥值。

     如何完成锁网功能(配置相关值)

    • 通过代码配置:

    主要涉及到的文件有:

    图表 1  modem 中与锁网配置相关的文件

    通过前面对SIM-ME Lock主要数据结构的分析,我们可以来简单配置一个锁网需求,如mexico Telcel需求:配置334020/00101的Network锁。

    l  配置cat:

     

    图表 2  SML配置(一)

    四个参数分别为:锁定状态(SML_STATE_LOCK),retry次数(根据需求来定),autolock(目前统一为0),有效锁网个数(如果锁46000/46002,就写2即可)

    l  配置key:

     

    图表 3 SML配置(二)

    参数:KEY状态(目前统一配置为SML_KEY_SET),解密密钥(目前同意配置为35574126)

    l  配置锁网列表:把需求表中需要锁定的MCC/MNC值写入即可。

     

    图表 4 SML配置(三)

    对于两位的MNC,最后一位直接补充F就可以了。

    至此,modem代码端的配置工作已经做完。So easy!

    • 通过meta工具来配置锁网

    终端连接上meta工具之后,读取NVRAM_EF_SML_LID

     

    图表 5 meta读取SML参数

    通过工具,我们可以直接修改相关参数。主要有:

    Cat[0]:state -- 0x01(锁网),0x02(不锁网);Retry_count -- 可以解锁的次数;Num -- code_cat_n中有效集合个数

    Code_cat_n:配置锁网列表

     

     

    在产线通过生产工具来配置锁网参数

    • 初步配置文件设计:

    基于上述的分析,初步设计的锁网配置文件格式如下:

    <WindSmlConf>

    <WindCateIndex>0</WindCateIndex> // 锁网类别取值0-6,分别对应7种锁网方式,如锁定Network则取值0

    <WindCategory>       // 根据前面的index来确定配置哪个cat

    <state>0x01/0x02</state>     // 锁定状态(01锁定,02不锁)

    <retry-count></retry-count>  // 解锁次数

    <autolock-count>0x00</autolock-count>  // 固定为0

    <num></num>   // 有效结合个数

    </WindCategory>

    <WindCode>

    <item>XX</item>      // 详述所有的锁定列表

    ……

    </WindCode>

    </WindSmlConf>

     

    例子:(mexico telcel的锁网需求)

    <WindSmlConf>

    <WindCateIndex>0</WindCateIndex>

    <WindCategory>

    <state>1</state>

    <retry-count>5</retry-count>

    <autolock-count>0</autolock-count>

    <num>2</num>

    </WindCategory>

    <WindCode>

    <item>334020</item>

    <item>00101F</item>

    </WindCode>

    </WindSmlConf>

    • 更新配置文件设计:

    由于在进行数据擦除的时候,会将所有的数据清0,这样会导致一些使用默认值的参数也变得没有意义。

    经最后与生产部同仁讨论,现将所有的锁网参数全部写进配置文件中;并且为了后续扩展需要,将code_cat_n扩充到15个元素。如下:

    [SIMLOCKCFG]

    Magic_head = 0x000000CC // magic_head

    WindCateIndex = 0 // 锁网类别取值0-6,分别对应7种锁网方式,如锁定Network则取值0

    State = 1                    // 锁定状态(01锁定,02不锁)

    Retry-count = 5         // 解锁次数

    Autolock-count = 0   // 固定为0

    Num = 4                            // 有效集合个数

    Key_state = 1             // modem端密钥状态,固定为1

    Key = 0x53751462FFFFFFFF // modem端密钥,固定为该值

    Item1 = 334020         // 详述所有的锁定列表

    ……

    Magic_tail= 0x26598088 // magic_tail

    Simlockmodel = 1 // 1表示普通算法,2代表Yoigo解锁算法

    Meta截图:

  • 相关阅读:
    转: PHP的"::"、"->"和"=>"的区别
    PHP命名空间
    PHP+MySQL数据库编程的步骤
    SQL基础
    Mysql的CMD操作
    Apache服务器配置
    【网关】SpringCloud-Gateway
    Oracle表分区
    MongoDB---分片
    MongoDB-BSON
  • 原文地址:https://www.cnblogs.com/caidi/p/3997829.html
Copyright © 2020-2023  润新知