Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1630366
  • 博文数量: 311
  • 博客积分: 7778
  • 博客等级: 少将
  • 技术积分: 4186
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-09 19:59
个人简介

蓝点工坊(http://www.bluedrum.cn) 创始人,App和嵌入式产品开发。同时也做相应培训和外包工作。 详细介绍 http://pan.baidu.com/s/1y2g88

文章存档

2012年(3)

2011年(115)

2010年(170)

2009年(23)

分类: 嵌入式

2011-08-26 01:45:35

 Andrew Huang 转载请注明作者及网址

  官方的RUU对于刷机要求严格。必须使用PC通过USB在线刷机,检查也比较严格。如果想刷CID不一致的ROM,或者降版刷机。用这个方法不行。
  
   因此如果你的机器的Hboot 是S-ON版本,而又想自由刷机,有一种办法是用HBOOT从TF卡引导程序,如果TF卡的引导程序如果采用不检测版本和CID版本,这样就可以自由刷机了。这种可引卡的TF卡的引导程序名字称为 GoldCard.img,因此称为金卡。
 
  但是这种方法制作金卡,步骤有点繁锁。远不如取得ROOT权限后用Recovery的SD升级方式简单。当然有可以不是所有版本都能取得ROOT权限的,所以这个方法还是有一定的实用价值的。
   
一.金卡刷机原理.     
     从制作和刷机的流程来看,如果进入HBOOT中,如果长时间没有做操作,HBOOT将自动查找SD卡上 PC49DIAG.zip进行升级。在检测SD卡时,会检查SD卡引导区是否有程序,如有再检测升级文件进行升级。
 
   用金卡升级流程有如下几步:
    a)查找TF(Macro SD)卡的CID号,然后向专门的goldimg制作网址提交。这一些网址会把TF上的拥有SuperCID的权限的SD卡引导程序文件发邮件给你
    b)把引导文件写入TF卡的引导区里。
    c)从RUU文件抽取映像文件。并将映像文件拷入TF卡产中.
    d)将TF卡插入手机,并引导进入HBOOT,它会自动查找TF并升级。
    

二.金卡(Goldcard) 制作

   如果你的S-OFF版本,可以跳过金卡引导。直接刷新.但是注意如果升级包是HBOOT是S-ON版本,刷完后又变回成了S-ON了,这个要注意一下

   2.0 在windows将TF卡格式化成FAT32 格式。

   2.1 申请Goldcard.img
      首先,用adb 去查看TF卡的CID号,CID是Customer ID entity 的简称,用来唯一标识TF卡.一个TF卡在LINUX根据Mount顺序不同,可能设备结点不一样
      在手机,打开USB调试开关。用USB连接到PC上。
      用adb shell 命令检查出TF卡的CID。一般TF卡是挂载在mmc1设备上。

          adb shell  cat /sys/class/mmc_host/mmc1/mmc1:*/cid
   
  1. C:\Documents and Settings\hxy>adb shell cat /sys/class/mmc_host/mmc1/mmc1:*/cid
  2. 02544d534130324707157817cc00b7ea
 后一串数字就是CID号
   
   然后将CID转码(为什么这样做,可能是GoldImage的要求)
    
    
   比如我的转码后的ID是 00b700cc1778150747323041534d5402
   然后提示转到   申请金卡的image

  
  但是这个方法最大问题是,revskills.de 网站不稳定,申请几次均未成功,用了我的三个bluedrum帐号,
只有bluedrum@163.com申请成功了.

 2.2 Goldcard.img 写入TF卡引导区
    
   因为这个goldcard.img 不是简单向TF卡的分区拷贝文件,而且要写入TF的引导扇区里.因此需要特殊软件,一般人推荐HxD,我个人比较喜欢用WinHex.
  2.1.1 WinHex操作
     选择"工具"-->打开磁盘,选择TF卡所在物理磁盘,注意不要选错硬盘,这样会让其挂掉.
   
      
用WinHex 打开GoldCard.img ,全选其内容
     
按16进制复制


