首页 > 代码库 > Nubia Z5S(高通MSM8974) QHSUSB_BULK模式救砖方法(以win7下恢复recovery分区为例)

Nubia Z5S(高通MSM8974) QHSUSB_BULK模式救砖方法(以win7下恢复recovery分区为例)


Nubia Z5S在某种异常或者按组合按键的情况下会进入QHSUSB_BULK模式, 此种模式的现象是, 如果在windows(比如win7)下连上数据线, 则会在电脑出现n多分区挂载,甚至会提示要格式化某些分区(这里要强调的是千万不要格式化任何分区,否则可能会变成真砖只有返厂了)


关于这个模式可以参考我之前发的一篇文章: http://blog.csdn.net/syhost/article/details/20435957


上面文章中也提到, QHSUSB_BULK模式实际是在sbl分区中实现的, 不过纯粹为了救砖的话也没必要知道这些细节!


当Z5S进到这个模式并且不能正常启动其他模式或者系统后, 那就只有考虑在这个模式下来救砖了, 出现这种模式的可能情况是:

1   recovery分区和系统(或者boot)分区同时损坏

2   boot分区可能有异常,

3  在某种条件下按了按键组合


转载请务必保留本篇链接:

http://blog.csdn.net/syhost/article/details/36972531



这种模式因为挂载了手机的所有分区, 而从上面的分析产生这种情况的可能无非是某些启动分区错误, 那直观的想法就是恢复这些错误的分区。

可以先参考我之前的一篇文章, 先熟悉下Z5S的具体分区情况:http://blog.csdn.net/syhost/article/details/21818563

要注意的是上面文章是以16G版本为例分析, 如果是32G的可能稍微有些差别,要特别注意下!


