So, I’ve dug up my corebooted t440p and decided to check if it’ll work with the battery from my t480, and it did! Well, sort of.

Since coreboot also replaces the embedded controller firmware (mb sometimes they keep blobs of it, idk, but certainly not in case of t440p), we won’t get those nasty “battery not supported, pay me” messages even if they’ve changed the verification since then.

However, I suspect some batteries may be unprepared for the power draw of earlier models. I’ve tested it on 2 batteries, one was a 22wh → 72wh conversion with BMS built on top of a cheap controller with rather unpleasant feedback from battery repair people; the other one was a more trustworthy 72wh clone powered by bq8050. The latter one worked ootb, while the former somewhat worked: fine in uefi, fine in grub, drop voltage to 0 as soon as the os starts loading → poweroff. If the power supply is plugged in during boot, the battery works fine (may drop voltage again under load, haven’t tested it myself).

Soo, basically the use case is that you can try to retrofit the guts of a newer battery into older thinkpads if those run core/libreboot.

  • monovergent 🏁@lemmy.ml
    link
    fedilink
    arrow-up
    3
    ·
    1 month ago

    I’m curious, how did you build the BMS with a cheap controller? I won’t judge. I’ve always wanted to build my own battery pack that reports percentage back to the machine, without worrying about killing the BMS if it loses power.

    • fl42v@lemmy.mlOP
      link
      fedilink
      arrow-up
      3
      ·
      1 month ago

      I didn’t build it, although I’ve been entertaining the idea for quite a while. I just happened to have 2 dead batteries, one 72wh with a locked controller (2 parallel cells simply fell off due to bad spot welding) that I later bricked while trying to unlock, and a 22wh with one of the packs dead. So, after fixing the welding (tbh I’ve just soldered those cells since I didn’t have a spot welder myself at the time) I just swapped out the working controller with the locked one. T480 doesn’t seem to mind, so whatever. Although I eventually decided to set the charge threshold at ~90% since it seemed to me the BMS overcharges the batteries

      As for building, there’s this beauty (also there’s a hackaday article about it; includes a link to the blog post outlining how it was done) for t420 which seems to include a PoC-ish smbus implementation for an attiny, as we’ll as a prototype based on bq3060. Verification may be a problem, tho, if the board runs on EC firmware from lenovo (also, I’ve been looking at coreboot docs for x230 today, and yap, they sometimes do keep blobs with EC firmware, although there were tutorials on patching it to remove the verification). Also, if you happen to have a battery based on bq8030 ic, this blogpost has a disassembler for its firmware, which makes it possible to more or less see how the battery side of verification is done and implement it some other way. Dumping the firmware is also quite simple using theese scripts (tested on the second battery mentioned in the post)

  • fl42v@lemmy.mlOP
    link
    fedilink
    arrow-up
    2
    ·
    1 month ago

    A bit of an update here: I decided to do it. Basically, 1st you need to desolder the flex cable, starting with 2 positive wires and not shorting them to other stuff (I haven’t tried doing it myself, but it doesn’t seem like a good idea)

    PXL_20240925_201225809.jpg_shrink

    PXL_20240925_202336254.MP.jpg_shrink

    Then solder everything but positive, isolate, solder positives, isolate. I used hot glue since I’m in the middle of nowhere and too impatient to wait for some more appropriate stuff to be delivered.

    PXL_20240925_204143577.jpg_shrink

    PXL_20240925_205110904.jpg_shrink

    PXL_20240925_205557465.jpg_shrink

    Then install the contraption into the case which doesn’t fully close now, but it’s unnoticeable when plugged in into the laptop.

    PXL_20240925_210210301.jpg_shrink