笔记本电池换芯解锁全过程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【原创】我的X23电池换芯、解锁过程(M37516+61040+80AF)
一、前言
本人的X23一直用的很好,可借给朋友用几天后,回来使用发现电池电量会从95%一下掉到5%,只能坚持10分钟,冲电时会从27%一下升到100%,只能当UPS用了。由于平时基本不用电池,可能是电池长期未用导致某组电芯性能变坏所致。
笔记本的最大优势在于移动性,没电池太不方便了。在买新电池和换芯之间,我选择了自己动手换芯,一来废物利用,二来可以锻炼自己的动手能力。经过选择,从淘宝买了6节松下18650D的2350mAh电芯,拿到手后测试一致性较好。小心翼翼地拆开电池[attach]335268[/attach],[attach]335269[/attach]
晕,中奖了,是M37516+61040+80AF的易锁芯片组合。在论坛里查了半天,有的XD说保电换电芯不会锁。抱着侥幸心理,按论坛里的方法进行了保电换芯,保电换法参见论坛里相关文章。结果在第三次充电到87%时电池充电灯停止闪烁,感觉有些不妙,拔下电源,立刻断电。看来保电换芯失败。只能通过刷芯片解锁了。
二、数据分析
用别人的源码固然可以解决问题,但有些参数毕竟不是自己电池的,在充电曲线等方面可能存在问题。为了能够用自己的电池数据,我从论坛里下载了相同芯片组合的坏电池数据进行了分析。
1.工具
SBworkshop Demo3.3 ,Ultraedit32
2.标识位
通过SBworkshop的EEPROM Read/write的功能,结合自制的简易并口编程器,读取坏源码[attach]339690[/attach]
用Ultraedit32修改其中的数据,分段删除,再用SBworkshop读改过的源码,首先分析出的是关键信息,然后得出其它的数据位。具体见图[attach]340060[/attach]
标识位说明:
1).循环次数(0x2c,0x2d):当前充电次数。
2).满充容量(0x2e,0x2f):
3).关键标识位(0x32,0x33,0x34,0x35):这个标识位我不知叫什么,代表电池采用芯片信息,注意这个标识位是不能修改的。
4).生产日期(0x1bc,0x1bd):
5).ManufatureName:ASCII字符,这里是松下,有的是SANYO。6).DeviceName(0x1ca-0x1d5):
7).电芯类型(0x1da-0x1df):LION,不要修改
8).报警锁定(0x1fa,0x1fb):解锁的关键位置,找遍了Smart Battery DataSpecification Revision 1.1也不知是哪个ALARM数据。但改为0000即可解锁,这个要特别感谢yyyzoe 给我的好的源码,不然找不出来这个位置。
3.关于数据算法
找出相应标志位后,开始只分析出一些简单对应关系,通过写成二进制发现,原来逆
位就可以了,所有的数据均是如此。举例说明:
CycleCount位0x2c=12,0x2d=34
二进制为 0001001000110100
逆位后为 1000010011000010
按高低位最终数据为 0100100000101100 即:482C=18476次,当然这个只是举例说明。
日期有些特殊,格式是年(15-9位,基数1980)、月(8-5位)、日(4-0位),例如:2007年1月12日
年:2007-1980=27=1B=0011011(注意是7位)
月:1=0001
日:12=0C=01100(注意是5位)这样组合在一起为0011011000101100,逆位后为0110110000110100,即6C34
ASCII字符也是同样要逆位后转换。
4.校验值
称为校验值不知对不对,暂时先这样叫了。整个EEPEOM数据为四个区,其中
0x00000200-0x000002FF 为0x00000000-0x000000FF对应FF补、0x00000300-
0x000003FF为0x00000100-0x000001FF对应FF补,例如0x00000000为29,那么
0x00000200就为FF-29=D6
三、解锁
有了以上的分析,解锁就不难了,焊下80AF,接上自制的编程器[attach]339684[/attach]
编程器原理图论坛里有,我就不贴了。先用SBworkshop读EEPROM数据,存为80_bad.bin 后用Ultraedit32打开,要修改的部分(注意是6个数据):
充电次数为0(0x2c=00,0x2d=00,对应0x22c=FF,0x22d=FF)
满充容量改为4400mAH(0x2e=88,0x2f=0C,对应0x22e=77,0x22f=F3)
解除报警(0x1fa=00,0x1fb=00,对应0x3fa=FF,0x3fb=FF)
本来想要容量想改为4700 mAH,日期也想改为今天的日期,但改后又锁住了,不知什么原因。(现经实验,是可以修改的,估计是当时焊接时没一次焊好的原因)
改好后另存为80_ok.bin,用SBworkshop打开80_ok.bin文件并写入
EEPROM[attach]339691[/attach]
为确保写入,可以再读EEPROM数据,存为repair.bin,在命令行窗口中运行fc /b 80_ok.bin repair.bin>comp.txt,打开comp.txt确定内容无差异,解锁完成。焊上80AF,接电芯时要按照电位从低到高的顺序,而且要一次焊上,尤其是正极,否则会再次锁上,这点要特别注意。