linrunner / TLP

TLP - Optimize Linux Laptop Battery Life
https://linrunner.de/tlp
GNU General Public License v2.0
2.74k stars 129 forks source link

Thinkpad T480s Wont Charge Unless Fully Discharged Via "tlp recalibrate' #507

Closed ratboy777 closed 4 years ago

ratboy777 commented 4 years ago

After installing TLP on Debian Bullseye the battery of my Thinkpad T480s won't charge unless it is discharged via tlp recalibrate command. I have also tried fullcharge which does nothing, setting my thresholds which does not change the output of tlp-stat -b where the thresholds are still set to the default charge_start_threshold = 96 charge_stop_threshold = 100. Booting to Windows 10 allows the machine to charge. When plugged in on my debian machine and not charging the battery status is "Unknown" in tlp-stat -b. I have also tried to set the thresholds via tpacpi-bat but that didn't work either, however I won't go into much detail as that is a different project than TLP. I am away from the machine right now but will post output of tlp-stat when I get a chance.

edit: here is the output of tlp-stat

--- TLP 1.3.1 --------------------------------------------

+++ Configured Settings: defaults.conf L0004: TLP_ENABLE="1" defaults.conf L0005: TLP_PERSISTENT_DEFAULT="0" defaults.conf L0006: DISK_IDLE_SECS_ON_AC="0" defaults.conf L0007: DISK_IDLE_SECS_ON_BAT="2" defaults.conf L0008: MAX_LOST_WORK_SECS_ON_AC="15" defaults.conf L0009: MAX_LOST_WORK_SECS_ON_BAT="60" defaults.conf L0010: CPU_ENERGY_PERF_POLICY_ON_AC="balance_performance" defaults.conf L0011: CPU_ENERGY_PERF_POLICY_ON_BAT="balance_power" defaults.conf L0012: SCHED_POWERSAVE_ON_AC="0" defaults.conf L0013: SCHED_POWERSAVE_ON_BAT="1" defaults.conf L0014: NMI_WATCHDOG="0" defaults.conf L0015: DISK_DEVICES="nvme0n1 sda" defaults.conf L0016: DISK_APM_LEVEL_ON_AC="254 254" defaults.conf L0017: DISK_APM_LEVEL_ON_BAT="128 128" defaults.conf L0018: DISK_IOSCHED="keep keep" defaults.conf L0019: SATA_LINKPWR_ON_AC="med_power_with_dipm max_performance" defaults.conf L0020: SATA_LINKPWR_ON_BAT="med_power_with_dipm min_power" defaults.conf L0021: AHCI_RUNTIME_PM_TIMEOUT="15" defaults.conf L0022: PCIE_ASPM_ON_AC="default" defaults.conf L0023: PCIE_ASPM_ON_BAT="default" defaults.conf L0024: RADEON_POWER_PROFILE_ON_AC="default" defaults.conf L0025: RADEON_POWER_PROFILE_ON_BAT="default" defaults.conf L0026: RADEON_DPM_PERF_LEVEL_ON_AC="auto" defaults.conf L0027: RADEON_DPM_PERF_LEVEL_ON_BAT="auto" defaults.conf L0028: WIFI_PWR_ON_AC="off" defaults.conf L0029: WIFI_PWR_ON_BAT="on" defaults.conf L0030: WOL_DISABLE="Y" defaults.conf L0031: SOUND_POWER_SAVE_ON_AC="0" defaults.conf L0032: SOUND_POWER_SAVE_ON_BAT="1" defaults.conf L0033: SOUND_POWER_SAVE_CONTROLLER="Y" defaults.conf L0034: BAY_POWEROFF_ON_AC="0" defaults.conf L0035: BAY_POWEROFF_ON_BAT="0" defaults.conf L0036: BAY_DEVICE="sr0" defaults.conf L0037: RUNTIME_PM_ON_AC="on" defaults.conf L0038: RUNTIME_PM_ON_BAT="auto" defaults.conf L0039: RUNTIME_PM_DRIVER_BLACKLIST="amdgpu mei_me nouveau nvidia pcieport radeon" defaults.conf L0040: USB_AUTOSUSPEND="1" defaults.conf L0041: USB_BLACKLIST_BTUSB="0" defaults.conf L0042: USB_BLACKLIST_PHONE="0" defaults.conf L0043: USB_BLACKLIST_PRINTER="1" defaults.conf L0044: USB_BLACKLIST_WWAN="0" defaults.conf L0045: USB_AUTOSUSPEND_DISABLE_ON_SHUTDOWN="0" defaults.conf L0046: RESTORE_DEVICE_STATE_ON_STARTUP="0" defaults.conf L0047: RESTORE_THRESHOLDS_ON_BAT="0" defaults.conf L0048: NATACPI_ENABLE="1" defaults.conf L0049: TPACPI_ENABLE="1" defaults.conf L0050: TPSMAPI_ENABLE="1"

