Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ignoring power supplies FIX #753 #760

Merged
merged 12 commits into from
Aug 5, 2024
21 changes: 21 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@ Example of `auto-cpufreq --stats` CLI output
- [Battery charging thresholds](#battery-charging-thresholds)
- [Supported Devices](#supported-devices)
- [Battery config](#battery-config)
- [Ignoring power supplies](#Ignoring-power-supplies)
- [Troubleshooting](#troubleshooting)
- [AUR](#aur)
- [Discussion](#discussion)
Expand Down Expand Up @@ -513,6 +514,26 @@ this works only with `lenovo_laptop` kernel module compatable laptops.

add `ideapad_laptop_conservation_mode = true` to your `auto-cpufreq.conf` file

### Ignoring power supplies

you may have a controler or headphones and when ever they may be on battery they might cause auto-cpufreq
to limit preformence to ignore them add to you config file the name of the power supply, under `[power_supply_ignore_list]`

the name of the power supply can be found with `ls /sys/class/power_supply/`

```
[power_supply_ignore_list]

name1 = this
name2 = is
name3 = an
name4 = example

# like this
xboxctrl = {the xbox controler power supply name}

```

## Troubleshooting

**Q:** If after installing auto-cpufreq you're (still) experiencing:
Expand Down
11 changes: 11 additions & 0 deletions auto-cpufreq.conf-example
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,17 @@ energy_performance_preference = performance
# turbo boost setting. possible values: always, auto, never
turbo = auto


# this is for ignoring controlers and other connected devices battery from effecting
AdnanHodzic marked this conversation as resolved.
Show resolved Hide resolved
# laptop preformence
# [power_supply_ignore_list]

# name1 = this
# name2 = is
# name3 = an
# name4 = example


# settings for when using battery power
[battery]
# see available governors by running: cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
Expand Down
25 changes: 21 additions & 4 deletions auto_cpufreq/core.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@

filterwarnings("ignore")

# add path to auto-cpufreq executables for GUI
# add path to auto-cpufreq executables for UI
os.environ["PATH"] += ":/usr/local/bin"

# ToDo:
Expand All @@ -30,8 +30,7 @@
SCRIPTS_DIR = Path("/usr/local/share/auto-cpufreq/scripts/")
CPUS = os.cpu_count()

# ignore these devices under /sys/class/power_supply/
POWER_SUPPLY_IGNORELIST = ["hidpp_battery"]


# Note:
# "load1m" & "cpuload" can't be global vars and to in order to show correct data must be
Expand Down Expand Up @@ -217,12 +216,30 @@ def set_turbo(value:bool):
print("Setting turbo boost:", "on" if value else "off")
turbo(value)


# ignore these devices under /sys/class/power_supply/
def get_power_supply_ignore_list():

conf = config.get_config()

list = []

if conf.has_section("power_supply_ignore_list"):
for i in conf["power_supply_ignore_list"]:
list.append(conf["power_supply_ignore_list"][i])

# these are hard coded power supplies that will always be ignored
list.append("hidpp_battery")
return list


def charging():
"""
get charge state: is battery charging or discharging
"""
# sort it so AC is 'always' first
power_supplies = sorted(os.listdir(Path(POWER_SUPPLY_DIR)))
POWER_SUPPLY_IGNORELIST = get_power_supply_ignore_list()

# check if we found power supplies. on a desktop these are not found and we assume we are on a powercable.
if len(power_supplies) == 0: return True # nothing found, so nothing to check
Expand Down Expand Up @@ -896,4 +913,4 @@ def not_running_daemon_check():
exit(1)
elif IS_INSTALLED_WITH_SNAP and dcheck == "disabled":
daemon_not_running_msg()
exit(1)
exit(1)