Fedora/Ubuntu power optimisations for the Asus UX482EG

descriptionStandard

This post provides two configurations for optimisation power consumption on the Asus Zenbook Duo model UX482EG; one configuration uses TLP the other configuration uses a configuration of TLP and auto-cpufreq (plus its requirement thermalid).

This has been predominately tested on Fedora 39+ and quickly trialled under Ubuntu 23.04.

Without this power consumption would idle around 14~ watts; with the TLP configuration the average idle drops to 8~ watts.

Powersaving with tlp

Install tlp tlp-rdw with:

Fedora

sudo dnf install tlp tlp-rdw

Ubuntu

sudo apt install tlp tlp-rdw

To define a configuration that will persist across upgrades use: sudo nano /etc/tlp.d/01-asus-482.conf

# Satisfy powertop requirements 
MAX_LOST_WORK_SECS_ON_BAT=15
# Battery limits
START_CHARGE_THRESH_BAT0=75
STOP_CHARGE_THRESH_BAT0=80
RESTORE_THRESHOLDS_ON_BAT=1

# Intel GPU
INTEL_GPU_MIN_FREQ_ON_BAT=100
INTEL_GPU_MAX_FREQ_ON_BAT=700
INTEL_GPU_BOOST_FREQ_ON_BAT=100

# General powersave
PCIE_ASPM_ON_BAT=powersupersave
ENERGY_PERF_POLICY_ON_BAT=power
PLATFORM_PROFILE_ON_BAT=low-power

# Blacklist defaults exclude GPU drivers
RUNTIME_PM_DRIVER_DENYLIST="mei_me"
RUNTIME_PM_DRIVER_BLACKLIST="mei_me"

Apply with sudo tlp start

CPU powersaving with TLP

If you intend to use TLP only then consider the following, if you intend to use TLP with auto-cpufred the following configuration should be skipped/omitted:

# CPU (note if you use auto-cpufreq with tlp probably best to omit by commenting out the below)
CPU_HWP_ON_BAT=power
CPU_ENERGY_PERF_POLICY_ON_BAT=power
CPU_BOOST_ON_BAT=0
CPU_HWP_DYN_BOOST_ON_BAT=0
# CPU schedulers
CPU_SCALING_GOVERNOR_ON_AC=schedutil
CPU_SCALING_GOVERNOR_ON_BAT=powersave
# CPU Frequency/scaling caps
CPU_MIN_PERF_ON_BAT=8
CPU_MAX_PERF_ON_BAT=60
CPU_SCALING_MIN_FREQ_ON_BAT=400000
CPU_SCALING_MAX_FREQ_ON_BAT=1600000

If required re-apply with sudo tlp start

Powersaving with tlp & auto-cpufreq

The auto-cpufreq installation suggests using thermalid so we will include that here also:

Install thermald with:

Fedora

sudo dnf install thermald

Ubuntu

sudo apt install thermald

Then clone the Git repository and run the installation script for auto-cpufreq:

git clone https://github.com/AdnanHodzic/auto-cpufreq.git
cd auto-cpufreq && sudo ./auto-cpufreq-installer

# install service
sudo auto-cpufreq --install

Configuration reference: https://github.com/AdnanHodzic/auto-cpufreq?tab=readme-ov-file#example-config-file-contents

For a system-wide configuration tailored towards battery power add the following: sudo nano /etc/auto-cpufreq.conf

[battery]
governor = powersave
energy_performance_preference = power
scaling_min_freq = 400000

scaling_max_freq = 1600000

turbo boost setting (always, auto, or never)
turbo = none

Then restart the service: sudo systemctl restart auto-cpufreq

Conclusions

This is still far from perfect as the average life when on battery is about 6 hours at best; under Windows I typically achieved 8 hours+.

I suspect the culprit for the higher power draw is in the dual GPU configuration; experimenting with switching the primary switch option under nvidia switch command the best result is on-demand. Switching to intel only causes system power under idle to jump to 16 watt at idle. High-performance acts similar to on-demand.

Under my usage scenario; the configuration using TLP produced the longest battery life keep in mind that my own goals were to maximise battery life over almost everything else. As I often use this machine for remote work and the vast majority of my workload is ran off device.