#!/usr/bin/env clitest
# Test charge thresholds for non-ThinkPads (simulated) - Part 1: ASUS..LG
# Requirements:
# * Hardware: non-legacy ThinkPad
# Copyright (c) 2024 Thomas Koch <linrunner at gmx.net>.
# SPDX-License-Identifier: GPL-2.0-or-later
#
$ # +++ ASUS +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ #
$ # --- initialize
$ sudo tlp start -- START_CHARGE_THRESH_BAT0="35" STOP_CHARGE_THRESH_BAT0="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ #
$ # --- tlp start
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0= START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
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).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="101" START_CHARGE_THRESH_BAT$
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).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="86" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
Notice: some ASUS laptops silently ignore charge thresholds other than 40, 60 or 80. Please check if STOP_CHARGE_THRESH_BAT0="86" works as expected.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=asus NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
TLP started in AC mode (auto).
$ #
$ # --- tlp setcharge w/o arguments
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100"
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0"
Error in configuration at STOP_CHARGE_THRESH_BAT0="0": not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="101"
Error in configuration at STOP_CHARGE_THRESH_BAT0="101": not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="ABCDE" STOP_CHARGE_THRESH_BAT0="XYZZY"
Error in configuration at STOP_CHARGE_THRESH_BAT0="XYZZY": not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="97" STOP_CHARGE_THRESH_BAT0="100"
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="86" X_SOC_CHECK=0
Notice: some ASUS laptops silently ignore charge thresholds other than 40, 60 or 80. Please check if STOP_CHARGE_THRESH_BAT0="86" works as expected.
Setting temporary charge threshold for BAT0:
  stop  =  86
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="80" X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  =  80
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="80" X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  =  80
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=asus NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
Error: battery charge thresholds not available.
$ #
$ # --- tlp setcharge w/ arguments
$ sudo tlp setcharge 60 100 -- X_BAT_PLUGIN_SIMULATE=asus
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge 0 0 -- X_BAT_PLUGIN_SIMULATE=asus
Error: stop charge threshold (0) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge 0 101 -- X_BAT_PLUGIN_SIMULATE=asus
Error: stop charge threshold (101) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge ABCDE 0 -- X_BAT_PLUGIN_SIMULATE=asus
Error: stop charge threshold (0) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge 0 XYZZY -- X_BAT_PLUGIN_SIMULATE=asus
Error: stop charge threshold (XYZZY) for BAT0 is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge 97 100 -- X_BAT_PLUGIN_SIMULATE=asus
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge 95 66 -- X_BAT_PLUGIN_SIMULATE=asus X_SOC_CHECK=0
Notice: some ASUS laptops silently ignore charge thresholds other than 40, 60 or 80. Please check if 66 works as expected.
Setting temporary charge threshold for BAT0:
  stop  =  66
