问题产生的原因是,不小心刷了4.4.4的底包,没有取消掉modemst的两行,导致手机有了网络锁。由于JS改过SPC,计算出来的SPC无法使用。可是解锁时需要SPC码,给出的SPCUtility软件无法在4.4.4下工作,而且刷了4.4.4的底包即升级了BL,无法再次通过刷底包回到4.4.2,卡刷4.4.2用软件读出的SPC值为空。故写此教程帮助大家用Android 4.4.4查找SPC MSL。

SPC与MSL的值一样,只不过叫法不同。一般获取SPC MSL密码时,有三种通用的方法。

使用SPC软件直接读出
尝试错误的SPC码然后通过logcat查找正确的SPC码
通过软件算出

在moto x上,SPC软件只能工作在4.4.2中。还有logcat没有记录相关的值。

所以,对已经刷了4.4.4的S版moto x,有2种查找SPC MSL的方法。

» SPC MSL计算器 ( 直接算出出厂默认的SPC )
» SPCUtility ( 在4.4.2中可读取SPC )

————————————————–我是分割线————————————————–
» SPC MSL计算器
计算器的前提是知道MEID或者ESN,还有JS没有动过SPC MSL

获取MEID值
如果手机系统是Sprint官方的4.4.4,打开Settings — About phone — Status应该能找到MEID的值,此处的值为MEID Hex。
将这个值填入各种SPC或MSL计算器即可得到出厂的SPC MSL密码。连接是一个好用的在线计算器,不过感谢万能的墙,访问速度比较慢。
https://dev.webb.so/msl/

获取ESN值
如果使用的是第三方的4.4.4,可以重启到BP tools的模式,通过DFS查找ESN的值,然后使用上述在线计算器计算SPC MSL密码。

————————————————–我是分割线————————————————–
» SPCUtility
如果本机的SPC已经被更改,算得的SPC MSL密码就无效了。所以需要降级到4.4.2然后通过软件读取本机现在的SPC MSL。

这里的问题是,通过OTA或者线刷官方底包升级了BL的moto x是无法通过重刷官方底包回到4.4.2的。
通过recovery刷一个4.4.2的卡刷包,软件是能读取成功,但是读取到的SPC MSL为空。

所以需要清空并降级BP,而且降级到4.4.2。

通过不断尝试,发现S版刷到4.4.4以后可以用V版的底包降级到4.4.2

步骤 1 » 用RSD刷4.4.2的v版的底包
此处对xml文件需要单独说明。
确保底包设置为清空modemst1和modemst2和更新modem。当然,其他的选项最好都保留,然后刷机时如果出错,看看是卡在哪一步了,删除那一步的选项然后重启RSD,重新刷机即可。
举例来说,就是要有如下三行
<step operation=”flash” partition=”modem” filename=”NON-HLOS.bin” MD5=”xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx” />
<step operation=”erase” partition=”modemst1″ />
<step operation=”erase” partition=”modemst2″ />

步骤 2 » 用SPCUtility读取SPC MSL
这个就简单了,装上SPCUtility,将手机连上wifi即可读出。
由于是官方包,不方便安装软件,推荐打开开发者模式,允许未知源,然后通过adb安装。
adb install SPCUtility.apk

工具在这里
有BP的驱动,DFS,SPCUtility.apk和一个脚本,通过logcat获取SPC MSL。

http://pan.baidu.com/s/1hq7WqZM