MT6735 在锁卡时如何只锁 MCC(移动国家码)
[DESCRIPTION]
有些项目要求在锁卡时只锁一个国家码MCC,比如中国只锁460,凡是460开头的SIM卡均可以使用,非460的不能使用。
[SOLUTION]
一个国家一般只有有限几个MCCMNC,比如国内中国移动,中国联通与中国电信三家运营商一共有:46000,46001,46002, 46003,46005,46006,46007
我们在锁卡配置时将以上7个MCCMNC 全部配置,就相当于我们锁了MCC 460 的卡。
所以如果客户有这种要求,请要求他们提供该国家MCC下所有MNC,然后全部配置即可。注意,在smart phone 上默认最多锁 10 组MCCMNC,如果超出此个数,请修改以下define:
#define SML_MAX_SUPPORT_CAT_N 10
锁卡配置完成后,请一定 new 编译并全擦下载测试,否则可能会导致死机或者配置不生效。
MCCMNC, MCC sml_Check 3
1 sml_Check 3
()
for (idx = 0; idx < meta->num; idx++)
{
offset = idx * size_of_cat;
code_len = sml_GetCode(cat,
imsi,
gid1,
gid2,
sim_mnc_len,
(pdata+offset),
code);
if (size_of_cat == code_len)
{
/* Just lock MCC, e.g. MCC:460, MCCMNC=0x46, 0x0F,0xFF */
if (cat == SML_CAT_N &&((*(pdata+offset+1)) & 0x0F == 0x0F))
{
/*code is from SIM, pdata is from NVRAM,justcompare 3 number */
if((code[0]==(*(pdata+offset))) && ((code[1]&0xF0)==(*(pdata+offset+1))&
0xF0))
{
result = KAL_TRUE;
break;
}
}
else if (kal_mem_cmp(code,(pdata+offset), code_len)==0)
{
result = KAL_TRUE;
break;
}
}
}
for (idx = 0; idx < meta->num;idx++)
{
offset = idx *size_of_cat;
code_len =sml_GetCode(cat,
imsi,
gid1,
gid2,
sim_mnc_len,
(pdata+offset),
code);
if (size_of_cat ==code_len)
{
if(kal_mem_cmp(code, (pdata+offset), code_len)==0)
{
result= KAL_TRUE;
break;
}
}
}
2NVRAM_EF_SML_DEFAULT
2.1 setlock state
SML_CAT_N
2.2 setlock key
2.3 setlock code
MCCcodeMNC FFF
code
/* Category N code */
{0x71,0x6F,0xFF,/*716*/
0x46,0x00,0x2F, /*46002*/
如果验证有任何疑问,需要trace code[0], code[1],
(*(pdata+offset))),(*(pdata+offset+1)))
本文转载自一牛网论坛—MTK硬件
原文地址:http://bbs.16rd.com/thread-60432-1-1.html
有些项目要求在锁卡时只锁一个国家码MCC,比如中国只锁460,凡是460开头的SIM卡均可以使用,非460的不能使用。
[SOLUTION]
一个国家一般只有有限几个MCCMNC,比如国内中国移动,中国联通与中国电信三家运营商一共有:46000,46001,46002, 46003,46005,46006,46007
我们在锁卡配置时将以上7个MCCMNC 全部配置,就相当于我们锁了MCC 460 的卡。
所以如果客户有这种要求,请要求他们提供该国家MCC下所有MNC,然后全部配置即可。注意,在smart phone 上默认最多锁 10 组MCCMNC,如果超出此个数,请修改以下define:
#define SML_MAX_SUPPORT_CAT_N 10
锁卡配置完成后,请一定 new 编译并全擦下载测试,否则可能会导致死机或者配置不生效。
MCCMNC, MCC sml_Check 3
1 sml_Check 3
()
for (idx = 0; idx < meta->num; idx++)
{
offset = idx * size_of_cat;
code_len = sml_GetCode(cat,
imsi,
gid1,
gid2,
sim_mnc_len,
(pdata+offset),
code);
if (size_of_cat == code_len)
{
/* Just lock MCC, e.g. MCC:460, MCCMNC=0x46, 0x0F,0xFF */
if (cat == SML_CAT_N &&((*(pdata+offset+1)) & 0x0F == 0x0F))
{
/*code is from SIM, pdata is from NVRAM,justcompare 3 number */
if((code[0]==(*(pdata+offset))) && ((code[1]&0xF0)==(*(pdata+offset+1))&
0xF0))
{
result = KAL_TRUE;
break;
}
}
else if (kal_mem_cmp(code,(pdata+offset), code_len)==0)
{
result = KAL_TRUE;
break;
}
}
}
for (idx = 0; idx < meta->num;idx++)
{
offset = idx *size_of_cat;
code_len =sml_GetCode(cat,
imsi,
gid1,
gid2,
sim_mnc_len,
(pdata+offset),
code);
if (size_of_cat ==code_len)
{
if(kal_mem_cmp(code, (pdata+offset), code_len)==0)
{
result= KAL_TRUE;
break;
}
}
}
2NVRAM_EF_SML_DEFAULT
2.1 setlock state
SML_CAT_N
2.2 setlock key
2.3 setlock code
MCCcodeMNC FFF
code
/* Category N code */
{0x71,0x6F,0xFF,/*716*/
0x46,0x00,0x2F, /*46002*/
如果验证有任何疑问,需要trace code[0], code[1],
(*(pdata+offset))),(*(pdata+offset+1)))
本文转载自一牛网论坛—MTK硬件
原文地址:http://bbs.16rd.com/thread-60432-1-1.html