找回密码
 注册
快捷导航
查看: 78|回复: 7

[电池] 【原创】日志 - 全网首篇 hack LGC 固件 瑞萨M37512-FC035电池芯片的资料

[复制链接] |自动提醒
阅读字号:

214

回帖

4

积分

2170

资产值

高级会员 Rank: 2Rank: 2

注册时间
2021-11-10
发表于 2025-10-26 15:59:35| 字数 1,921| - 中国–北京–北京–海淀区 联通 | 显示全部楼层 |阅读模式
本帖最后由 2690173248 于 2025-10-26 16:04 编辑

这篇文章主要为折腾电池板,换芯本身我会在另一个帖子里面细讲
我手上有个X200 六芯电池的空壳,LG的,42T4648,之前为了偷摸带几个三星18650电芯上飞机用过的

拆开发现,芯片为三菱/瑞萨 M37512 FC035。FC035为LG固件版,FC200是松下固件
我本来板子没锁的,所以我直接上了六个特价21年库存LG MH1。上了发现,LG固件太笨,满电容量不会自己改!
只好再次拆开电池,拆下电池板来研究,结果拆下电池板的时候,正极焊锡藕断丝连没有完全断开,中间有个镍条焊锡扑了,当场烧毁芯片!

我发现,M37512的内容现在本来就很少,而且市场上没有几个一键重置软件能搞定(BE2Works亲测不行)!而LG固件和松下固件里面内容差的非常大!直接从一个电池回收的铺子,咬牙60买了7个X200的电池板做实验,三个为同款M37512 FC035!

