Battery indicator stuck at 0%

Ubuntu Version:
Ubuntu 22.04.5 LTS

Desktop Environment:
GNOME 42.9

Problem Description:
When booting into Ubuntu, the battery indicator is stuck at zero percent, saying it’s not charging. Some quick background info: I do almost all of my work with the laptop connected via USB-C to an external monitor (which means it’s always charging), and for that reason I wanted to see if there were any ways to control the battery charging thresholds, with the hopes of avoiding always charging to 100%. I came across TLP, installed it, and followed the steps to set the battery charging thresholds in the config /etc/tlp.conf. I’m pretty sure the problem originates from when I did this, because the battery indicator was now stuck at the percentage it was right before starting TLP, but it went down when unplugging the charger. So basically it was either constant, or going down.

A couple of weeks later I used the laptop without charging, and “drained the battery”. The status after this is that I can use the computer normally as long as the charger is plugged in, but the indicator is stuck at zero and not charging. When I unplug it, I get the critically low battery error before it eventually shuts down. However, when i boot into Windows 11, there seems to be no problems at all. This has led me to believe the problem may be software related issues with Ubuntu.

Relevant System Information:
I am running Ubuntu on my ThinkPad T14 Gen 5. It is dual booted with Windows 11, but i mainly use Ubuntu with Linux kernel version 6.8.0-51-generic.

Screenshots or Error Messages:
Kernel version:

$ uname -r
6.8.0-51-generic

This was the first unusual info I found regarding the battery status:

$ sudo upower -d
[sudo] password for vegardhoug: 
Device: /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  power supply:         yes
  updated:              Mon 27 Jan 2025 09:12:12 AM CET (83 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               charging
    warning-level:       none
    energy:              0 Wh
    energy-empty:        0 Wh
    energy-full:         0 Wh
    energy-full-design:  0 Wh
    energy-rate:         0 W
    charge-cycles:       N/A
    percentage:          0%
    capacity:            100%
    icon-name:          'battery-caution-charging-symbolic'
  History (charge):
    1737965532	0.000	unknown
  History (rate):
    1737965532	0.000	unknown

This error message is interesting, based on the fact that the issue seems to not be hardware related:

$ sudo tlp recalibrate
Setting temporary charge thresholds for BAT0:
  start =  96 (no change)
  stop  = 100 (no change)
Error: discharge BAT0 malfunction -- check your hardware (battery, charger).
Battery recalibration aborted.

The BAT0 status information given here is quite interesting, especially the negative cycle count:

$ sudo tlp-stat -b
--- TLP 1.5.0 --------------------------------------------

+++ Battery Care
Plugin: thinkpad
Supported features: charge thresholds, recalibration
Driver usage:
* natacpi (thinkpad_acpi) = active (charge thresholds, recalibration)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1:  0(off)..96(default)..99
* STOP_CHARGE_THRESH_BAT0/1:   1..100(default)

+++ ThinkPad Battery Status: BAT0 (Main / Internal)
/sys/class/power_supply/BAT0/manufacturer                   = (not available)
/sys/class/power_supply/BAT0/model_name                     = (not available)
/sys/class/power_supply/BAT0/cycle_count                    =     -1
/sys/class/power_supply/BAT0/status                         = Not charging

/sys/class/power_supply/BAT0/charge_control_start_threshold =     96 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =    100 [%]
/sys/class/power_supply/BAT0/charge_behaviour               = [auto] inhibit-charge force-discharge

What I’ve Tried:
I feel like I’ve tried everything, but I’ll try to list everything here.

  • Disconnected and connected the actual battery.
  • Disabled the built in battery in BIOS, before rebooting.
  • Reset battery settings; while shut down, unplugged the AC, held power button for one minute before plugging back the AC.
  • Updated and booted into latest kernel version.
  • Removed TLP completely. Reinstalled and reconfigured it again.
  • Performed UEFI hardware diagnostics.
  • Tried $ sudo tlp fullcharge, before rebooting.

None of these has worked, unfortunately.

Do you have the latest BIOS? This may help. Version 1.11 is the latest for Windows 11 for your system

This is the BIOS-information i get when running sudo dmidecode | less:

BIOS Information
        Vendor: LENOVO
        Version: R2LET30W (1.11 )
        Release Date: 11/11/2024
        Address: 0xE0000
        Runtime Size: 128 kB
        ROM Size: 32 MB
        Characteristics:
                PCI is supported
                PNP is supported
                BIOS is upgradeable
                BIOS shadowing is allowed
                Boot from CD is supported
                Selectable boot is supported
                EDD is supported
                3.5"/720 kB floppy services are supported (int 13h)
                Print screen service is supported (int 5h)
                8042 keyboard services are supported (int 9h)
                Serial services are supported (int 14h)
                Printer services are supported (int 17h)
                CGA/mono video services are supported (int 10h)
                ACPI is supported
                USB legacy is supported
                BIOS boot specification is supported
                Targeted content distribution is supported
                UEFI is supported
        BIOS Revision: 1.11
        Firmware Revision: 1.5

Looks like I’ve got the version you mentioned, but it says BIOS is upgradeable.

It means that the BIOS can be upgraded, not that you have an upgrade available.