Battery management controller (BMS, Battery Management System) is the “brain” of your laptop battery, responsible for charging, discharging, protecting against overheating and cell wear. When it fails or does not work correctly, the laptop may suddenly turn off, not charge, or show an incorrect charge percentage. In 70% of such cases the problem is solved controller firmware - a procedure that seems simple, but in fact requires precision and understanding of the processes.
This article is not just an instruction on “how to press buttons”, but an analysis real reasons why BMS firmware can either save the battery or completely “kill” it if approached incorrectly. We'll look at when firmware is really needed (and when it's a waste of time), what tools you'll need, how to choose the right firmware version, and what to do if, after updating, your laptop no longer sees the battery. Let's look specifically at the risks - for example, why Lenovo ThinkPad T480 And Dell XPS 15 require different approaches, and how not to turn a working battery into a “brick”.
Signs of a faulty battery controller: when you need firmware
The first question you need to ask yourself is: “Is the problem really in the controller?” Many users mistake worn battery cells for a firmware failure. Here exact symptoms, indicating a BMS malfunction:
- 🔋 The laptop only works from the mains, although the battery is detected in the BIOS/UEFI.
- 📉 The charge percentage “jumps” (for example, from 50% to 10% at once) or shows unrealistic values (100% with the power off).
- ⚡ The laptop turns off at 20–30% charge, although previously it worked up to 5–10%.
- 🔌 Charging occurs in spurts: it goes on and then stops for no reason.
- 💻 B
Device Managerunknown device appearsACPI\PNP0C0Awith an exclamation point.
If at least one of these signs appears, it makes sense to diagnose the controller. But before installing the firmware, be sure to check:
- State of the battery cells (can be done with a tester or through programs like BatteryInfoView).
- Contacts between battery and laptop (oxidation or contamination could simulate BMS failure).
- Power settings in BIOS (sometimes the problem lies in incorrect settings
ACPI).
⚠️ Attention: If the battery is swollen or has physical damage, the controller firmware won't help - Battery replacement required. Continued use is dangerous!
- Laptop won't hold charge
- Charge percentage fluctuates
- Doesn't charge at all
- Turns off when power is connected
- Other
Types of BMS controllers: which one does your laptop have?
Not all controllers are flashed the same way. They can be divided into three main types, each of which requires its own approach:
| Controller type | Examples of laptops | Firmware features | Tools |
|---|---|---|---|
| In-system (ISP) | Lenovo ThinkPad (T/X/P-series), Dell Latitude | Flashing without dismantling, through service contacts on the board | Programmer TL866, adapter SOIC8 |
| SMBus/I2C | HP EliteBook, Acer Swift, ASUS ZenBook | Requires bus connection SMBus via battery connector |
Bus Pirate, USBee SX |
| 1-Wire | Apple MacBook (up to 2015), some Sony VAIO | Flashed through a special protocol, often with blocking | 1-Wire adapter, CoconutBattery |
| Proprietary | MSI GS66, Razer Blade, some Gaming laptops | Closed protocols, firmware only through service utilities | Proprietary software (MSI Battery Calibration) |
You can determine the type of controller by the markings on the battery board or through programs like HWiNFO (tab Sensors → Battery). For example, if the battery information specifies the protocol SMBus, which means you will need an appropriate programmer.
Critical moment: some laptops (eg Apple MacBook Pro 2016+ or Dell XPS 13 9380) have protection against flashing - when you try to update the BMS, they block the battery forever. In such cases, the only way out is to replace the battery with an original one.
How to find out the controller model without disassembling?
Open a command prompt as administrator and type:
powercfg /batteryreport
In the Generated file battery-report.html find the lines Design Capacity And Serial Number. Using this data, you can find the datasheet for the controller in the database Battery University or on the forums.
Preparing for flashing: tools and safety
BMS firmware is not a Windows update. One wrong step can lead to complete loss of battery performance. Therefore, preparation must be thorough.
Required Tools
- 🔧 Programmer: TL866II Plus (for ISP), Bus Pirate 4 (for SMBus), CH341A (budget option).
- 🔌 Adapters: SOIC8 clip (for microcircuits in SOIC-8 package), SMBus→USB adapter.
- 💻 software: Flashrom (for Linux), NeoProgrammer (for TL866), SMBus Scanner.
- 🔋 Power supply: Current limiting power supply (e.g. Riden RD6018) for short circuit protection.
- 🛠️ Additionally: soldering station (for ISP), multimeter, antistatic wrist strap.
Security measures
Controller firmware - working with high risk:
- ⚡ Unplug your laptop and remove the battery (if it is removable). Operate only from an external current-limiting power supply!
- 🔥 Do not touch the battery contacts with metal objects - risk of short circuit and fire.
- 📡 Turn off Wi-Fi/Bluetooth on a laptop - they may interfere with SMBus.
- 💾 Make a backup of the current firmware (by command
flashrom -r backup.binfor ISP or via SMBus Dump).
⚠️ Attention: If you are flashing a controller Maxim DS2784 (found in MacBook 2009–2012), never interrupt the update process - this will lead to irreversible blocking microcircuits. Restoration is only possible by replacing the controller.
Remove static electricity (touch a grounded object)|
Check the voltage at the battery contacts (should be 0V with the battery removed)|
Install drivers for the programmer (for example, libusb for CH341A)|
Download the firmware specifically for your controller model (not universal!) |
Connect the programmer to a USB hub with separate meals (to avoid crashes) -->
Step-by-step instructions: how to flash the battery controller
Let's consider a universal algorithm for most laptops with controllers SMBus (For example, HP Pavilion or ASUS VivoBook). For other types (ISP, 1-Wire) the steps will be different - we will analyze them separately.
Step 1: Determining the controller address on the SMBus bus
Connect the programmer to the contacts SDA And SCL on the battery board (usually the 5th and 6th pins of the connector). Run the scan:
smbus-scan 0x00 0x7F
If the controller responds, you'll see something like:
Device found at 0x16 (BQ20Z45)
Device found at 0x55 (Unknown)
Remember the address (in the example - 0x16). This is the key to further action.
Step 2: Read current firmware
Read a dump of the current firmware (for example Bus Pirate):
(1) > m 1
(2) > W
(3) > [0x16 0x00 [0x00 r:16]]
Save the received data to a file dump_original.bin. This is your “insurance” in case of unsuccessful firmware.
Step 3: Download new firmware
Download the firmware for your controller model (for example, for BQ20Z45 - from the site Texas Instruments). Important: the file must be in the format .bin or .hex, corresponding to your programmer.
To record, use the command:
flashrom -p buspirate_spi:dev=/dev/ttyUSB0 -w new_firmware.bin
Step 4: Checking the result
After flashing:
- Disable the programmer.
- Connect the battery to the laptop.
- Run BatteryInfoView and check the parameters
Full Charge CapacityAndCycle Count. - If the values have not changed or errors appear, return to the original dump.
1. Turn off your laptop and remove the battery.
2. Press the power button for 30 seconds.
3. Connect only the power supply and turn on the laptop.
4. Go to BIOS, reset settings to default (Load Defaults).
5. Save changes and reboot.-->
Firmware for ISP controllers (using the example of Lenovo ThinkPad)
Controllers with firmware via In-System Programming (ISP) are found in business laptops where reliability is important. For example, in Lenovo ThinkPad T480 or Dell Precision microcircuit is used TI BQ8030 or Maxim DS2782.
ISP Feature: The firmware goes directly through the legs of the microcircuit, without using standard protocols. It's more difficult, but more reliable.
Required equipment
- 🔧 Programmer TL866II Plus with adapter SOIC8.
- 🔌 Power supply 3.3V (to power the microcircuit during firmware).
- 🛠️ Soldering station (for soldering wires to contacts
CLK,DAT,GND).
Step by step process
- Unsolder the battery from the laptop (or disconnect the connector).
- Locate the controller chip (usually labeled as
BQxxxxorDSxxxx). - Connect SOIC8 clip to the legs of the microcircuit (observe the pinout!).
- In the program NeoProgrammer select the controller model and download the firmware.
- Start the recording process. Don't interrupt! On TI BQ8030 The firmware takes ~3 minutes.
⚠️ Attention: When flashing Maxim DS2784 via ISP You cannot use voltage higher than 3.6V - this will lead to damage to the microcircuit. Use a stabilized source!
Firmware via ISP is the only way to restore the controller if it is locked after an unsuccessful update via SMBus.
Common mistakes and how to avoid them
Even experienced users make mistakes that lead to irreversible damage controller. Here are the top 5 mistakes and how to prevent them:
- 🔌 Incorrect connection of the programmer:
Confused
SDAAndSCLor incorrect power polarity is the most common cause of chip burnout. Always check the pinout with a multimeter! - 📥 Incompatible firmware:
Firmware from BQ20Z45 not suitable for BQ20Z60, even if they look similar. Always check the datasheet.
- ⚡ Firmware with battery connected:
If the battery is connected to the laptop while flashing the firmware, a voltage conflict may occur. Be sure to turn it off!
- 💾 Lack of backup:
Without a backup copy of the original firmware, restoring the controller will be extremely difficult (or impossible).
- 🔄 Interrupting a process:
On some controllers (for example, TI BQ8030) interruption of the firmware leads to blocking
WP-register The only solution is ISP firmware.
If the battery is not detected after flashing the firmware, try:
- Restore original firmware from backup.
- Check the circuit
SMBusfor breaks (with a multimeter in dialing mode). - Reset
EC controllerlaptop (to do this, you need to disconnect the CMOS battery for 10 minutes).
Firmware for controllers in MacBook: features and risks
Laptops Apple - a separate story. Here the battery controllers are integrated into the power management system (SMC), and any intervention may lead to blocking the device.
Key points:
- 🍏 B MacBook Pro/Air 2016–2023 controller TI BQ27541 stitched only through service mode (need Apple Service Toolkit).
- 🔒 In models with T2 chip (2018+) BMS firmware is blocked if not disabled
Secure Boot. - 📉 B MacBook 2009–2015 can be flashed DS2784 through 1-Wire, but required disable System Integrity Protection (SIP).
For the firmware you will need:
- 🔧 1-Wire adapter (For example, DS9490R).
- 💻Utility CoconutBattery (for monitoring) or Macs Fan Control (to reset SMC).
- 🔑 OpenCore Legacy Patcher (to disable SIP on older MacBooks).
⚠️ Attention: After flashing the controller in MacBook Pro 2017+ an error may occur "Service Battery". It can only be corrected through Apple Configurator 2 with a connection to an Apple server - this is impossible at home!
FAQ: answers to frequently asked questions
Is it possible to flash the controller without removing the battery from the laptop?
Theoretically yes, but extremely risky. When flashing via SMBus (without ISP) there is a risk:
- Short circuit due to unstable contact.
- Damage to the motherboard due to a power surge.
- Lock the controller if the laptop suddenly turns on.
If you still decide to flash it “on site”, at least disconnect the battery cable from the motherboard and supply power to the controller separately (via a stabilized 3.3V source).
Where can I get the firmware for my controller?
Firmware sources (sorted by reliability):
- Official websites of manufacturers:
- Texas Instruments (for
BQxxxx) — ti.com. - Maxim Integrated (for
DSxxxx) — maximintegrated.com.
- Texas Instruments (for
- Enthusiast databases:
- Battery University — batteryuniversity.com.
- Forums BadCaps And EEVblog.
- Branded laptop software:
- Lenovo Vantage (for ThinkPad).
- Dell Power Manager.
Warning: Never use firmware from unknown sources (e.g., random Telegram channels). Fake firmware can brick your BMS or even cause a fire hazard.
What should I do if, after updating the firmware, the battery is no longer detected?
Algorithm of actions:
- Return original firmware from backup. If there is no backup, download a dump for your controller model (search by marking).
- Check the SMBus circuit:
- Make sure your contacts are
SDA/SCLnot closed. - Use a multimeter to test the resistance between
SDAAndGND(must be >10 kOhm).
- Make sure your contacts are
- Reset EC/BIOS:
- Disconnect the battery and power supply.
- Close the contacts
CMOS(or remove the BIOS battery) for 10 minutes.
If all else fails, the controller is most likely blocked. In this case, only replacing the microcircuit or the entire battery will help.
Is it possible to flash the battery controller from another laptop?
No, you can't. Even if the controller models are the same (for example, BQ20Z45), firmware contains unique data:
- Battery serial number (tied to laptop).
- Calibration factors (depending on the capacity and type of cells).
- Security flags (can block the controller if there is a mismatch).
The exception is if you manually edit the firmware in Hex editor, replacing the serial number and calibration data. But this requires deep knowledge and often leads to mistakes.
How often do I need to update the controller firmware?
BMS firmware - not a regular procedure, but a measure of recovery from failures. Updating it “for prevention” is not only pointless, but also dangerous. Exceptions:
- Official updates from the laptop manufacturer (eg. Lenovo sometimes releases patches for BMS in its business lines).
- Critical bugs in the controller (for example, an error in calculating the capacity in TI BQ40Z50, corrected in revision 1.0.3).
In other cases, flash only when obvious malfunctions.