其实,LG版本FC035的完全没有任何资源!!!所以,我下面这些硬件操作,只能从普通M37512标准下手(karosium.com/2016/08/adding-m37512-with-panasonicibm-firmware.html),软件方面编程的事,只能参考51F51的帖子和油管视频(https://www.ibmnb.com/thread-2069453-1-1.html 这个里面有)!

跟R2J240/51F51一样,需要进入Boot Mode(相当于下载模式/刷机模式)才能开始编程。这个步骤什么M37512都是一样的。BE2Works 4.52破解有自动进入Boot Mode的功能,但是我亲自测试完全无效!
所以,只好手动拉飞线,pin9 - 12 - 43(我这里42-43-44是连起来的,都是芯片Vcc供电)
直接从针脚上面拉飞线有点危险,搞不好会跟临近的针脚短路。所以,我用万用表和放大镜,手动找到了我这款板子那三个针脚去了哪里(你的板子肯定跟我的不一样)


在这些地方连飞线就好了
然后,因为需要翻来覆去的接电断电,为了省事,我在某宝上面买了一包470欧的水泥电阻,这样子只用接电池正负极就行了,弄好了再接真正的电芯
另外,如果保险烧了的话,需要现在修复好。如果保险没有烧的话,不用担心,在Boot Mode下面无法烧保险


接上了后,用Cypress FX2LP开发板,接好GND、SCL、SDA针脚,准备好Linux上面的smbusb(Karosium原生版,不是那个迁移到CP2112版,那个有重大bug,会莫名其妙删你固件!)
因为M37512进入了Boot Mode以后十分的脆弱,随便一个命令弄错了就会导致莫名其妙的擦除内容,所以从此开始,软件上面每一步都需要额外的小心!!!
正因为如此,我们使用Karosium建议使用的测试,扫描前10个register的读写特性,不能多了,多了会碰到擦写用的register导致数据丢失!

先使用这个库里面的 sudo smbusb_scan -w 0x16 -e 10检查返回出来的结果


看这些00-10的规律,一般由以下四个场景:

Case 1:
Case 2:
Case 3:
Case 4:无输出(打印 None)

详解:
场景1为正常成功进入Boot Mode了,可以进行下面编译环节了

场景2为一般松下电池进入Boot Mode,这个是个骗人的输出,其实是等着要密码!松下一般密码为CDAB 3412,输入如下:

sudo smbusb_comm -a 16 -c FF -w CDAB -b
sudo smbusb_comm -a 16 -c CF -w 3412 -b
输入完了再次扫描就应该是场景1了



场景3为正常运行状态的结果,这个意思是你芯片根本没有进入Boot Mode。

场景4为芯片完全没有响应。检查连接,检查输入电压是否严重亏电,而且可以尝试短暂飞线电芯正极和电池插座正极

开始编程之前需要备份。这里M37512有六个数据分区:Block A, B, 0, 1, 2, 3。其中Block A和B为动态数据(写入寿命1000次),A一般都是空白。Block 1一般为静态数据,如电池FRU、序列号、设计容量、设计电压、充电电压等;其余一般为固件本身。注意Block 0、1、2、3写入寿命只有100次!!
按照以下命令逐个分区备份:
sudo smbusb_m37512flasher -d bb.bin -p bb

然后把bb变成ba、bb、b0、b1、b2、b3,重复运行
成功后检查一下备份,应该里面除了ba以外都有地方有数据。这备份就成功了。


以上内容亲自测试松下M37512 FC200和LG M37512 FC035都可适用。下面帖子讲编程部分,这个就是专门为LG M37512 FC035的了!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 1资产值 +20 收起 理由
jackmacc + 20 优质内容 ,辛苦了.

查看全部评分

1662

回帖

39

积分

6278

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2013-1-12
发表于 2025-10-26 16:55:37| 字数 108| - 中国–陕西–西安 电信 | 显示全部楼层
不错,终于有看到用smbusb电池的帖子了,T60p的电池也是m37512。
我更新了smbusb的几个模块,帖子在这里:
https://zhuanlan.zhihu.com/p/1962220392698577281
X230+X230i+T480s+T60p+U937
B乎B站:xjtuecho
回复 支持 反对

使用道具 举报

17

回帖

0

积分

84

资产值

入门会员 Rank: 1

注册时间
2010-8-7
发表于 2025-10-26 17:14:05| 字数 86| - 美国 来自手机版 | 显示全部楼层
本帖最后由 anjue 于 2025-10-26 17:22 编辑

不错!51f51进入boot模式,不用飞线,只需按照那个人的教程用电阻拉低tp1,触发tp14重置。
没看清飞线后的图

点评

板子不一样,  发表于 2025-10-26 19:25
回复 支持 反对

使用道具 举报

17

回帖

0

积分

84

资产值

入门会员 Rank: 1

注册时间
2010-8-7
发表于 2025-10-26 17:24:28| 字数 71| - 美国 来自手机版 | 显示全部楼层
我看那个人github有smbusb的windows版本,还要装个驱动,请问用cp2112在win下能操作连接成功吗,我试了,提示找不到适配器

点评

可以,读写,我已经试过了.你得用,fx2lp ,cp2112 不能.  发表于 2025-10-26 19:27
回复 支持 反对

使用道具 举报

6674

回帖

53

积分

9339

资产值

钻石会员 Rank: 3Rank: 3Rank: 3

注册时间
2003-12-3
银牌荣誉勋章(注册10年以上会员)铜牌荣誉勋章(注册8年以上会员)金牌荣誉勋章(注册20年以上会员)
发表于 2025-10-26 19:31:06| 字数 143| - 中国–湖北–武汉 电信 | 显示全部楼层
本帖最后由 jackmacc 于 2025-10-26 19:38 编辑



这个帖子我反复看过几遍. 6个数据块.分别读取,
然后就可以随意在 windows 下用cp2112 ,软件进行编程了.但是没有多买几个 瑞萨的板子.就没有去琢磨
LZ 亲力亲为,非常感谢辛勤付出! 说实话,你这个文章. 对我很有启发.收藏了.




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
verbal violentor
回复 支持 反对

使用道具 举报

214

回帖

4

积分

2170

资产值

高级会员 Rank: 2Rank: 2

注册时间
2021-11-10
 楼主| 发表于 2025-10-27 14:00:42| 字数 2,517| - 中国–北京–北京 电信 | 显示全部楼层
本帖最后由 2690173248 于 2025-10-27 14:30 编辑

M37512编程

按照之前步骤成功获取六个分区的备份以后,备份文件复制一份,然后直接改
一般情况下,只需要修改bb.bin(Block B)。如果要修改静态信息,像充电电压,也需要修改b1.bin(Block 1)。
这里下面全部讲的是LG固件的结构,松下固件的文件结构跟这个完全不一样!
但是松下固件的别着急,顺便说一下:
- 虽说BE2Works无法正常读取,但BE2Works可以一键重置松下固件(LG不行)。如果是松下固件的话,直接把备份按照B A 3 2 1 0顺序正确组装(打开bb.bin,然后在文件后面粘贴ba,然后b3 b2 b1 b0;总文件应该是从0000到CFFF,或者52KB。
- 插个CP2112(不要插电池!!!),打开BE2Works,选择M37512。直接把这个52KB的文件导入BE2Works,输入目标容量,按重置(还是不要插电池!)。一会儿会报写入错误,这个时候把修改好的EEPROM另存为。
- 最后把前面0-7FF拷贝出来另存,这个就是你的解锁了的bb_new.bin
- 然后 sudo smbusb_m37512flasher -w bb_new.bin -p bb --confirm-delete 确认写入此文件;断电,断飞线,重新接电即可使用!

下面是真正说LG的M37512 FC035的文件结构:
这个大大参考了51F51的资料,文件结构跟51F51很相像(https://www.ibmnb.com/thread-2069453-1-1.html
用HxD打开bb.bin,初次看起来真的眼花缭乱


但是别急,这个一步一步的来。
第一个发现,是这些貌似也是来回来去的重复,其实,40行、80行、C0行、100行等都是重复!这个跟那个51F51很相似,其实每一个是日志!而且,每一个日志在最前面都有00显示这个日志的存在。而且,据我发现,这里01显示的是有错误的日志(可能带锁的)。这套也跟51F51同理

锁标
51F51的帖子上面说,锁标是个17标识。我这里有三个M37512 FC035的备份,一个没锁,两个有锁。有锁的两个bb我也是发现有17标识,而且也是在上面标识01的那个对应的log里面有!


图中显示一个,我另一个bb里面有很多个17,而且每一次写17的log上面对应的都是01!你可以下载我的问题bb.bin然后自己观察


只是,这里我们猜测的锁标位置明显不一样,而且这里貌似正常使用标不是03。


而且,我敢非常的肯定,第一个日志是没有问题的,所以不如按照下图,直接把后面所有的log全部FF掉(上面对应的00/01标识也FF掉),只留第一个!


剩下第一个log,应该锁标没了。下面开始改其它参数
51F51的其它参数如下:
  1. (Need update) 51F51 revision has next founded mapping (all little endian):
  2. 0x40, 2 bytes - Remain Capacity Alarm, in mAh
  3. 0x44, 2 bytes - Remaining Time Alarm, in minutes
  4. 0x48, 2 bytes - FCC. TBD: example dump above map this value as-is in mAh, but I need 6000 mAh multiply to 1.78 to gen ~6000mAh in the report output. Need investigate.
  5. 0x46, 2 bytes - Battery Mode
  6. 0x4C, 2 bytes - Cycle Count, maps as is (TBD)
复制代码


我还是按照这个作为参考。M37512 FC035的参数具体位置跟这个不一样,但是原理跟这个一样!(而且全部是小端序!)
0x40, 2 bytes - Remain Capacity Alarm, in mAh
0x44, 2 bytes - Remaining Time Alarm, in minutes

这两个还是一样的,但是这两个不要改!
0x48, 2 bytes - FCC

FCC(满电容量)也是同一个地方,但是有两个位置!0x48是一个,0x4a也是!0x48是一个很奇怪的单位,为1.11*mah。我这里改成了6B14,是5227,或者5227*1.11=5.8Ah
0x4a是 10mWh单位,这里我填的7818,是6264 * 10mWh=62.64Wh。这两个不需要完全相同,但是别漏改!!!漏了充电的标尺会很奇怪!
0x4C, 2 bytes - Cycle Count, maps as is (TBD)

这个是一模一样,直接00就行
另外,还有0x4E, 2 bytes。这个是首次使用日期,可改可不改,我改成了4C5B,DOS日期=2025-10-12

所以,以下是我所有修改的地方:



高压电池
有的M37512 FC035主控的是高压电池,我这四个主控里面,其中一个是42T4837,这个就是高压,充电电压13.05V!

我试了试,我LG MH1根本撑不住这个负载!这个需要改。
改充电电压找到了就挺容易了。在Block 1里面,如下:



这里有两个FA 32,这个是大端序的13050mV!还好,亲测这个固件没有checksum保护,我直接下图这样子改后面使用没问题(注意两处都要改!)!



两个文件都存成备份,例如b1_new.bin和bb_new.bin

在这个电池板还处于Boot Mode下,运行以下命令写入:
sudo smbusb_m37512flasher -w bb_new.bin -p bb --confirm-delete

sudo smbusb_m37512flasher -w b1_new.bin -p b1 --confirm-delete

(只有需要修改静态信息,如充电电压,才需要写入b1!不然不要动)
写入成功后,断开电源连接,拆掉飞线,重新连接电源(这里是这个水泥电阻省事的地方!),可能需要电池正极短接一下电池插座正极1秒钟来启动电池板
如果操作正确,可以尝试读取电池信息:
sudo smbusb_sbsreport



这里看出来,充电电压回来了,而且改成12.6V!
现在就可以再次断开电源连接,断开水泥电阻,上真正想用的电芯


结果一切正常!满电电压12.53V!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.5 © 2001-2023 Comsenz Inc

GMT+8, 2025-10-27 15:55 , Processed in 0.101465 second(s), 35 queries , Gzip On, OPcache On.

手机版|小黑屋|安卓客户端|iOS客户端|Archiver|备用网址1|备用网址2|在线留言|专门网

返回顶部