Monthly Archives: 2014年1月

Nexus5的中国电信破解

最近因为呆在国内所以必须用国内的电信系统,家里刚好有个电信的随宽带送的号,于是就想拿着用上。

最近的主用手机是nexus5,是google的测试机,当年就用过米爸的cdma网络,以为这次回来用电信的也不会有什么问题,可谁知装上后虽然认出了中国电信的卡,但居然是无网络服务。

于是看了下手上的nexus的band支持,应该是美版的支持规格:

Model LG-D820 (North America)
CDMA band class: 0/1/10
WCDMA bands: 1/2/4/5/6/8/19
LTE bands: 1/2/4/5/17/19/25/26/41

于是看到是包含CDMA band 1和10的,那么理论上支持电信是没有问题的,加之在米爸用过sprit,于是可以确信的一点是,这个机器在硬件上支持电信卡是没有问题的。

那么只要不是硬件上的问题,其他的就应该不是问题。只是需要花多少功夫而已。

于是先推测下无服务的原因,其实能想到的原因只会有一个,由于cdma技术的原因,没有正确读取sim的数据。

有两种可能,一种是nexus5是必须写号才能用,这个可能性基本排除,因为google的销售方式决定不可能这么做。第二种可能性就是sim读取不正确。回忆起当时用sprit的时候,sprit的客服问过是nexus5后给换了一张sim的细节,大致可以想定是nexus5需要特殊的usim,那么悲观的是电信不太可能给你提供这样特殊的sim,但乐观的是乐观的是读取sim应该不会有硬件问题,这样就等于说至少有理论上的可能性。

事实上不能读电信的sim证明机身的设置里有哪里有问题,于是问题变成了怎么看机身的设置了,那么最常见的方法就是Diag mode了,只要能进diag mode那么就应该能至少看机身的设置是怎样的。

所幸查找LG的硬件驱动库的时候发觉了一个有趣的东西,com口。

这个东西对熟悉硬件调试的同学来说应该都明白是什么意思。接下来要做的事情就只有一个,怎么样打开这个com口来进行diag调试。

以往的经验来说,有diag code或者直接的diag mode就应该会很方便,但没有的话就只能自己开了。

不会的人可以去xda啥的找找怎么开。

开了diag口后连上QTRS或者cdma workshop啥的,就读一下设置就可以发现nexus5被设置为NV only模式,所以无法正确读sim的信息。这里需要将其改为Ruim only。

改设置还需要SPC码,能要到那自然最好,不过大部分情况下都还是要手动的,办法是logcat。

用logcat记录着活动,然后*#*#3282#*#*进lte菜单,edit的时候就会要求SPC code,这个时候看logcat的对应码就能读出来。这个时候可以顺便把LTE关掉,则会加速进入EVDO的连接速度。

将机器改为Ruim only模式就可以读sim了。

注意nexus5有一个有趣的一点,他有机身缓存,所以很可能出现修改失败,这是因为diag的操作是异步模式,修改之后的数值,即使再读也很可能是缓存的数据还没有写进机身,所以稳妥的方法是,带sim修改一次,此时将sim弹出,会触发sim的change事件,而自动重启。接着在不带sim的情况下进diag看,假如成功则read的值应该是对的,不对的话在无sim下重写,再将sim插入->再自动重启,这个时候就一般都可以完成写入。

当然这样做了之后并不能保证就能使用了,因为还需要PRL,可以在一台能用这张卡的机子上看机器运行状态的PRL是什么版本,比如我这里的就是212,那么dump一个PRL文件出来,再写进去就可以保证漫游等没有问题了。

另外因为nexus5的设置里面没有apn项,所以需要手工在diag里面输入,电信的默认密码可以问他们,这个他们会告诉你,

用户名一般是 ctwap@mycdma.cn 而用户密码是 vnet.mobi,另外因为nexus5是lte的,想要快速连接的话可以把preferred setting的mode改为CDMA_HDR,Mobile IP设成simple。将来电信4G了则需要改回来。

此时一般就可以无问题的使用电信3g了

另外发觉有趣的是,国际版的制式是

Model LG-D821 (Rest of World)
WCDMA bands: 1/2/4/5/6/8
LTE bands: 1/3/5/7/8/20

也就是说lte band3并不被两种nexus5版本都支持,从内部消息来看,联通的FDD-lte band会是1k8的band3,而电信的band会是2k1的band 1,也就是说国内用户买nexus5只能走两个路线,联通系的需走国际版,而电信和移动都必须走美版,因为TDD的band只有美版支持41(等于含38),不过移动的LTE应该暂时不可能完美支持,因为暂时发现电信的lte mode是CSFB(Circuit-switched fallback),即会导致有通话后即使开了LTE的41band支持也会不能自动返回lte mode,需手动重新设为4g,这会是个很讨厌的事就是了。