+++ System Info System = LENOVO ThinkPad T480s 20L8S1XG00 BIOS = N22ET65W (1.42 ) Release = Debian GNU/Linux bullseye/sid Kernel = 5.7.0-1-amd64 #1 SMP Debian 5.7.6-1 (2020-06-24) x86_64 /proc/cmdline = BOOT_IMAGE=/boot/vmlinuz-5.7.0-1-amd64 root=UUID=9bb12864-71e1-46c8-b1ca-175de5592343 ro quiet Init system = systemd v245 (245.6-2) Boot mode = UEFI

+++ TLP Status State = enabled RDW state = enabled Last run = 07:22:59 AM, 107 sec(s) ago Mode = AC Power source = AC

+++ Processor CPU model = Intel(R) Core(TM) i5-8350U CPU @ 1.70GHz

/sys/devices/system/cpu/cpu0/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu0/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu1/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu1/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu1/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu1/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu1/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu1/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu2/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu2/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu2/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu2/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu2/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu2/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu2/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu3/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu3/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu3/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu3/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu3/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu3/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu3/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu4/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu4/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu4/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu4/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu4/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu4/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu5/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu5/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu5/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu5/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu5/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu5/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu5/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu6/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu6/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu6/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu6/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu6/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu6/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu6/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/cpu7/cpufreq/scaling_driver = intel_pstate /sys/devices/system/cpu/cpu7/cpufreq/scaling_governor = powersave /sys/devices/system/cpu/cpu7/cpufreq/scaling_available_governors = performance powersave /sys/devices/system/cpu/cpu7/cpufreq/scaling_min_freq = 400000 [kHz] /sys/devices/system/cpu/cpu7/cpufreq/scaling_max_freq = 3600000 [kHz] /sys/devices/system/cpu/cpu7/cpufreq/energy_performance_preference = balance_performance [HWP.EPP] /sys/devices/system/cpu/cpu7/cpufreq/energy_performance_available_preferences = default performance balance_performance balance_power power

/sys/devices/system/cpu/intel_pstate/min_perf_pct = 11 [%] /sys/devices/system/cpu/intel_pstate/max_perf_pct = 100 [%] /sys/devices/system/cpu/intel_pstate/no_turbo = 0 /sys/devices/system/cpu/intel_pstate/turbo_pct = 58 [%] /sys/devices/system/cpu/intel_pstate/num_pstates = 33

/sys/module/workqueue/parameters/power_efficient = N /proc/sys/kernel/nmi_watchdog = 0

+++ Temperatures /proc/acpi/ibm/thermal = 40 -128 0 0 0 0 0 0 0 0 66 0 0 0 0 0 [°C] /proc/acpi/ibm/fan = 0 [/min]

+++ File System /proc/sys/vm/laptop_mode = 0 /proc/sys/vm/dirty_writeback_centisecs = 1500 /proc/sys/vm/dirty_expire_centisecs = 1500 /proc/sys/vm/dirty_ratio = 20 /proc/sys/vm/dirty_background_ratio = 10

+++ Storage Devices Devices = nvme0n1 sda

/dev/nvme0n1: Type = NVMe Model = INTEL SSDPEKKF256G8L
Firmware = L08P
Scheduler = [none] mq-deadline (multi queue)

Runtime PM: control = auto, autosuspend_delay_ms = (not available)

/dev/sda: Type = USB Model = Generic SD MMC Firmware = unknown APM Level = none/disabled Status = standby Scheduler = [mq-deadline] none (multi queue)

Runtime PM: control = on, autosuspend_delay_ms = -1

+++ AHCI Link Power Management (ALPM) No AHCI-enabled host controller detected.