$ sudo tlp setcharge 95 60 -- X_BAT_PLUGIN_SIMULATE=asus X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  =  60
$ sudo tlp setcharge 95 60 -- X_BAT_PLUGIN_SIMULATE=asus X_THRESH_SIMULATE_START="35" X_THRESH_SIMULATE_STOP="100" X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  =  60
$ sudo tlp setcharge 95 60 -- X_BAT_PLUGIN_SIMULATE=asus X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  =  60
$ sudo tlp setcharge DEF DEF -- X_BAT_PLUGIN_SIMULATE=asus
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge BAT1 -- X_BAT_PLUGIN_SIMULATE=asus
Error: battery BAT1 not present.
$ sudo tlp setcharge 0 3 BAT1 -- X_BAT_PLUGIN_SIMULATE=asus
Error: battery BAT1 not present.
$ sudo tlp setcharge XYZZY ABCDE BAT1 -- X_BAT_PLUGIN_SIMULATE=asus
Error: battery BAT1 not present.
$ #
$ # --- tlp-stat
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=asus | grep "charge_control_end_threshold"
/sys/class/power_supply/BAT0/charge_control_end_threshold   =    100 [%]
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=asus X_THRESH_SIMULATE_READERR=1 | grep "charge_control_end_threshold"
/sys/class/power_supply/BAT0/charge_control_end_threshold   = (not available) [%]
$ #
$ # +++ Huawei ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ #
$ # --- tlp start
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0= X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" X_THRESH_SIMULATE_START="59" X_THRESH_SIMULATE_STOP="99"
Error: writing charge thresholds failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Error: writing charge thresholds failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="100" X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Error: writing charge thresholds failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="100" STOP_CHARGE_THRESH_BAT0="100"  X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Error in configuration at START_CHARGE_THRESH_BAT0="100": not specified, invalid or out of range (0..99). Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0"
Error in configuration at STOP_CHARGE_THRESH_BAT0="0": not specified, invalid or out of range (1..100). Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="1" STOP_CHARGE_THRESH_BAT0="101"
Error in configuration at STOP_CHARGE_THRESH_BAT0="101": not specified, invalid or out of range (1..100). Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="99" STOP_CHARGE_THRESH_BAT0="98"
Error in configuration: START_CHARGE_THRESH_BAT0 > STOP_CHARGE_THRESH_BAT0. Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="95" X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Error: writing charge thresholds failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" X_THRESH_SIMULATE_START="0" X_THRESH_SIMULATE_STOP="100"
Error: writing charge thresholds failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=huawei NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
TLP started in AC mode (auto).
$ #
$ # --- tlp setcharge w/o arguments
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="60" STOP_CHARGE_THRESH_BAT0="100" X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 60, stop = 100 (Error: write failed)
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="99" STOP_CHARGE_THRESH_BAT0="100" X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 99, stop = 100 (Error: write failed)
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="0" STOP_CHARGE_THRESH_BAT0="0"
Error in configuration at STOP_CHARGE_THRESH_BAT0="0": not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="102" STOP_CHARGE_THRESH_BAT0="101"
Error in configuration at START_CHARGE_THRESH_BAT0="102": not specified, invalid or out of range (0..99). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="1" STOP_CHARGE_THRESH_BAT0="101"
Error in configuration at STOP_CHARGE_THRESH_BAT0="101": not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="ABCDE" STOP_CHARGE_THRESH_BAT0="0"
Error in configuration at START_CHARGE_THRESH_BAT0="ABCDE": not specified, invalid or out of range (0..99). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="1" STOP_CHARGE_THRESH_BAT0="XYZZY"
Error in configuration at STOP_CHARGE_THRESH_BAT0="XYZZY": not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="99" STOP_CHARGE_THRESH_BAT0="98"
Error in configuration: START_CHARGE_THRESH_BAT0 > STOP_CHARGE_THRESH_BAT0. Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="95" X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 95, stop = 95 (Error: write failed)
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="95" STOP_CHARGE_THRESH_BAT0="95" X_THRESH_SIMULATE_START="95" X_THRESH_SIMULATE_STOP="95"
Setting temporary charge thresholds:
  start = 95, stop = 95 (Error: write failed)
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" X_THRESH_SIMULATE_START="0" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 0, stop = 100 (Error: write failed)
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=huawei NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
Error: battery charge thresholds not available.
$ #
$ # --- tlp setcharge w/ arguments
$ sudo tlp setcharge 60 100 -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 60, stop = 100 (Error: write failed)
$ sudo tlp setcharge 99 100 -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 99, stop = 100 (Error: write failed)
$ sudo tlp setcharge 0 0 -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Error: stop charge threshold (0) is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge 102 101 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: start charge threshold (102) is not specified, invalid or out of range (0..99). Aborted.
$ sudo tlp setcharge 1 101 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: stop charge threshold (101) is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge ABCDE 0 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: start charge threshold (ABCDE) is not specified, invalid or out of range (0..99). Aborted.
$ sudo tlp setcharge 1 XYZZY -- X_BAT_PLUGIN_SIMULATE=huawei
Error: stop charge threshold (XYZZY) is not specified, invalid or out of range (1..100). Aborted.
$ sudo tlp setcharge 99 98 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: start threshold > stop threshold. Aborted.
$ sudo tlp setcharge 95 95 -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="60" X_THRESH_SIMULATE_STOP="100"
Setting temporary charge thresholds:
  start = 95, stop = 95 (Error: write failed)
$ sudo tlp setcharge 95 95 -- X_BAT_PLUGIN_SIMULATE=huawei
Setting temporary charge thresholds:
  start = 95, stop = 95 (Error: write failed)
$ sudo tlp setcharge 95 95 -- -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="95" X_THRESH_SIMULATE_STOP="95"
Setting temporary charge thresholds:
  start = 95, stop = 95 (Error: write failed)
