|
一块正常使用的电池突然挂掉,脑子一热,也没仔细考虑是否硬件问题,想当然认为是被锁住了,于是就开始给自己挖坑了,来个低成本的解锁电池。具体情况可以查看这个帖子:尝试低成本解锁ThinkPad笔记本电池 - 拆机乐园 数码之家 (mydigit.cn)
最终的而结果是电池保护板被我弄变砖了,到最后也没能验证是否解锁。
虽然结果不理想,但几天折腾下来,还是有一些收获,就把一些过程和经验写到这里和大家分享。
首先声明我是第一次研究这个电池解锁,以前没接触过,所以我的理解和经验总结可能会有不对的地方,还请各位大神多多指教。
从我拆开电池那一刻,知道了电池使用BQ29330和BQ8030A这两个芯片,于是我的资料搜集都是围绕这2个芯片展开。
在百度很多资料后,知道了解锁是要针对8030这个芯片,要和电池通信,需要用到TI的开发软件和ev2300这个设备。然鹅我又不搞开发,只是想解锁,ev2300也很贵,不适合,继续找。
无奈TI官网没任何关于这个芯片的资料,百度得到的也多半都是付费解锁的广告信息。
不得已,Google搜索,这下资料多起来了,首先找到的是一个俄文论坛,里面讨论居多,没有什么具体操作介绍,用到的软件是BE2WORKS,使用的硬件是cp2112模块。又是一顿猛搜,找到个be2works的破解版,心想这下有戏了,立马上淘宝买了个cp2112的小板。
be2works看介绍,是支持很多芯片复位的,8030是其中之一,在2112小板到手后,才发现be2works不能在虚拟机中运行,为什么我要在虚拟机运行?还是怕病毒木马什么的。不得已,只能实体机安装,这下倒是成功了,但是破解文件无法运行,疯狂google后得知,破解文件只能在xp32下运行,我了个去。。。。。
又是一番折腾,装好xp系统,装好be2works,终于运行起来了。
软件部分搞定了,接着就是确定电池的接口定义了。这里我总结了几点:
1、搜索,看能否找到资料,有人给出定义图,当然要和自己电池一样;
2、搜索对应笔记本的主板电路图,里面会有电池接口定义;
上面2点都是在没拆电池时可以尝试的,如果拆开了电池,那最直接的就是看保护板上是否标注了定义,有就方便了,
如果还是没有,那就只能逐个去尝试了。如果接口只有5针,那挨个试也没几次,因为除去电源和地,剩下就试scd,sck和t了,如果接口针数较多,那尝试也讲究方法,这里给大家介绍个我搜索到的方法:
大致意思就是:
1、先找到GND的定义,我的做法是用万用表蜂鸣档测量dc插头处的gnd和电池接口,相通的就是gnd。
2、找到gnd后,使用万用表的二极管测量档,红笔接gnd,黑笔挨个去接其他脚,如果万用表读数在500到800之间,那黑笔所接的阵脚就是sck或者scd,具体是那个还需要最后尝试确定。
确定好定义后,把小板和电池连接上,就3根线,gnd,sck和scd,前面scd和sck无法确认时,就随便接,能通信就对了,不能通信,就把sck和scd对换一下就可以了。
打开be2works,选择cp2112适配器,选择BQ8030,然后就可以读取电池信息和芯片的eeprom数据了。
正常来说,如果是be2works支持的芯片,到这里应该就搞定完事了。但我手中这个电池有硬件问题,导致我走了很多弯路,最终也没法确定是不是在软件复位后还需要手动修改什么数据去解锁。
在网上进一步搜索资料,发现了下面这篇文章:
Karosium: Hacking the bq8030 with SANYO firmware
这是个高手,呵呵,居然通过物理攻击芯片,拿到了芯片的bootrom,再反编译bootrom,进而拿到了芯片关键的定制指令和密码,最后顺利dump出来eeprom数据。
dump下来的数据总共有2048字节,文章中说前1024字节存储的是一些固定参数,在电池出场后不会改变,如果改动其中的数据,需要修改相应的校验和,否则会失败。后1024字节则是存储了一些动态的数据,比如循环次数,剩余容量等等,还有解锁关键的PF状态信息。说是映射好数据地址后,那些无法映射地址的数据可以随意改动不碍事。
不过我认为可能这个只对他研究的那个芯片是对的,我就是相信了这篇文章,对后1024字节数据做了改动,写进芯片后就变砖啦。。。。。。当然,我没有去做数据的地址映射,我瞎改的,就是尝试下。
回到文章中总结的关键信息:
1. Send 0x0214 to 0x71
2. Read Word X from 0x73
3. Send (0x10000 - X) to 0x71
4. Send 0x0517 to 0x70
也就是关键指令和密码,于是我用逻辑仪看了下be2works发送的指令,和文中的做了下比较:
第一步:发送0214到71,
第二步,从73读取读取一个数据04e4
第三步,发送数据fb1c到71
后面就和文中介绍的不一样了,没有后续的70指令了
看来我这个电池的8030和那个大神的8030还是有点不一样的,或者说8030的bootrom有些不一样吧。
再继续,又搜索到了另外个工具,一个开源项目:
GitHub - laszlodaniel/SmartBatteryHack: Arduino compatible hacking tool for smart batteries using SMBus.
上面是项目地址,项目里面有个软件,也可以拿来方便使用。
项目基于Arduino平台,因此使用这个工具,只需要Arduino硬件,不需要cp2112小板子。
贴两个软件的截图:
项目是在我的电池变砖后搜到的,我就没机会去试用这个软件了,不做评价。
就这样吧,我能想到的就这些,总结下:
1、确定电池硬件方面没问题,排除硬件问题,电池不能用,那就大概率是锁了,需要解锁,否则就需要维修后再看是否需要解锁。
2、首选be2works+cp2112的组合,这个操作简单,支持的芯片多,但是否有效没能验证,有条件的坛友自行测试验证。
3、有arduino的则优选这个开源项目,无需再添置额外硬件,只是需要手动操作,还有就是需要知道指令和密码,对付常规有资料的芯片有效,无资料的芯片就不好办了。
4、自己单片机编程通信,自己写上位机,这个和开源项目类似,也只能搞有资料的芯片。
在电池没硬件故障的前提下,解锁电池,主要是修改循环次数,剩余容量,还有就是清除错误标志位。就可以了。
换了电芯后,如果要用的好,就还需要做矫正,这个不在这里讨论。原则上来说,如果换的电芯和原来的不一样,那固件中的一些参数就会不适合,导致电池并不在理想状态,这个就需要做更多的工作来确定更新相关参数,没涉及过,不会,不讨论。这里只单纯的涉及到解锁。
坛友相关:宏碁AS10D61笔记本电池 BQ20Z955主控再次来个电池成功解锁
我把当中的软件都放上来,方便大家下载:
1、BE2Works_v4.52_Bohol_fu11-pw_radiokot.rar 解压密码就是radiokot,破解只能运行在WinXP sp3 32位系统下
2、SmartBatteryHack-master.zip 开源项目源码
3、SBW_Demo.zip SBWorkshop 3.71 demo版本,没找到正式版或者破解版,因为这个需要用到并口,我笔记本没有,所以这个软件我没使用过。
32楼坛友更新Q8030A+BQ29330固件下载
如果你有好的建议和想法,告诉我,或者有不需要的电池保护板,也可以给我折腾。折腾万岁!
祝大家玩的开心。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
打赏
-
查看全部打赏
|