+++ Intel Graphics /sys/module/i915/parameters/enable_dc = -1 (use per-chip default) /sys/module/i915/parameters/enable_fbc = 1 (enabled) /sys/module/i915/parameters/enable_psr = -1 (use per-chip default) /sys/module/i915/parameters/modeset = -1 (use per-chip default)

/sys/class/drm/card0/gt_min_freq_mhz = 300 [MHz] /sys/class/drm/card0/gt_max_freq_mhz = 1100 [MHz] /sys/class/drm/card0/gt_boost_freq_mhz = 1100 [MHz] /sys/kernel/debug/dri/0/i915_ring_freq_table: 300 350 400 450 500 550 600 650 700 750 800 850 900 950 1000 1050 1100 [MHz]

+++ Wireless bluetooth = on wifi = on wwan = none (no device)

hci0(btusb) : bluetooth, not connected wlp61s0(iwlwifi) : wifi, connected, power management = off

+++ Audio /sys/module/snd_hda_intel/parameters/power_save = 0 /sys/module/snd_hda_intel/parameters/power_save_controller = N

+++ PCIe Active State Power Management /sys/module/pcie_aspm/parameters/policy = [default] performance powersave powersupersave (using BIOS preferences)

+++ Runtime Power Management Device blacklist = (not configured) Driver blacklist = amdgpu mei_me nouveau nvidia pcieport radeon

