0

My X1 carbon 9th gen laptop has worked great for the 5 months since purchased new old stock. The battery life is great etc. I am familiar with tlp and have used setcharge 70 80 for most of its life to hopefully prolong the battery life and to some extent that has been working, it still claims to have 104% of new capacity.

Except yesterday it hit 20% and when I plugged it in the laptop kept running but it never charged up above 20%. I've tried two different USBC adapters and both keep it running, but neither will add any charge to the battery. It doesn't say "pending-charge," like in one other question; it says "charging." If I take it off the power supply it keeps the laptop running, and over the last couple days I've drawn the battery down a little more so now it's down to 18%.

I tried rebooting and I even tried going in to the bios, telling it to disconnect the battery, unplugging, then holding down the power button for 10s, plugging back in and rebooting which shows up as the best answer to a similar fault on this question. https://askubuntu.com/questions/1051209/battery-not-charging-but-detected

But that had no effect.

In my case I wonder if it has to do with the

parameter value
/sys/class/power_supply/BAT0/voltage_min_design 15440000
/sys/class/power_supply/BAT0/voltage_now 14213000

Showing that the firmware thinks the battery is already below its min design voltage, which I can see inhibiting charging. The thing is I'm pretty sure that min design voltage is wrong. I haven't yet opened it up to confirm the wiring but from what I've read x1 gen 9 batteries are 4 cell so the voltage_min_design should be something like 12000000. The nominal voltage should be the 15440000 voltage that's listed.

Does anyone know where the acpi system gets told that min_design number? I didn't delve this deeply into the config when I first got the laptop so it could be that min_design has always been that way and this is a red herring.

Here's the output of everything I could think of that might be relevant:

acpi -b
Battery 0: Charging, 18%, charging at zero rate - will never fully charge.

# sudo tlp-stat -b
--- TLP 1.8.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                   = SMD
/sys/class/power_supply/BAT0/model_name                     = 5B10W13973
/sys/class/power_supply/BAT0/cycle_count                    =    105
/sys/class/power_supply/BAT0/energy_full_design             =  57000 [mWh]
/sys/class/power_supply/BAT0/energy_full                    =  59730 [mWh]
/sys/class/power_supply/BAT0/energy_now                     =  11190 [mWh]
/sys/class/power_supply/BAT0/power_now                      =      0 [mW]
/sys/class/power_supply/BAT0/status                         = Charging
 
/sys/class/power_supply/BAT0/charge_control_start_threshold =     70 [%]
/sys/class/power_supply/BAT0/charge_control_end_threshold   =     80 [%]
/sys/class/power_supply/BAT0/charge_behaviour               = [auto] inhibit-charge force-discharge
 
Charge                                                      =   18.7 [%]
Capacity                                                    =  104.8 [%]
parameter value
/sys/class/power_supply/BAT0/alarm 2986000
/sys/class/power_supply/BAT0/capacity 18
/sys/class/power_supply/BAT0/capacity_level Normal
/sys/class/power_supply/BAT0/charge_behaviour [auto] inhibit-charge force-discharge
/sys/class/power_supply/BAT0/charge_control_end_threshold 80
/sys/class/power_supply/BAT0/charge_control_start_threshold 70
/sys/class/power_supply/BAT0/charge_start_threshold 70
/sys/class/power_supply/BAT0/charge_stop_threshold 80
/sys/class/power_supply/BAT0/cycle_count 105
/sys/class/power_supply/BAT0/energy_full 59730000
/sys/class/power_supply/BAT0/energy_full_design 57000000
/sys/class/power_supply/BAT0/energy_now 11190000
/sys/class/power_supply/BAT0/manufacturer SMD
/sys/class/power_supply/BAT0/model_name 5B10W13973
/sys/class/power_supply/BAT0/power_now 0
/sys/class/power_supply/BAT0/present 1
/sys/class/power_supply/BAT0/serial_number 187
/sys/class/power_supply/BAT0/status Charging
/sys/class/power_supply/BAT0/technology Li-poly
/sys/class/power_supply/BAT0/type Battery
/sys/class/power_supply/BAT0/voltage_min_design 15440000
/sys/class/power_supply/BAT0/voltage_now 14213000

1 Answer 1

0

In case anyone else every has the same question, here's the results my dive into "where does voltage_min_design come from?"

The battery kernel module. /usr/src/linux-source-6.12/drivers/acpi/battery.c

acpi_battery_get_property for POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN is set to the battery->design_voltage * 1000; which is taken from the design_voltage field in the _BIF or _BIX package.

But that battery->design_voltage is the nominal voltage used to multiply by the amperage for batteries that report in mAh vs mWh, not the min design voltage below which the battery should never drop.

Looking at the spec:

https://uefi.org/specs/ACPI/6.5/10_Power_Source_and_Power_Meter_Devices.html

Field number 4 in _BIF (Battery Information) [or field number 5 in _BIX (Battery Information eXtended)] Battery Control Method fron the ACPI Smart Bettery Object. It's described as "Nominal voltage of a new battery."

Which makes sense for using to convert from mAh to mWh.

But doesn't make sense for "voltage_min_design".

I've opened up the laptop and confirmed my battery in fact has four cells and should have an actual voltage_min_design around 12V. In my broken laptop's case having the voltage_now below the voltage_min_design is not why my battery isn't charging. I've tried a bunch of things, including Lenovo's built in [F10 at boot time] UEFI diagnostics tool and it's failing its charging test, so in my case I most likely have a hardware failure.

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.