Open linrunner opened 3 weeks ago
With this fixed:
# tlp-stat -s -b
--- TLP 1.7.0 --------------------------------------------
+++ System Info
System = Framework A7 Laptop 13 (AMD Ryzen 7040Series)
BIOS = 03.05
OS Release = Arch Linux
Kernel = 6.12.0-rc1-00312-g798df27d5d3f #12 SMP PREEMPT_DYNAMIC Sat Oct 5 09:18:53 CEST 2024 x86_64
/proc/cmdline = initrd=\initramfs-linux-upstream.img rw cryptdevice=/dev/nvme0n1p3:system:discard root=/dev/mapper/system
Init system = systemd
Boot mode = UEFI
Suspend mode = [s2idle]
+++ TLP Status
State = enabled
RDW state = not installed
Last run = 09:36:13, 420 sec(s) ago
Mode = AC
Power source = AC
+++ Battery Care
Plugin: framework
Supported features: charge thresholds
Driver usage:
* natacpi (cros_charge_control) = active (charge thresholds)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1: 0(off)..99
* STOP_CHARGE_THRESH_BAT0/1: 1..100(default)
+++ Battery Status: BAT1
/sys/class/power_supply/BAT1/manufacturer = NVT
/sys/class/power_supply/BAT1/model_name = FRANGWA
/sys/class/power_supply/BAT1/cycle_count = 38
/sys/class/power_supply/BAT1/charge_full_design = 3915 [mWh] *
/sys/class/power_supply/BAT1/charge_full = 3522 [mWh] *
/sys/class/power_supply/BAT1/charge_now = 3522 [mWh] *
/sys/class/power_supply/BAT1/current_now = 0 [mW] *
/sys/class/power_supply/BAT1/status = Not charging
/sys/class/power_supply/BAT1/charge_control_start_threshold = 0 [%]
/sys/class/power_supply/BAT1/charge_control_end_threshold = 100 [%]
/sys/class/power_supply/BAT1/charge_behaviour = [auto] inhibit-charge force-discharge
Charge = 100.0 [%]
Capacity = 90.0 [%]
[~/src/tlp]$ sudo clitest unit-tests/charge-thresholds_framework
#1 # +++ Framework laptops +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#2 #
#3 # --- tlp start
#4 sudo tlp start -- START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1= START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#5 sudo tlp start -- START_CHARGE_THRESH_BAT1="60" STOP_CHARGE_THRESH_BAT1="100" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#6 sudo tlp start -- START_CHARGE_THRESH_BAT1="100" STOP_CHARGE_THRESH_BAT1="100" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#7 sudo tlp start -- START_CHARGE_THRESH_BAT1="0" STOP_CHARGE_THRESH_BAT1="0" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#8 sudo tlp start -- START_CHARGE_THRESH_BAT1="0" STOP_CHARGE_THRESH_BAT1="101" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#9 sudo tlp start -- START_CHARGE_THRESH_BAT1="97" STOP_CHARGE_THRESH_BAT1="97" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#10 sudo tlp start -- START_CHARGE_THRESH_BAT1="95" STOP_CHARGE_THRESH_BAT1="96" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#11 sudo tlp start -- START_CHARGE_THRESH_BAT1="DEF" STOP_CHARGE_THRESH_BAT1="DEF" START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0=
#12 sudo tlp start -- NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT1="DEF" STOP_CHARGE_THRESH_BAT1="DEF"
#13 #
#14 # --- tlp setcharge w/o arguments
#15 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="60" STOP_CHARGE_THRESH_BAT1="100" X_SOC_CHECK=0
#16 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="100" STOP_CHARGE_THRESH_BAT1="100"
#17 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="0" STOP_CHARGE_THRESH_BAT1="0"
#18 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="0" STOP_CHARGE_THRESH_BAT1="101"
#19 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="97" STOP_CHARGE_THRESH_BAT1="97"
#20 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="95" STOP_CHARGE_THRESH_BAT1="96"
#21 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="95" STOP_CHARGE_THRESH_BAT1="96"
#22 sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="DEF" STOP_CHARGE_THRESH_BAT1="DEF"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #22, line 56] sudo tlp setcharge -- START_CHARGE_THRESH_BAT1="DEF" STOP_CHARGE_THRESH_BAT1="DEF"
@@ -1,3 +1,3 @@
Setting temporary charge thresholds for BAT1:
- stop = 100
start = 0
+ stop = 100
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#23 sudo tlp setcharge -- NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT1="DEF" STOP_CHARGE_THRESH_BAT1="DEF"
#24 #
#25 # --- tlp setcharge w/ arguments
#26 sudo tlp setcharge 60 100 -- X_SOC_CHECK=0
#27 sudo tlp setcharge 100 100
#28 sudo tlp setcharge 0 0
#29 sudo tlp setcharge 0 101
#30 sudo tlp setcharge XYZZY 0
#31 sudo tlp setcharge 0 XYZZY
#32 sudo tlp setcharge 97 97
#33 sudo tlp setcharge 95 96
#34 sudo tlp setcharge 95 96 -- X_THRESH_SIMULATE_READERR="1"
#35 sudo tlp setcharge 95 96
#36 sudo tlp setcharge DEF DEF
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #36, line 90] sudo tlp setcharge DEF DEF
@@ -1,3 +1,3 @@
Setting temporary charge thresholds for BAT1:
- stop = 100
start = 0
+ stop = 100
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#37 sudo tlp setcharge BAT0
#38 sudo tlp setcharge 0 3 BAT0
#39 sudo tlp setcharge XYZZY ABCDE BAT0
#40 #
#41 # --- tlp-stat
#42 # steps require a kernel >= 5.17 -- with 'charge_behaviour'
#43 sudo tlp-stat -b | grep -E 'charge_(control|behaviour)'
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #43, line 103] sudo tlp-stat -b | grep -E 'charge_(control|behaviour)'
@@ -1,3 +1,4 @@
+* natacpi (cros_charge_control) = active (charge thresholds)
/sys/class/power_supply/BAT1/charge_control_start_threshold = 0 [%]
/sys/class/power_supply/BAT1/charge_control_end_threshold = 100 [%]
/sys/class/power_supply/BAT1/charge_behaviour = [auto] inhibit-charge force-discharge
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#44 sudo tlp-stat -b -- X_THRESH_SIMULATE_READERR=1 | grep -E 'charge_(control|behaviour)'
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #44, line 107] sudo tlp-stat -b -- X_THRESH_SIMULATE_READERR=1 | grep -E 'charge_(control|behaviour)'
@@ -1,3 +1,4 @@
+* natacpi (cros_charge_control) = active (charge thresholds)
/sys/class/power_supply/BAT1/charge_control_start_threshold = (not available) [%]
/sys/class/power_supply/BAT1/charge_control_end_threshold = (not available) [%]
/sys/class/power_supply/BAT1/charge_behaviour = [auto] inhibit-charge force-discharge
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#45 #
#46 # --- Reset test machine to configured thresholds
#47 sudo tlp setcharge > /dev/null 2>&1
#48 #
FAIL: 4 of 48 tests failed
[~/src/tlp]$ sudo clitest unit-tests/charge-thresholds_framework-simulate
#1 # +++ Framework laptops +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#2 #
#3 # --- tlp start
#4 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0= START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
#5 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
#6 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="100" STOP_CHARGE_THRESH_BAT0="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #6, line 15] sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="100" STOP_CHARGE_THRESH_BAT0="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
@@ -1,2 +1 @@
-Error in configuration at START_CHARGE_THRESH_BAT0="100": not specified, invalid or out of range (0..99). Battery skipped.
TLP started in AC mode (auto).
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#7 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #7, line 18] sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
@@ -1,2 +1 @@
-Error in configuration at STOP_CHARGE_THRESH_BAT0="0": not specified, invalid or out of range (1..100). Battery skipped.
TLP started in AC mode (auto).
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#8 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="101" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #8, line 21] sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="101" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
@@ -1,2 +1 @@
-Error in configuration at STOP_CHARGE_THRESH_BAT0="101": not specified, invalid or out of range (1..100). Battery skipped.
TLP started in AC mode (auto).
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#9 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="97" STOP_CHARGE_THRESH_BAT0="97" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #9, line 24] sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="97" STOP_CHARGE_THRESH_BAT0="97" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
@@ -1,2 +1 @@
-Error in configuration: START_CHARGE_THRESH_BAT0 >= STOP_CHARGE_THRESH_BAT0. Battery skipped.
TLP started in AC mode (auto).
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#10 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="96" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
#11 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
#12 sudo tlp start -- X_BAT_PLUGIN_SIMULATE=framework NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
#13 #
#14 # --- tlp setcharge w/o arguments
#15 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" X_SOC_CHECK=0
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #15, line 35] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" X_SOC_CHECK=0
@@ -1,3 +0,0 @@
-Setting temporary charge thresholds for BAT0:
- start = 60
- stop = 100 (no change)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#16 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="100" STOP_CHARGE_THRESH_BAT0="100"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #16, line 39] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="100" STOP_CHARGE_THRESH_BAT0="100"
@@ -1 +0,0 @@
-Error in configuration at START_CHARGE_THRESH_BAT0="100": not specified, invalid or out of range (0..99). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#17 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #17, line 41] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0"
@@ -1 +0,0 @@
-Error in configuration at STOP_CHARGE_THRESH_BAT0="0": not specified, invalid or out of range (1..100). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#18 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="101"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #18, line 43] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="101"
@@ -1 +0,0 @@
-Error in configuration at STOP_CHARGE_THRESH_BAT0="101": not specified, invalid or out of range (1..100). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#19 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="97" STOP_CHARGE_THRESH_BAT0="97"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #19, line 45] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="97" STOP_CHARGE_THRESH_BAT0="97"
@@ -1 +0,0 @@
-Error in configuration: START_CHARGE_THRESH_BAT0 >= STOP_CHARGE_THRESH_BAT0. Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#20 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="96"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #20, line 47] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="96"
@@ -1,3 +0,0 @@
-Setting temporary charge thresholds for BAT0:
- start = 95
- stop = 96
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#21 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="96"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #21, line 51] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="96"
@@ -1,3 +0,0 @@
-Setting temporary charge thresholds for BAT0:
- start = 95 (no change)
- stop = 96 (no change)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#22 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #22, line 55] sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
@@ -1,3 +0,0 @@
-Setting temporary charge thresholds for BAT0:
- start = 0
- stop = 100
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#23 sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=framework NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
#24 #
#25 # --- tlp setcharge w/ arguments
#26 sudo tlp setcharge 60 100 -- X_BAT_PLUGIN_SIMULATE=framework X_SOC_CHECK=0
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #26, line 63] sudo tlp setcharge 60 100 -- X_BAT_PLUGIN_SIMULATE=framework X_SOC_CHECK=0
@@ -1,3 +1,3 @@
-Setting temporary charge thresholds for BAT0:
+Setting temporary charge thresholds for BAT1:
start = 60
stop = 100 (no change)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#27 sudo tlp setcharge 100 100 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #27, line 67] sudo tlp setcharge 100 100 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: start charge threshold (100) for BAT0 is not specified, invalid or out of range (0..99). Aborted.
+Error: start charge threshold (100) for BAT1 is not specified, invalid or out of range (0..99). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#28 sudo tlp setcharge 0 0 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #28, line 69] sudo tlp setcharge 0 0 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: stop charge threshold (0) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
+Error: stop charge threshold (0) for BAT1 is not specified, invalid or out of range (1..100). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#29 sudo tlp setcharge 0 101 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #29, line 71] sudo tlp setcharge 0 101 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: stop charge threshold (101) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
+Error: stop charge threshold (101) for BAT1 is not specified, invalid or out of range (1..100). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#30 sudo tlp setcharge XYZZY 0 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #30, line 73] sudo tlp setcharge XYZZY 0 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: start charge threshold (XYZZY) for BAT0 is not specified, invalid or out of range (0..99). Aborted.
+Error: start charge threshold (XYZZY) for BAT1 is not specified, invalid or out of range (0..99). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#31 sudo tlp setcharge 0 XYZZY -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #31, line 75] sudo tlp setcharge 0 XYZZY -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: stop charge threshold (XYZZY) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
+Error: stop charge threshold (XYZZY) for BAT1 is not specified, invalid or out of range (1..100). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#32 sudo tlp setcharge 97 97 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #32, line 77] sudo tlp setcharge 97 97 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: start threshold >= stop threshold for BAT0. Aborted.
+Error: start threshold >= stop threshold for BAT1. Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#33 sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #33, line 79] sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1,3 +1,3 @@
-Setting temporary charge thresholds for BAT0:
+Setting temporary charge thresholds for BAT1:
start = 95
stop = 96
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#34 sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework X_THRESH_SIMULATE_READERR="1"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #34, line 83] sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework X_THRESH_SIMULATE_READERR="1"
@@ -1 +1 @@
-Error: could not read current charge threshold(s) for BAT0. Aborted.
+Error: could not read current charge threshold(s) for BAT1. Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#35 sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #35, line 85] sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
@@ -1,3 +1,3 @@
-Setting temporary charge thresholds for BAT0:
+Setting temporary charge thresholds for BAT1:
start = 95
stop = 96
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#36 sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #36, line 89] sudo tlp setcharge 95 96 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1,3 +1,3 @@
-Setting temporary charge thresholds for BAT0:
+Setting temporary charge thresholds for BAT1:
start = 95 (no change)
stop = 96 (no change)
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#37 sudo tlp setcharge DEF DEF -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #37, line 93] sudo tlp setcharge DEF DEF -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1,3 +1,3 @@
-Setting temporary charge thresholds for BAT0:
- stop = 100
+Setting temporary charge thresholds for BAT1:
start = 0
+ stop = 100
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#38 sudo tlp setcharge BAT1 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #38, line 97] sudo tlp setcharge BAT1 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +0,0 @@
-Error: battery BAT1 not present.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#39 sudo tlp setcharge 0 3 BAT1 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #39, line 99] sudo tlp setcharge 0 3 BAT1 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1,3 @@
-Error: battery BAT1 not present.
+Setting temporary charge thresholds for BAT1:
+ start = 0 (no change)
+ stop = 3
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#40 sudo tlp setcharge XYZZY ABCDE BAT1 -- X_BAT_PLUGIN_SIMULATE=framework
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #40, line 101] sudo tlp setcharge XYZZY ABCDE BAT1 -- X_BAT_PLUGIN_SIMULATE=framework
@@ -1 +1 @@
-Error: battery BAT1 not present.
+Error: start charge threshold (XYZZY) for BAT1 is not specified, invalid or out of range (0..99). Aborted.
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#41 #
#42 # --- tlp-stat
#43 # steps require a kernel >= 5.17 -- with 'charge_behaviour'
#44 sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=framework | grep -E 'charge_(control|behaviour)'
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #44, line 106] sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=framework | grep -E 'charge_(control|behaviour)'
@@ -1,3 +1,4 @@
-/sys/class/power_supply/BAT0/charge_control_start_threshold = 0 [%]
-/sys/class/power_supply/BAT0/charge_control_end_threshold = 100 [%]
-/sys/class/power_supply/BAT0/charge_behaviour = [auto] inhibit-charge force-discharge
+* natacpi (cros_charge_control) = active (charge thresholds)
+/sys/class/power_supply/BAT1/charge_control_start_threshold = 0 [%]
+/sys/class/power_supply/BAT1/charge_control_end_threshold = 3 [%]
+/sys/class/power_supply/BAT1/charge_behaviour = [auto] inhibit-charge force-discharge
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#45 sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=framework X_THRESH_SIMULATE_READERR=1 | grep -E 'charge_(control|behaviour)'
----------------------------------------------------------------------------------------------------------------------------------------------------------------
[FAILED #45, line 110] sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=framework X_THRESH_SIMULATE_READERR=1 | grep -E 'charge_(control|behaviour)'
@@ -1,3 +1,4 @@
-/sys/class/power_supply/BAT0/charge_control_start_threshold = (not available) [%]
-/sys/class/power_supply/BAT0/charge_control_end_threshold = (not available) [%]
-/sys/class/power_supply/BAT0/charge_behaviour = [auto] inhibit-charge force-discharge
+* natacpi (cros_charge_control) = active (charge thresholds)
+/sys/class/power_supply/BAT1/charge_control_start_threshold = (not available) [%]
+/sys/class/power_supply/BAT1/charge_control_end_threshold = (not available) [%]
+/sys/class/power_supply/BAT1/charge_behaviour = [auto] inhibit-charge force-discharge
----------------------------------------------------------------------------------------------------------------------------------------------------------------
#46 #
#47 # --- Reset test machine to configured thresholds
#48 sudo tlp setcharge BAT0 > /dev/null 2>&1
#49 #
FAIL: 29 of 49 tests failed
- The vendor check actually reads the model_name, so always fails.
Thanks, I now check if /sys/class/dmi/id/sys_vendor is "Framework".
[~/src/tlp]$ sudo clitest unit-tests/charge-thresholds_framework
Improved. Please test again.
[~/src/tlp]$ sudo clitest unit-tests/charge-thresholds_framework-simulate
Oh, no! Do not run this: It only works as a simulation on a ThinkPad (for my dev qa) not on real Framework hardware ...
The fact that the mAh/mA sysfiles read plausible values is new to me:
/sys/class/power_supply/BAT1/charge_full_design = 3915 [mWh] /sys/class/power_supply/BAT1/charge_full = 3522 [mWh] /sys/class/power_supply/BAT1/charge_now = 3522 [mWh] /sys/class/power_supply/BAT1/current_now = 0 [mW]
I only know of implausible values that are presumably to be interpreted as mWh/mW, see here.
+++ System Info System = Framework AA Laptop BIOS = 03.17
++ Battery Care
+++ Battery Status: BAT1 /sys/class/power_supply/BAT1/manufacturer = NVT /sys/class/power_supply/BAT1/model_name = Framewo /sys/class/power_supply/BAT1/charge_full_design = 35720 [mAh] /sys/class/power_supply/BAT1/charge_full = 31970 [mAh] /sys/class/power_supply/BAT1/charge_now = 14530 [mAh] /sys/class/power_supply/BAT1/current_now = 1 [mA]
A well-known coreboot disease. Doesn't seem to be the case with your model then, I have removed the coreboot workaround.
Please show
sudo tlp-stat -s -b -v
again.
$ sudo clitest unit-tests/charge-thresholds_framework
#1 # +++ Framework laptops ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
...
OK: 48 of 48 tests passed
$ sudo tlp-stat -s -b -v
--- TLP 1.7.0 --------------------------------------------
+++ System Info
System = Framework A7 Laptop 13 (AMD Ryzen 7040Series)
BIOS = 03.05
OS Release = Arch Linux
Kernel = 6.12.0-rc1-00308-g695f7def8da4 #14 SMP PREEMPT_DYNAMIC Sat Oct 5 10:06:10 CEST 2024 x86_64
/proc/cmdline = initrd=\initramfs-linux-upstream.img rw cryptdevice=/dev/nvme0n1p3:system:discard root=/dev/mapper/system
Init system = systemd
Boot mode = UEFI
Suspend mode = [s2idle]
+++ TLP Status
State = enabled
RDW state = not installed
Last run = 15:51:02, 52 sec(s) ago
Mode = AC
Power source = AC
+++ Battery Care
Plugin: framework
Supported features: charge thresholds
Driver usage:
* natacpi (cros_charge_control) = active (charge thresholds)
Parameter value ranges:
* START_CHARGE_THRESH_BAT0/1: 0(off)..99
* STOP_CHARGE_THRESH_BAT0/1: 1..100(default)
+++ Battery Status: BAT1
/sys/class/power_supply/BAT1/manufacturer = NVT
/sys/class/power_supply/BAT1/model_name = FRANGWA
/sys/class/power_supply/BAT1/cycle_count = 38
/sys/class/power_supply/BAT1/charge_full_design = 3915 [mAh]
/sys/class/power_supply/BAT1/charge_full = 3483 [mAh]
/sys/class/power_supply/BAT1/charge_now = 844 [mAh]
/sys/class/power_supply/BAT1/current_now = 2438 [mA]
/sys/class/power_supply/BAT1/status = Charging
/sys/class/power_supply/BAT1/voltage_min_design = 15480 [mV]
/sys/class/power_supply/BAT1/voltage_now = 16204 [mV]
/sys/class/power_supply/BAT1/charge_control_start_threshold = 0 [%]
/sys/class/power_supply/BAT1/charge_control_end_threshold = 100 [%]
/sys/class/power_supply/BAT1/charge_behaviour = [auto] inhibit-charge force-discharge
Charge = 24.2 [%]
Capacity = 89.0 [%]
A well-known coreboot disease. Doesn't seem to be the case with your model then, I have removed the coreboot workaround.
Only the Framework Chromebook uses coreboot. That's not the case for my machine.
@t-8ch LGTM :-). Thank you for testing.
@t-8ch I have finished the second stage of the plugin with discharge/recalibrate. Please test it with
sudo tlp discharge
You can force an earlier end to the discharging process by specifying a certain charge level (in mAh) with the debug parameter X_BAT_DISCHG_END
. Example:
sudo tlp discharge -- X_BAT_DISCHG_END=3000
I would also like to ask for your feedback on the safety message:
Caution: discharge/recalibrate operation is blocked for safety reasons.
Your laptop's EC firmware will not stop until the battery is completely discharged. This will cause the laptop to suddenly power off, which can lead to data loss and data corruption. TLP will stop discharging before this happens, but it can't respond to unforeseen battery behavior.
Add CHROMEOS_EC_UNBLOCK_DISCHARGE=1 to your configuration to accept the risk and unblock discharge/recalibrate. Make sure all data is saved and backups are in place.
@t-8ch After I found a tester by chance, I converted the plugin from a framework-specific to a generic one for all laptops with ChromeOS EC. See 1st post.
The automatic test script moves to unit-tests/charge-thresholds_chromeos-ec-BAT1
Doesn't seem to be working on my Framework 16, even though the cros_charge_control
kmod is loaded.
$ sudo tlp-stat -s -b -v
--- TLP 1.8.0-alpha.0 --------------------------------------------
+++ System Info
System = Framework AG Laptop 16 (AMD Ryzen 7040 Series)
BIOS = 03.03
OS Release = NixOS 24.11 (Vicuna)
Kernel = 6.11.3-xanmod1 #1-NixOS SMP PREEMPT_DYNAMIC Tue Jan 1 00:00:00 UTC 1980 x86_64
/proc/cmdline = init=/nix/store/xic0jg2pw0d635v9x4f1xhpvqmvbm84h-nixos-system-hipparchus-24.11.20241018.4c2fcb0/init amd_pstate=active root=fstab loglevel=4 vt.default_red=0x29,0xbf,0xa3,0xeb,0x81,0xb4,0x88,0xec,0x43,0xcb,0xb2,0xee,0x9a,0xc0,0x99,0xe5 vt.default_grn=0x2e,0x61,0xbe,0xcb,0xa1,0x8e,0xc0,0xef,0x4c,0x8d,0xcc,0xd5,0xb3,0xa5,0xce,0xe9 vt.default_blu=0x38,0x6a,0x8c,0x8b,0xc1,0xad,0xd0,0xf4,0x5e,0x92,0x9c,0xaa,0xce,0xbb,0xdd,0xf0
Init system = systemd
Boot mode = UEFI
Suspend mode = [s2idle]
+++ TLP Status
State = enabled
RDW state = enabled
Last run = 03:53:31 PM, 314 sec(s) ago
Mode = AC
Power source = AC
+++ Battery Care
Plugin: chromeos-ec
Supported features: none available
Driver usage:
* natacpi (cros_charge_control) = inactive (laptop not supported, incompatible firmware)
+++ Battery Status: BAT1
/sys/class/power_supply/BAT1/manufacturer = NVT
/sys/class/power_supply/BAT1/model_name = FRANDBA
/sys/class/power_supply/BAT1/cycle_count = 28
/sys/class/power_supply/BAT1/charge_full_design = 5491 [mAh]
/sys/class/power_supply/BAT1/charge_full = 5583 [mAh]
/sys/class/power_supply/BAT1/charge_now = 4748 [mAh]
/sys/class/power_supply/BAT1/current_now = 0 [mA]
/sys/class/power_supply/BAT1/status = Charging
/sys/class/power_supply/BAT1/voltage_min_design = 15480 [mV]
/sys/class/power_supply/BAT1/voltage_now = 16990 [mV]
Charge = 85.0 [%]
Capacity = 101.7 [%]
$ lsmod | grep cros_charge_control
cros_charge_control 16384 0
battery 28672 2 cros_charge_control,framework_laptop
@MithicSpirit please show the output of
grep . /sys/class/power_supply/BAT1/*
$ grep . /sys/class/power_supply/BAT1/*
/sys/class/power_supply/BAT1/alarm:550000
/sys/class/power_supply/BAT1/capacity:85
/sys/class/power_supply/BAT1/capacity_level:Normal
/sys/class/power_supply/BAT1/charge_control_end_threshold:85
/sys/class/power_supply/BAT1/charge_full:5595000
/sys/class/power_supply/BAT1/charge_full_design:5491000
/sys/class/power_supply/BAT1/charge_now:4759000
/sys/class/power_supply/BAT1/current_now:0
/sys/class/power_supply/BAT1/cycle_count:28
grep: /sys/class/power_supply/BAT1/device: Is a directory
grep: /sys/class/power_supply/BAT1/hwmon3: Is a directory
/sys/class/power_supply/BAT1/manufacturer:NVT
/sys/class/power_supply/BAT1/model_name:FRANDBA
grep: /sys/class/power_supply/BAT1/power: Is a directory
/sys/class/power_supply/BAT1/present:1
/sys/class/power_supply/BAT1/serial_number:0342
/sys/class/power_supply/BAT1/status:Charging
grep: /sys/class/power_supply/BAT1/subsystem: Is a directory
/sys/class/power_supply/BAT1/technology:Li-ion
/sys/class/power_supply/BAT1/type:Battery
/sys/class/power_supply/BAT1/uevent:DEVTYPE=power_supply
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_NAME=BAT1
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_TYPE=Battery
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_STATUS=Charging
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_PRESENT=1
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_TECHNOLOGY=Li-ion
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CYCLE_COUNT=28
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_VOLTAGE_MIN_DESIGN=15480000
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_VOLTAGE_NOW=16996000
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CURRENT_NOW=0
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CHARGE_FULL_DESIGN=5491000
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CHARGE_FULL=5595000
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CHARGE_NOW=4759000
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CAPACITY=85
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_CAPACITY_LEVEL=Normal
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_MODEL_NAME=FRANDBA
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_MANUFACTURER=NVT
/sys/class/power_supply/BAT1/uevent:POWER_SUPPLY_SERIAL_NUMBER=0342
/sys/class/power_supply/BAT1/voltage_min_design:15480000
/sys/class/power_supply/BAT1/voltage_now:16996000
@MithicSpirit
/sys/class/power_supply/BAT1/charge_control_end_threshold:85
The out-of-tree module _frameworklaptop is loaded and has moved in front of _croscharge-control. Unfortunately, atm I don't know how to prevent this. Try to unload _frameworklaptop and _croscharge-control, then load _croscharge-control only.
Doesn't seem to fix it. I'll try disabling the framework_laptop module later when I have time.
@MithicSpirit I have now restored the original plugin for the _frameworklaptop module which support only a stop threshold. You need to install /usr/share/tlp/bat.d/55-chromeos-ec and /usr/share/tlp/bat.d/56-framework. Then show
sudo tlp-stat -s -b -v
Seems to be working now.
$ sudo tlp-stat -s -b -v
--- TLP 1.8.0-alpha.0 --------------------------------------------
+++ System Info
System = Framework AG Laptop 16 (AMD Ryzen 7040 Series)
BIOS = 03.03
OS Release = NixOS 24.11 (Vicuna)
Kernel = 6.11.3-xanmod1 #1-NixOS SMP PREEMPT_DYNAMIC Tue Jan 1 00:00:00 UTC 1980 x86_64
/proc/cmdline = init=/nix/store/2cvwm5nzb7gs2sinsjy7a44ypkl6rc0c-nixos-system-hipparchus-24.11.20241020.1997e4a/init amd_pstate=active root=fstab loglevel=4 vt.default_red=0x29,0xbf,0xa3,0xeb,0x81,0xb4,0x88,0xec,0x43,0xcb,0xb2,0xee,0x9a,0xc0,0x99,0xe5 vt.default_grn=0x2e,0x61,0xbe,0xcb,0xa1,0x8e,0xc0,0xef,0x4c,0x8d,0xcc,0xd5,0xb3,0xa5,0xce,0xe9 vt.default_blu=0x38,0x6a,0x8c,0x8b,0xc1,0xad,0xd0,0xf4,0x5e,0x92,0x9c,0xaa,0xce,0xbb,0xdd,0xf0
Init system = systemd
Boot mode = UEFI
Suspend mode = [s2idle]
+++ TLP Status
State = enabled
RDW state = enabled
Last run = 10:03:07 AM, 18 sec(s) ago
Mode = AC
Power source = AC
+++ Battery Care
Plugin: framework
Supported features: charge threshold
Driver usage:
* natacpi (framework_laptop) = active (charge thresholds)
Parameter value ranges:
* STOP_CHARGE_THRESH_BAT0/1: 1..100(default)
+++ Battery Status: BAT1
/sys/class/power_supply/BAT1/manufacturer = NVT
/sys/class/power_supply/BAT1/model_name = FRANDBA
/sys/class/power_supply/BAT1/cycle_count = 28
/sys/class/power_supply/BAT1/charge_full_design = 5491 [mAh]
/sys/class/power_supply/BAT1/charge_full = 5505 [mAh]
/sys/class/power_supply/BAT1/charge_now = 4674 [mAh]
/sys/class/power_supply/BAT1/current_now = 1055 [mA]
/sys/class/power_supply/BAT1/status = Discharging
/sys/class/power_supply/BAT1/voltage_min_design = 15480 [mV]
/sys/class/power_supply/BAT1/voltage_now = 16579 [mV]
/sys/class/power_supply/BAT1/charge_control_end_threshold = 80 [%]
Charge = 84.9 [%]
Capacity = 100.3 [%]
@MithicSpirit lhe framework plugin is intended as a fallback in case you need _frameworklaptop for reasons other than battery care. I would be happy if you could still blacklist _frameworklaptop and then test the extended functionality of the chromeos-ec plugin based on the _croscharge-control module.
Based on the preliminary work from @chutz, here is a rewrite of the plugin requiring the new driver _croscharge-control released with [EDIT] Linux 6.11.
EDIT: the plugin has been converted from a framework-specific to a generic one for all laptops with ChromeOS EC. It supports the following hardware:
For the test you either need TLP 1.7.0, supplemented by the download of /usr/share/tlp/bat.d/55-chromeos-ec, or you can build a package for your distribution based on Branch feature/bat.d/framework.
I need at least the output of
If the plugin is properly activated, the output contains this:
Only if the plugin is properly activated Depending on whether the battery name is BAT0 or BAT1 (check
tlp-stat -b
output), start the corresponding automatic test script (with sudo or as root) and show the output:It requires the tool clitest to be installed. Should be available as a package in most distributions.
References:
@t-8ch @Simerax @chutz