手机型号 Galaxy S3 SKT 3G ( SHW-M440S )
刷了各种第三方的rom,各种无故无限重启,可是官方固件并不会出现问题,刷了dokdo也有问题。
无故重启具体表现为:开机以后不定期重启,或者根本开不开,就自动重启了。
直到刷了某个第三方cm,发现稳定了不重启了,但是系统经常会无故卡顿,周期震动,有幸进入设置发现基带版本不显示,IMEI丢失。
还原了nv_data,刷了radio依然如此。
直到刷了arter97的kernel就能启动系统了,原因是这样的:
先附地址:http://www.arter97.com/s3_kernel.htm
其它的kernel因为检测读不到nv_data,然后就会自动重启,而这个kernel即使读不到也不重启。
进recovery看系统日志/data/log,发现有好多dumpstate_ril_RESET_BY_CP_SILENTRESET_20150708002414.log 这种类似的,提示RESET_BY_CP_SILENTRESET
:
打开看一下吧(跳过了一部分):
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): *** Restart RIL Daemon ***
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): RIL_Init : Rild resetReason : 2
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): Modem_Boot:
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): check_cracking
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): open(nv data) fail. Permission denied.
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): load_md5_state: MD5 state 2
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): RILD reset reason : RESET_BY_CP_SILENTRESET
07-08 00:24:14.300 E/use-Rlog/RLOG-RIL( 6339): get_rildreset_log(): logcat -v time -b radio -d -f /data/log/dumpstate_ril_RESET_BY_CP_SILENTRESET_20150708002414.log
07-08 00:24:14.305 E/use-Rlog/RLOG-RIL( 6339): backup_using_secondary_backup: open secondary backup failed. Permission denied
07-08 00:24:14.330 D/use-Rlog/RLOG-RIL( 6339): wait Modem boot ready
发现各种提示权限不足,参考了http://forum.xda-developers.com/showthread.php?t=761045并得以解决。
注意⚠️ 一定要备份好efs分区,每个手机一个串号,要是哪个rom不小心把这个给改了就黑户了。
解决方案如下
进recovery,然后挂载efs分区,方法:
/dev/block/platform/dw_mmc/by-name # ls -la
会看到类似如下信息
lrwxrwxrwx root root 2015-07-07 06:29 EFS -> /dev/block/mmcblk0p3
然后挂载efs分区:
mkdir /efs
mount /dev/block/mmcblk0p3 /efs
接下来给权限:
chmod 755 /efs/nv_data.bin
chown radio:radio /efs/nv_data.bin
重启,找到基带了。
科普一下Android手机结构
boot.img 就是我们常说的kernel
system.img 是Android系统,系统通过调用kernel来完成手机硬件功能。
radio 就是基带,只完成通信功能,基带由kernel调用,而系统通过与kernel交互完成打电话功能。
recovery 相当于手机的WinPE,一般第三方的有twrp和cwm还有各种基于它们的衍生版,型号相同但是区域不同的手机一般可以通刷,比如国际版和韩版。
bootloader 相当于bios,它提供了整个手机的初始化过程,对于一般的手机,当进入bootloader模式时候可以使用Android带的fastboot工具,来进行刷各种分区的操作。
手机存储和电脑硬盘相近,同样存在分区表和分区。以S3为例,它里面有两块硬盘,一块是系统盘,一块是数据盘(内置存储卡)。
他们在手机系统中分别被标注为/dev/block/mmcblk0
和mmcblk1
使用busybox fdisk工具发现,系统盘mmcblk0是GPT分区表,内置存储卡mmcblk1是mbr分区表。
在recovery里面看到的/system /perload /efs这些文件夹都是作为挂载点挂载了那些分区。
Android也算一个成熟的系统了,有问题通过分析日志一般都能猜出个二三来。
最后附上资源
Philz-recovery:http://arter97.com/browse/S3/kernel/xda/recovery/
M440S用到的kernel有这些:
Devil Kernel韩国人写的,幸好有google translate: http://ckh469.tistory.com/category/Devil%20Kernel
Arter97的kernel:http://www.arter97.com/s3_kernel.htm
这两个主页上都写了这个kernel所支持的rom
用法举例:比如kernel上面写支持cm12.1,那么下载i9300任意区的cm12.1 rom,注意cm版本官方的是cm11,所以要找unoffical的,这里同样感谢Arter97,附地址:http://arter97.com/browse/S3/ROM/Lollipop/CyanogenMod/ 。
接下来就是进recovery-》清cache-》刷system-》刷kernel-》重启。
S3各种版本(比如e210,m440,intl什么的)常用的内核:Boeffla、xensS3、arter97、devil
可自行google(www.glgoo.com)
三星手机ODIN模式刷机工具:MacOS下可以用Heimdall。
附上两个版本的M440S的radio:
SHA1(M440SKSUGND1_M440SSKTGML2_modem.bin)= 1ec958c936c8ff6fdd08bb4ab94d77d507c10fd8
SHA1(M440SKSUGOB1_M440SSKTGOB1_modem.bin)= 77a3bfef692ddc22d4f7eb48cb5188636e0ecedb
还有offical固件里的小文件:http://pan.baidu.com/s/1eQvXrHK
已经被证实的可刷方案 CM 12 Android 5.1.1
- 三星驱动SAMSUNG_USB_Driver_for_Mobile_Phones.exe改名zip解压到文件夹,设备管理器里先usb,后modem
- 先用Odin刷Recovery:twrp-3.3.1-0-i9300.img.tar 解压后刷img
- 后来我换成了arter97-recovery-4.0-philz_touch_6.59.0.zip感觉没啥区别
- Volume UP + Home + Power 进Recovery后,清cache,system。
- 刷 cm-12-20150403-UNOFFICIAL-temasek-i9300-V9.4.zip
- 再刷 cm-12.1-20151019-UNOFFICIAL-temasek-i9300-V18.0.zip
- 最后刷 arter97-kernel-5.0.zip
- 重启进系统,再重启进Recovery
- mount /dev/block/platform/dw_mmc/by-name/EFS /efs
- chown radio:system /efs/nv_data.bin /efs/nv_data.bin.md5
- wifi兼容性不太好,有的能连有的连不上,因为它只支持channel 1-11 并且WPA认证,不支持WPA2哇!
三星offical固件命名规则
NA1 NA2 NB1 NB2 NC1 ND1 ND2
N 指的是2014年
A是1月 K是11月
其中的,ABCD表示一月二月三月四月,以此类推,1、2、3表示当月第几次更新。
TZ网上的解释是TrustZone kernel,具体干什么并不知道。。