选择移动磁盘的0x00,进行写入操作
  
 然后选择"保存磁盘"

  HxD也是类似操作,这里有一个详细图文操作

  这样改造后,这张TF卡就是人称金卡了.

二.从RUU包中解压出image文件.
  
 如果CID之类不匹配,或者HBOOT的状态为S-ON,用在线方法安装比较麻烦,
 因此很多网友用的另一种方法,从RUU解出各个image文件,手工用recovery模式来安装.

官方的RUU包实际上打包成EXE的压缩文件. 因此可以从中读出各个image文件.
 
  解压出来参考这页
  

  2.1 执行在线升级1-4步
   手机用数据线连接电脑,并选择“Sync”同步方式
   PC端运行RUU包软件
    

  2.2 找到升级程序工作目录

  1.如果是WIN7,直接在任务管理器找到ARUWizard.exe ,用右键菜单打开文件所在目录.
  2.如果WinXP,可以运行  Process Monitor,可以从这里下载 

  
   打开程序的当前目录,我的是在 C:\Documents and Settings\hp\Local Settings\Temp\{09360C39-74CD-4E0B-A347-8FB24683ED85}\{50F2F878-636A-496F-A7CB-544C067E0C4B} 之下.
  这个目录下的rom.zip 就是所需要各个ROM文件.
  
   

一个rom有如下几个文件

  • android-info.txt              针对机型和版本信息;
  • boot.img                         bootimg 分区内容(Kernel 根文件系统)
  • hboot_7225_0.80.0003_100528.nb0  bootloader升级文件,后面版本号
  • radio.img                        基带芯片驱动 ,radio分区.                
  • rcdata.img                       配置文件
  • recovery.img                     recovery分区文件
  • splash1.nb0                      启动画面文件
  • system.img                       system分区升级文件
  • userdata.img,                    userdata 分区

我的ROM的android-info.txt文件内容如下
  1. modelid: PC4910000
  2. cidnum: HTC__621
  3. mainver: 1.18.709.2
  4. hbootpreupdate:2
  5. DelCache: 1
rcdata.img内容
 
  1. QCT_UMTS_RADIO_VER=1
  2. DisH=1
  3. MSCMode=12
  4. HSDPACat=8
  5. QCT_UMTS_RADIO_END=1
取得ROM文件后,可以选择RUU程序取消退出升级

  将ROM.zip改名为 PC49IMG.zip(注意文件名的大小写),因为HBOOT引导是查找这个文件名,把这个文件拷贝到TF卡的第一个FAT32分区的根目录里.

  不同机型这个文件名不同,所以你刷机前看一下HBOOT启动时提示文件名.

四.用金卡刷机

  关机后,把金卡插入手机,按住音量下键后,再按POWER键进入HBOOT,HTC G8 直接等着就行,如果HBOOT发现了 PC49IMG.zip ,它首先会解压,此时会在手机屏幕右上方出现一个进度条.等待其解压完毕
  
解压完毕后,HBOOT会自动出现一个菜单,最下面的英文是问"是否更新系统",按音量上键表示Yes,按音量下键表示NO
  

按Yes,HBOOT开始逐项更新.

更新完毕后,提示按电源键重启。这样开始重新设置手机


至此金卡刷机结束。

刷卡问题:   我试着用这种方法降版刷机,在解压后提示“main version is older”,有可以新版的HBOOT已经防止了这种升级方式?有的说要ROOT才行那样不如直接用root刷机就行了

五.第三方开源工具

   有人开发开源的升级工具 HTCFlasher 

  这需要留到后面测试一下

   这是一个LINUX的下刷机程序
    
阅读(3740) | 评论(3) | 转发(1) |
给主人留下些什么吧!~~

bluedrum2011-09-26 09:32:06

WandeRain: 你好,请问如何读取rcdata.img里面的内容,谢谢。.....
如果是rcdata.img 是一个文件,直接用二进制工具读取就行,这个格式有一个结构,看我其它文章

WandeRain2011-09-25 03:01:35

你好,请问如何读取rcdata.img里面的内容,谢谢。