$ sudo tlp setcharge BAT1 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: battery BAT1 not present.
$ sudo tlp setcharge 0 3 BAT1 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: battery BAT1 not present.
$ sudo tlp setcharge XYZZY ABCDE BAT1 -- X_BAT_PLUGIN_SIMULATE=huawei
Error: battery BAT1 not present.
$ #
$ # --- tlp-stat
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="0" X_THRESH_SIMULATE_STOP="0" | grep "charge_control_thresholds"
/sys/devices/platform/huawei-wmi/charge_control_thresholds  = 0 0 [%] (disabled)
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="0" X_THRESH_SIMULATE_STOP="100" | grep "charge_control_thresholds"
/sys/devices/platform/huawei-wmi/charge_control_thresholds  = 0 100 [%] (disabled)
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=huawei X_THRESH_SIMULATE_START="75" X_THRESH_SIMULATE_STOP="80" | grep "charge_control_thresholds"
/sys/devices/platform/huawei-wmi/charge_control_thresholds  = 75 80 [%]
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=huawei | grep "charge_control_thresholds"
/sys/devices/platform/huawei-wmi/charge_control_thresholds  = (not available)
$ #
$ # +++ Lenovo ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ #
$ # --- tlp start
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0= START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="24" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
Error in configuration at STOP_CHARGE_THRESH_BAT0="24": conservation mode not specified or invalid (must be 0 or 1). Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="1" X_THRESH_SIMULATE_STOP="0" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
Error: writing conservation mode failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" X_THRESH_SIMULATE_STOP="0" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lenovo NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
TLP started in AC mode (auto).
$ #
$ # --- tlp setcharge w/o arguments
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="24"
Error in configuration at STOP_CHARGE_THRESH_BAT0="24": conservation mode not specified or invalid (must be 0 or 1). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0="ABCDE" STOP_CHARGE_THRESH_BAT0="XYZZY"
Error in configuration at STOP_CHARGE_THRESH_BAT0="XYZZY": conservation mode not specified or invalid (must be 0 or 1). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lenovo START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="1" X_THRESH_SIMULATE_STOP="0"
Setting temporary charge threshold for all batteries:
  conservation mode = 1 (Error: write failed)
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lenovo NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
Error: battery charge thresholds not available.
$ #
$ # --- tlp setcharge w/ arguments
$ sudo tlp setcharge 42 24 -- X_BAT_PLUGIN_SIMULATE=lenovo
Error: conservation mode (24) not specified or invalid (must be 0 or 1). Aborted.
$ sudo tlp setcharge ABCDE XYZZY -- X_BAT_PLUGIN_SIMULATE=lenovo
Error: conservation mode (XYZZY) not specified or invalid (must be 0 or 1). Aborted.
$ sudo tlp setcharge 42 1 -- X_BAT_PLUGIN_SIMULATE=lenovo  X_THRESH_SIMULATE_STOP="0"
Setting temporary charge threshold for all batteries:
  conservation mode = 1 (Error: write failed)
$ sudo tlp setcharge 42 1 -- X_BAT_PLUGIN_SIMULATE=lenovo  X_THRESH_SIMULATE_STOP="1"
Setting temporary charge threshold for all batteries:
  conservation mode = 1 (no change)
$ sudo tlp setcharge DEF DEF -- X_BAT_PLUGIN_SIMULATE=lenovo  X_THRESH_SIMULATE_STOP="0"
Setting temporary charge threshold for all batteries:
  conservation mode = 0 (no change)
$ sudo tlp setcharge 42 24 BAT1 -- X_BAT_PLUGIN_SIMULATE=lenovo
Error: battery BAT1 not present.
$ sudo tlp setcharge 2 -- X_BAT_PLUGIN_SIMULATE=lenovo
Error: battery 2 not present.
$ #
$ # --- tlp-stat
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=lenovo | grep "conservation_mode"
/sys/bus/platform/drivers/ideapad_acpi/VPC2004:00/conservation_mode = (not available)
$ #
$ # +++ LG ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
$ # New kernel API >= 5.18
$ #
$ # --- tlp start
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0= START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="24" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
Error in configuration at STOP_CHARGE_THRESH_BAT0="24": not specified or invalid (must be 80 or 100). Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="80" X_THRESH_SIMULATE_STOP="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" X_THRESH_SIMULATE_STOP="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
TLP started in AC mode (auto).
$ #
$ # --- tlp setcharge w/o arguments
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="24"
Error in configuration at STOP_CHARGE_THRESH_BAT0="24": not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0="ABCDE" STOP_CHARGE_THRESH_BAT0="XYZZY"
Error in configuration at STOP_CHARGE_THRESH_BAT0="XYZZY": not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lg START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
Setting temporary charge threshold for BAT0:
  stop  = 100
$ #
$ # --- tlp setcharge w/ arguments
$ sudo tlp setcharge 42 24 -- X_BAT_PLUGIN_SIMULATE=lg
Error: stop charge threshold (24) not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge 42 100 -- X_BAT_PLUGIN_SIMULATE=lg  X_THRESH_SIMULATE_STOP="80" X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  = 100
$ sudo tlp setcharge 42 80 -- X_BAT_PLUGIN_SIMULATE=lg  X_THRESH_SIMULATE_STOP="80" X_SOC_CHECK=0
Setting temporary charge threshold for BAT0:
  stop  =  80 (no change)