/sys/bus/pci/devices/0000:00:00.0/power/control = on (0x060000, Host bridge, skl_uncore) /sys/bus/pci/devices/0000:00:02.0/power/control = on (0x030000, VGA compatible controller, i915) /sys/bus/pci/devices/0000:00:04.0/power/control = on (0x118000, Signal processing controller, proc_thermal) /sys/bus/pci/devices/0000:00:08.0/power/control = on (0x088000, System peripheral, no driver) /sys/bus/pci/devices/0000:00:14.0/power/control = on (0x0c0330, USB controller, xhci_hcd) /sys/bus/pci/devices/0000:00:14.2/power/control = on (0x118000, Signal processing controller, intel_pch_thermal) /sys/bus/pci/devices/0000:00:15.0/power/control = on (0x118000, Signal processing controller, intel-lpss) /sys/bus/pci/devices/0000:00:16.0/power/control = auto (0x078000, Communication controller, mei_me) /sys/bus/pci/devices/0000:00:1c.0/power/control = on (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:00:1c.4/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:00:1c.6/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:00:1d.0/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:00:1f.0/power/control = on (0x060100, ISA bridge, no driver) /sys/bus/pci/devices/0000:00:1f.2/power/control = on (0x058000, Memory controller, no driver) /sys/bus/pci/devices/0000:00:1f.3/power/control = on (0x040300, Audio device, snd_hda_intel) /sys/bus/pci/devices/0000:00:1f.4/power/control = on (0x0c0500, SMBus, i801_smbus) /sys/bus/pci/devices/0000:00:1f.6/power/control = on (0x020000, Ethernet controller, e1000e) /sys/bus/pci/devices/0000:04:00.0/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:05:00.0/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:05:01.0/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:05:02.0/power/control = auto (0x060400, PCI bridge, pcieport) /sys/bus/pci/devices/0000:06:00.0/power/control = on (0x088000, System peripheral, thunderbolt) /sys/bus/pci/devices/0000:3c:00.0/power/control = on (0x0c0330, USB controller, xhci_hcd) /sys/bus/pci/devices/0000:3d:00.0/power/control = on (0x028000, Network controller, iwlwifi) /sys/bus/pci/devices/0000:3e:00.0/power/control = on (0x010802, Non-Volatile memory controller, nvme)

+++ USB Autosuspend = enabled Device whitelist = (not configured) Device blacklist = (not configured) Bluetooth blacklist = disabled Phone blacklist = disabled WWAN blacklist = disabled

Bus 004 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 3.0 root hub (hub) Bus 003 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 2.0 root hub (hub) Bus 002 Device 002 ID 0bda:0316 control = auto, autosuspend_delay_ms = 2000 -- Realtek Semiconductor Corp. USB3.0-CRW (usb-storage) Bus 002 Device 001 ID 1d6b:0003 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 3.0 root hub (hub) Bus 001 Device 005 ID 04f2:b604 control = auto, autosuspend_delay_ms = 2000 -- Chicony Electronics Co., Ltd Integrated Camera (1280x720@30) (uvcvideo) Bus 001 Device 004 ID 8087:0a2b control = auto, autosuspend_delay_ms = 2000 -- Intel Corp. (btusb) Bus 001 Device 003 ID 04fe:0020 control = on, autosuspend_delay_ms = 2000 -- PFU, Ltd HHKB-Classic (usbhid) Bus 001 Device 002 ID 045e:082a control = on, autosuspend_delay_ms = 2000 -- Microsoft Corp. Microsoft Pro Intellimouse (usbhid) Bus 001 Device 001 ID 1d6b:0002 control = auto, autosuspend_delay_ms = 0 -- Linux Foundation 2.0 root hub (hub)

+++ Battery Features: Charge Thresholds and Recalibrate natacpi = active (data, thresholds) tpacpi-bat = active (recalibrate) tp-smapi = inactive (ThinkPad not supported)

+++ ThinkPad Battery Status: BAT0 (Main / Internal) /sys/class/power_supply/BAT0/manufacturer = LGC /sys/class/power_supply/BAT0/model_name = 01AV478 /sys/class/power_supply/BAT0/cycle_count = 119 /sys/class/power_supply/BAT0/energy_full_design = 57000 [mWh] /sys/class/power_supply/BAT0/energy_full = 51550 [mWh] /sys/class/power_supply/BAT0/energy_now = 48830 [mWh] /sys/class/power_supply/BAT0/power_now = 0 [mW] /sys/class/power_supply/BAT0/status = Unknown (threshold may prevent charging)

/sys/class/power_supply/BAT0/charge_start_threshold = 96 [%] /sys/class/power_supply/BAT0/charge_stop_threshold = 100 [%] tpacpi-bat.BAT0.forceDischarge = 0

Charge = 94.7 [%] Capacity = 90.4 [%]

+++ Recommendations

ratboy777 commented 4 years ago

Doing some further investigating it now seems for whatever reason TLP will start charging when my laptop is at 93% or lower despite the threshold settings. fullcharge and setcharge still dont appear to be working.

linrunner commented 4 years ago

Hi,

with your current settings, i.e. no thresholds configured, TLP has no effect at all on charging. I'm afraid you'll have to look for the cause somewhere else.

ratboy777 commented 4 years ago

I suppose based on the config it looks like I had been using defaults the whole time, but I have tried to change them in the config file. I later set everything back to default since writing to the config file and rebooting didn't change the shown threshold values in tlp-stat -b. Also changing them with setcharge didn't work either. The only way to change them was to echo directly to /sys/class/power_supply/BAT0/charge_start_threshold. Anyway perhaps another program is interfering or there is an incompatibility in the 5.7.0 kernel with natacpi or something. Thanks for the fast response and for the amazing TLP program.

linrunner commented 4 years ago

I don't know what you tried in the config file, but maybe you didn't uncomment the settings. "Didn't work" is not a useful description.

Nevertheless, your output clearly shows that currently thresholds are not set:

/sys/class/power_supply/BAT0/charge_start_threshold = 96 [%] /sys/class/power_supply/BAT0/charge_stop_threshold = 100 [%]

96/100 are the factory defaults. Shown are the natacpi files which TLP uses.

If thresholds refuse to change or have no (or wrong) effect, then the EC firmware (ECP) is your prime suspect. Normally I would have suggested to update it, but your BIOS is already up to date (1.42) and should be accompanied by ECP 1.21.

A somewhat similar case is described the FAQ

Good luck.

ratboy777 commented 4 years ago

I did uncomment and change those values, but since I was still having problems I restored the original config file. When I would change the values in the config nothing would change in /sys/class/power_supply/BAT0/charge_stop_threshold or /sys/class/power_supply/BAT0/charge_start_threshold. Just to clarify. Following that guide in the FAQ is probably what got it to start charging again since that was one of the things I tried. I also upgraded the BIOS when troubleshooting this problem initially (from 1.3.4 to current iirc) but that seemed to have no effect. Anyway thank you again for helping to troubleshoot. I just thought you might be interested in knowing about this problem since it seems the firmware on the T480s has not played nicely with TLP in the past based on some reports I've seen.