Steam Deck power tweaks for power users
Go to file
2022-04-27 23:03:23 -04:00
extras Add fan control functionality 2022-04-27 23:03:23 -04:00
LICENSE Create LICENSE 2022-04-21 18:02:57 +00:00
main.py Add fan control functionality 2022-04-27 23:03:23 -04:00
main_view.html Add fan control functionality 2022-04-27 23:03:23 -04:00
plugin.json Enable debug mode in dev branch 2022-04-24 15:52:23 -04:00
README.md Add fan control functionality 2022-04-27 23:03:23 -04:00
tile_view.html Initial commit 2022-04-18 21:21:51 +00:00

PowerTools

plugin_demo

Steam Deck power tweaks for power users.

This is generated from the template plugin for the SteamOS Plugin Loader.

Cool, whatever

Yeah, that's fair. In case you still want some of the functionality, without the nice GUI, here's some equivalent commands. These should all be run as superuser, i.e. run sudo su and then run these commands in that.

Enable & Disable CPU threads

Enable: echo 1 > /sys/devices/system/cpu/cpu{cpu_number}/online where {cpu_number} is a number from 1 to 7 (inclusive).

Disable: echo 0 > /sys/devices/system/cpu/cpu{cpu_number}/online where {cpu_number} is a number from 1 to 7 (inclusive).

NOTE: You cannot enable or disable cpu0, hence why there are only 7 in the range for 8 cpu threads.

Enable & Disable CPU boost

Enable: echo 1 > /sys/devices/system/cpu/cpufreq/boost enables boost across all threads.

Disable: echo 0 > /sys/devices/system/cpu/cpufreq/boost disables boost across all threads.

Set CPU frequency

Use cpupower (usage: cpupower --help). This isn't strictly how PowerTools does it, but it's a multi-step process which can involve changing the CPU governor. All that can be done automatically by cpupower frequency-set --freq {frequency} where {frequency} is 1.7G, 2.4G or 2.8G.

Set Fan speed

Enable automatic control: echo 0 > /sys/class/hwmon/hwmon5/recalculate enables automatic fan control.

Disable automatic control: echo 1 > /sys/class/hwmon/hwmon5/recalculate disables automatic (temperature-based) fan control and starts using the set fan voltage instead.

Set the fan voltage: echo {voltage} > /sys/class/hwmon/hwmon5/fan1_target where {voltage} is a value from 0 to 4000 mV*.

Read the actual fan voltage: cat /sys/class/hwmon/hwmon5/fan1_input gives the fan voltage in mV*.

*WARNING: I'm not sure if that's actually fan voltage. I've set it to 6000 (1V higher!!! than the fan's rated 5V) and the fan responded, so it appears to not be limited. Blow up your fans at your own risk; read the license.

NOTE: There's a bug in the fan controller; if you enable automatic fan control it will forget any previously-set target despite it appearing to be set correctly (i.e. cat /sys/class/hwmon/hwmon5/fan1_target will display the correct value). When you disable automatic fan control, you will need to set the fan voltage again.

Steam Deck kernel patches

This is how I figured out how the fan stuff works. I've only scratched the surface of what this code allows, I'm sure it has more useful information. https://lkml.org/lkml/2022/2/5/391

License

This is licensed under GNU GPLv3.