$ sudo tlp setcharge DEF DEF -- X_BAT_PLUGIN_SIMULATE=lg  X_THRESH_SIMULATE_STOP="100"
Setting temporary charge threshold for BAT0:
  stop  = 100 (no change)
$ sudo tlp setcharge ABCDE XYZZY -- X_BAT_PLUGIN_SIMULATE=lg
Error: stop charge threshold (XYZZY) not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge DEF DEF -- X_THRESH_SIMULATE_READERR="1"
Error: could not read current charge threshold(s) for BAT0. Aborted.
$ sudo tlp setcharge 42 80 BAT1 -- X_BAT_PLUGIN_SIMULATE=lg X_SOC_CHECK=0
Error: battery BAT1 not present.
$ sudo tlp setcharge 2 -- X_BAT_PLUGIN_SIMULATE=lg
Error: battery 2 not present.
$ #
$ # --- tlp-stat
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=lg | grep "charge_control_end_threshold"
/sys/class/power_supply/BAT0/charge_control_end_threshold   =    100 [%]
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=lg X_THRESH_SIMULATE_READERR=1 | grep "charge_control_end_threshold"
/sys/class/power_supply/BAT0/charge_control_end_threshold   = (not available) [%]
$ #
$ # ---
$ # Old kernel API
$ # --- tlp start
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0= STOP_CHARGE_THRESH_BAT0= START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="24" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
Error in configuration at STOP_CHARGE_THRESH_BAT0="24": care limit not specified or invalid (must be 80 or 100). Skipped.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="80" X_THRESH_SIMULATE_STOP="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
Error: writing care limit failed.
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF" X_THRESH_SIMULATE_STOP="100" START_CHARGE_THRESH_BAT1= STOP_CHARGE_THRESH_BAT1=
TLP started in AC mode (auto).
$ sudo tlp start -- X_BAT_PLUGIN_SIMULATE=lg-legacy NATACPI_ENABLE=0 START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
TLP started in AC mode (auto).
$ #
$ # --- tlp setcharge w/o arguments
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0="42" STOP_CHARGE_THRESH_BAT0="24"
Error in configuration at STOP_CHARGE_THRESH_BAT0="24": care limit not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0="ABCDE" STOP_CHARGE_THRESH_BAT0="XYZZY"
Error in configuration at STOP_CHARGE_THRESH_BAT0="XYZZY": care limit not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge -- X_BAT_PLUGIN_SIMULATE=lg-legacy START_CHARGE_THRESH_BAT0="DEF" STOP_CHARGE_THRESH_BAT0="DEF"
Error: could not read current care limit. Aborted.
$ #
$ # --- tlp setcharge w/ arguments
$ sudo tlp setcharge 42 24 -- X_BAT_PLUGIN_SIMULATE=lg-legacy
Error: care limit (24) not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge 42 100 -- X_BAT_PLUGIN_SIMULATE=lg-legacy  X_THRESH_SIMULATE_STOP="80"
Setting temporary charge threshold for all batteries:
  care limit = 100 (Error: write failed)
$ sudo tlp setcharge 42 80 -- X_BAT_PLUGIN_SIMULATE=lg-legacy  X_THRESH_SIMULATE_STOP="80" X_SOC_CHECK=0
Setting temporary charge threshold for all batteries:
  care limit =  80 (no change)
$ sudo tlp setcharge DEF DEF -- X_BAT_PLUGIN_SIMULATE=lg-legacy  X_THRESH_SIMULATE_STOP="100"
Setting temporary charge threshold for all batteries:
  care limit = 100 (no change)
$ sudo tlp setcharge ABCDE XYZZY -- X_BAT_PLUGIN_SIMULATE=lg-legacy
Error: care limit (XYZZY) not specified or invalid (must be 80 or 100). Aborted.
$ sudo tlp setcharge DEF DEF -- X_THRESH_SIMULATE_READERR="1"
Error: could not read current charge threshold(s) for BAT0. Aborted.
$ sudo tlp setcharge 42 80 BAT1 -- X_BAT_PLUGIN_SIMULATE=lg-legacy
Error: battery BAT1 not present.
$ sudo tlp setcharge 2 -- X_BAT_PLUGIN_SIMULATE=lg-legacy
Error: battery 2 not present.
$ #
$ # --- tlp-stat
$ sudo tlp-stat -b -- X_BAT_PLUGIN_SIMULATE=lg-legacy | grep "battery_care_limit"
/sys/devices/platform/lg-laptop/battery_care_limit          = (not available)
$ #
$ # --- Reset test machine to configured thresholds
$ sudo tlp setcharge BAT0  > /dev/null 2>&1
$ #
