这个方法是目前针对lenovo T420/X230 电池换芯成本最低、最成熟的方案,不需要买 CP2112,不需要装 XP,直接用你的 T420 自己的 VGA 口,自己搞定自己的电池
此方法只适用于三洋固件的 BQ8030 芯片BMS,拆解电池,如果印着 BQ8030 或 BQ8030A,并且旁边有三洋(SANYO)标志,那就是对的
在 Linux 系统中安装必要的工具:
# 安装 i2c-tools(用于检测I2C设备)
sudo apt update
sudo apt install i2c-tools
# 安装 Python 依赖
pip3 install smbus2
下载开源脚本:
git clone https://github.com/noolex/lenovo_battery_repair
cd lenovo_battery_repair
VGA 引脚 | 功能 | 连接的电池接口引脚 | | 引脚 5 | GND(地线) | GND | | 引脚 12 | SDA(数据线) | SDA | | 引脚 15 | SCL(时钟线) | SCL |
BMS从左数:连接前最好用万用表确认一下引脚
引脚位置 | 功能 | | 1、2 | 正极(+) | | 3 | 检测脚(未知) | | 4 | SCL(时钟线) | | 5 | SDA(数据线) | | 6、7 | GND(地线) |
下面敲黑板注意看啦,第一步:检测 I2C 设备号
i2cdetect -l
技巧:这会列出系统中所有的 I2C 总线。VGA 口对应的通常是 i2c-0 或 i2c-1。你可以先不接电池运行一次,再接上电池运行一次,多出来的那个就是。
第2步,检测电池BMS的i2c地址
# 假设上一步找到的端口号是 0
i2cdetect -y 0
第3步,获取电池报告
python3 bat_report.py 0 0x16
第4步,解锁电池,发密钥,成功看见Unsealed!
python3 bat_hack.py 0 0x16
第5步,EEPROM读取与备份,这个大家都懂
python3 bat_read_eeprom.py 0 0x16 backup.bin
最后,用十六进制编辑器(如 Linux 下的 hexedit、wxHexEditor,或 Windows 下的 HxD)打开 backup.bin。
地址 | 长度 | 数据含义 | 修改为 | | 0x500 | 2字节 | 循环次数(低位在前) | 00 00 | | 0x502 | 2字节 | 满充容量(mAh 或 0.1Wh) | 你的新电芯容量 | | 0x600 | 2字节 | 循环次数(备份区) | 00 00 | | 0x602 | 2字节 | 满充容量(备份区) | 同 0x502 |
关于容量的说明:先读一次原数据,看看原来显示多少容量,然后按比例换算
示例(假设新电芯是 5200mAh,原电芯 4400mAh):找到原容量值(比如 30 11 表示 0x1130 = 4400)改为 50 14(0x1450 = 5200) 第7步:刷回新数据文件 python3 bat_write_eeprom.py 0 0x16 modified.bin 第8步:推出烧写修改模式,启动新电池 python3 bat_exec.py 0 0x16
注意:拆旧电芯时,建议用“并联法”——先并联新旧电芯再拆旧的,保持保护板不断电,避免触发硬件锁
|