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

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

相关数据结构分析:

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

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

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:解锁密钥值。

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

  • 通过代码配置:

主要涉及到的文件有:

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

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

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

l  配置cat:

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

图表 2  SML配置(一)

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

l  配置key:

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

图表 3 SML配置(二)

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

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

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

图表 4 SML配置(三)

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

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

  • 通过meta工具来配置锁网

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

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

图表 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截图:

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

上一篇:MTK平台系统稳定性分析


下一篇:S5pv210 HDMI 接口在 Linux 3.0.8 驱动框架解析