下面讲讲怎么在win7下恢复Z5S特定的分区, 以恢复recovery分区为例(此方法已经由@乱世殇歌 验证成功

要使用到的工具是windows下的dd命令, 下载地址:

http://dl.vmall.com/c06d47p1fn

或者

https://mega.co.nz/#!B1lzlDJa!yfw8NrtWQCznodyxnaKbRIs6dboTyLHU1NNtky0waQw


步骤如下:

1、 首先是确保手机已经稳定运行到了QHSUSB_BULK模式,并且连上数据线, 在电脑系统里可以看到n多分区,要特别注意不要按照提示格式化任何分区,切记, 不然可能会真砖了!!

2、 将上面的dd工具解压,然后进到该文件夹下,如果是win7的系统,支持在当前目录打开终端命令行, 操作如下,在dd文件夹下按住shift键,然后点鼠标右键,选在当前目录打开终端命令,即可!

3、 运行  dd --list命令,查看电脑所有分区信息(当然也包括挂载的手机的分区信息)(@乱世殇歌提供):

D:\222>dd --list
rawwrite dd for windows version 0.5.
Written by John Newbigin <jn@it.swin.edu.au>
This program is covered by the GPL.  See copying.txt for details
Win32 Available Volume Information
\\.\Volume{14f93446-ea7b-11e3-8baf-806e6f6e6963}  link to \\?\Device\HarddiskVolume1
  fixed media
  Mounted on \\.\c:

\\.\Volume{27fc973e-92de-706b-3d39-ff3b00c9862e}  link to \\?\Device\HarddiskVolume146
  fixed media
  Mounted on \\.\g:

\\.\Volume{4faebde7-671c-5533-0c1e-c5cd93452cb3}  link to \\?\Device\HarddiskVolume154
  fixed media
  Mounted on \\.\h:

\\.\Volume{59fe28dd-13a6-f2dd-1105-5b6a173a6e79}  link to \\?\Device\HarddiskVolume159
  fixed media
  Mounted on \\.\i:

\\.\Volume{94ed69a1-a69d-b0c4-7d06-8f5039f55fc8}  link to \\?\Device\HarddiskVolume160
  fixed media
  Mounted on \\.\j:

\\.\Volume{87f74cb9-9950-8f5b-48a5-3e4aadedcb0b}  link to \\?\Device\HarddiskVolume161
  fixed media
  Mounted on \\.\k:

\\.\Volume{a92c0db2-bc8f-cb01-bfd7-ca99575da6d6}  link to \\?\Device\HarddiskVolume162
  fixed media
  Mounted on \\.\l:

\\.\Volume{41f4a435-9559-66a2-ecbc-925db9220510}  link to \\?\Device\HarddiskVolume163
  fixed media
  Mounted on \\.\m:

\\.\Volume{ca630bbc-e3bb-5e2d-d9ff-253b5188313b}  link to \\?\Device\HarddiskVolume168
  fixed media
  Mounted on \\.\n:

\\.\Volume{14f93447-ea7b-11e3-8baf-806e6f6e6963}  link to \\?\Device\HarddiskVolume3
  fixed media
  Mounted on \\.\d:

\\.\Volume{14f93448-ea7b-11e3-8baf-806e6f6e6963}  link to \\?\Device\HarddiskVolume4
  fixed media
  Mounted on \\.\e:

\\.\Volume{14f93449-ea7b-11e3-8baf-806e6f6e6963}  link to \\?\Device\HarddiskVolume5
  fixed media
  Mounted on \\.\f:


NT Block Device Objects
\\?\Device\Harddisk0\Partition0
  link to \\?\Device\Harddisk0\DR0
  Fixed hard disk media. Block size = 512
  size is 320072933376 bytes
\\?\Device\Harddisk0\Partition1
  link to \\?\Device\HarddiskVolume1
\\?\Device\Harddisk0\Partition2
  link to \\?\Device\HarddiskVolume2
  Fixed hard disk media. Block size = 512
  size is 21474836480 bytes
\\?\Device\Harddisk0\Partition3
  link to \\?\Device\HarddiskVolume3
\\?\Device\Harddisk0\Partition4
  link to \\?\Device\HarddiskVolume4
  Fixed hard disk media. Block size = 512
  size is 85911928832 bytes
\\?\Device\Harddisk0\Partition5
  link to \\?\Device\HarddiskVolume5
  Fixed hard disk media. Block size = 512
  size is 116023722496 bytes
\\?\Device\Harddisk1\Partition0
  link to \\?\Device\Harddisk1\DR8
  Fixed hard disk media. Block size = 512
  size is 15758000128 bytes
\\?\Device\Harddisk1\Partition1
  link to \\?\Device\HarddiskVolume146
  Fixed hard disk media. Block size = 512
  size is 67108864 bytes
\\?\Device\Harddisk1\Partition10
  link to \\?\Device\HarddiskVolume155
  Fixed hard disk media. Block size = 512
  size is 1572864 bytes
\\?\Device\Harddisk1\Partition11
  link to \\?\Device\HarddiskVolume156
  Fixed hard disk media. Block size = 512
  size is 1572864 bytes
\\?\Device\Harddisk1\Partition12
  link to \\?\Device\HarddiskVolume157
  Fixed hard disk media. Block size = 512
  size is 1048576 bytes
\\?\Device\Harddisk1\Partition13
  link to \\?\Device\HarddiskVolume158
  Fixed hard disk media. Block size = 512
  size is 10485760 bytes
\\?\Device\Harddisk1\Partition14
  link to \\?\Device\HarddiskVolume159
  Fixed hard disk media. Block size = 512
  size is 1288488960 bytes
\\?\Device\Harddisk1\Partition15
  link to \\?\Device\HarddiskVolume160
  Fixed hard disk media. Block size = 512
  size is 2684354560 bytes
\\?\Device\Harddisk1\Partition16
  link to \\?\Device\HarddiskVolume161
  Fixed hard disk media. Block size = 512
  size is 33554432 bytes
\\?\Device\Harddisk1\Partition17
  link to \\?\Device\HarddiskVolume162
  Fixed hard disk media. Block size = 512
  size is 524288000 bytes
\\?\Device\Harddisk1\Partition18
  link to \\?\Device\HarddiskVolume163
  Fixed hard disk media. Block size = 512
  size is 157286400 bytes
\\?\Device\Harddisk1\Partition19
  link to \\?\Device\HarddiskVolume164
  Fixed hard disk media. Block size = 512
  size is 10485760 bytes
\\?\Device\Harddisk1\Partition2
  link to \\?\Device\HarddiskVolume147
  Fixed hard disk media. Block size = 512
  size is 524288 bytes
\\?\Device\Harddisk1\Partition20
  link to \\?\Device\HarddiskVolume165
  Fixed hard disk media. Block size = 512
  size is 1572864 bytes
\\?\Device\Harddisk1\Partition21
  link to \\?\Device\HarddiskVolume166
  Fixed hard disk media. Block size = 512
  size is 1024 bytes
\\?\Device\Harddisk1\Partition22
  link to \\?\Device\HarddiskVolume167
  Fixed hard disk media. Block size = 512
  size is 8192 bytes
\\?\Device\Harddisk1\Partition23
  link to \\?\Device\HarddiskVolume168
  Fixed hard disk media. Block size = 512
  size is 10523482624 bytes
\\?\Device\Harddisk1\Partition3
  link to \\?\Device\HarddiskVolume148
  Fixed hard disk media. Block size = 512
  size is 32768 bytes
\\?\Device\Harddisk1\Partition4
  link to \\?\Device\HarddiskVolume149
  Fixed hard disk media. Block size = 512
  size is 32768 bytes
\\?\Device\Harddisk1\Partition5
  link to \\?\Device\HarddiskVolume150
  Fixed hard disk media. Block size = 512
  size is 524288 bytes
\\?\Device\Harddisk1\Partition6
  link to \\?\Device\HarddiskVolume151
  Fixed hard disk media. Block size = 512
  size is 512000 bytes
\\?\Device\Harddisk1\Partition7
  link to \\?\Device\HarddiskVolume152
  Fixed hard disk media. Block size = 512
  size is 10485760 bytes
\\?\Device\Harddisk1\Partition8
  link to \\?\Device\HarddiskVolume153
  Fixed hard disk media. Block size = 512
  size is 512000 bytes
\\?\Device\Harddisk1\Partition9
  link to \\?\Device\HarddiskVolume154
  Fixed hard disk media. Block size = 512
  size is 1048576 bytes

Virtual input devices
 /dev/zero   (null data)
 /dev/random (pseudo-random data)
 -           (standard input)

Virtual output devices
 -           (standard output)

然后从这些分区信息中找到手机的分区信息, 参考我上面关于z5s分区信息的文章,对比就可以很容易的找出你想要恢复的分区的分区号(指的是在dd命令下识别的分区号)以及手机磁盘的磁盘号。


以recovery分区为例简单介绍下判断分区的方法:

a、 可以通过分区号大小判断, 比如上面文章中可以看到recovery分区对应的分区号是19, 而上面的dd信息里也可以看到 Partition19这个分区号,而一般电脑分区不会这么多,所以可以判断这里就是手机的分区,

b、 接上面的方法,判断是不是recovery分区,通过分区大小,比如上面的Partition19 在dd命令下显示大小是 size 10485760 bytes(即10485760字节),而从上面文章里看到的recovery分区的大小(32G的可能会有不同)为10240x1024=10485100 跟上面dd命令获取出来的大小基本一致(至于为什么不是完全一样先不去深究了),这基本就可以判断dd命令里获取到的Partition19 就是手机的recovery分区了(特别注意一般手机的boot分区跟recovery分区大小是相同的,注意区分,当然把recovery写入boot分区也没啥问题)!

c、 从Partition19前面的字符段Harddisk1判断, 自己电脑如果只有一个硬盘,那本身的硬盘应该就是Harddisk0了,那么这里Harddisk1就应该是手机分区对应的磁盘号了!


4、找到需要的分区号之后,就可以进行dd恢复操作了,具体方法: 

      1)将需要恢复的分区的img镜像文件放到dd命令所在的文件夹下,如果是recovery或者boot分区则只需要将刷机包里的recovery.img或者boot.img放进来即可! 

      2) 在当前目录下终端命令行中执行 dd if=recovery.img of=\\?\Device\Harddisk1\Partition19  即可,可以看到这里recovery.img 即是你放的分区镜像的文件名,而  \\?\Device\Harddisk1\Partition19  就是上面dd --list命令获取到的recovery分区的分区号信息,完全照搬过来的! 执行完该命令后,正确恢复recovery分区的截图(截图由@乱世殇歌提供)如下:


      

至此,已经完全恢复了recovery分区, 只要你放的recovery.img是正确的(这里所说的正确对于z5s而言是一定要跟你砖之前的基带版本搭配,因为有些recovery只能在对应的基带版本下使用)。

看似复杂,其实只两点:一是dd命令下正确判断你所要恢复分区的分区号,二是命令要输入正确并且分区镜像恢复文件一定要正确!



另外要特别强调, 如果用此方法恢复其他引导分区(除了boot和recovery分区之外的),包括: aboot、sbl1、tz、rpm、sdi  这些分区如果想恢复其中任何一个的话,就必须全部一起恢复,并且要版本对应,不然就真砖了!而这些分区镜像文件都可以在官方完整rom包里找到,其中aboot对应的是emmc_appsboot.mbn文件,其他分区看名字对应文件名即可!