Thermal Management
ASUS Thermal Profiles
The laptop has three fan profiles controlled via two sysfs interfaces:
| Profile | platform_profile | ASUS throttle_thermal_policy | Fan behavior |
|---|---|---|---|
| Quiet | quiet |
2 |
Fans minimal, CPU may throttle |
| Balanced | balanced |
0 |
Fans scale with temperature |
| Performance | performance |
1 |
Fans at maximum speed always |
Both interfaces must be set together for the change to take effect:
# Set balanced mode
echo balanced > /sys/firmware/acpi/platform_profile
echo 0 > /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy
Normal Temperature Ranges
| Component | Idle | Light load | Heavy load | Critical |
|---|---|---|---|---|
| CPU Package | 40-50°C | 50-65°C | 65-85°C | 95°C+ |
| GPU | 35-45°C | 45-60°C | 60-80°C | 90°C+ |
| NVMe | 30-40°C | 35-45°C | — | 84°C |
| WiFi (iwlwifi) | 45-55°C | — | — | — |
The CPU is rated to 110°C. Temperatures below 80°C are completely normal and do not need performance mode (max fans).
Services and Scripts
There are multiple thermal management systems. They must be kept in sync or they fight each other.
1. Boot Service — asus-performance-mode.service
Location: /etc/systemd/system/asus-performance-mode.service
Sets the profile at boot. As of 2026-03-15, configured to set balanced mode:
[Service]
Type=oneshot
ExecStart=/bin/bash -c 'echo balanced > /sys/firmware/acpi/platform_profile && echo 0 > /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy'
RemainAfterExit=yes
2. Dynamic Thermal Control — dynamic-thermal-control.timer
Script: /home/chas-watkins/dynamic-thermal-control.sh
Timer: Runs every 30 seconds via systemd timer
Log: /home/chas-watkins/thermal-control.log
Switches between balanced and performance based on CPU temperature:
| Threshold | Temperature | Action |
|---|---|---|
| TEMP_HIGH | 80°C | Switch to performance (max fans) |
| TEMP_LOW | 65°C | Switch back to balanced |
| TEMP_CRITICAL | 95°C | Emergency — force performance |
History: Thresholds were originally 45/40/60°C which caused the fans to run at max permanently since the CPU idles at 47°C. Fixed 2026-03-15.
3. Startup Cooling — ~/.config/autostart/startup-cooling.sh
Disables CPU turbo boost 60 seconds after login to reduce heat:
echo 0 | sudo tee /sys/devices/system/cpu/cpufreq/boost
4. Temperature Logger — crontab
Script: /home/chas-watkins/temp-monitor.sh
Schedule: Every 3 minutes
Log: /home/chas-watkins/temperature-log.csv
Logs CPU, NVMe, ACPI, and WiFi temperatures. Read-only — does not change any settings.
5. Other Thermal Services
| Service | Status | Role |
|---|---|---|
thermald |
Active | Intel thermal daemon — manages CPU throttling |
tlp |
Active | Power management — battery/AC profiles |
asusd |
Failed | ASUS daemon — not functional, can be ignored |
fancontrol |
Inactive | Not configured |
Troubleshooting
Fans running at max despite cool temps
Check which profile is active:
cat /sys/firmware/acpi/platform_profile
cat /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy
If it says performance / 1, something is overriding balanced mode. Check the thermal control log:
tail -20 /home/chas-watkins/thermal-control.log
Resetting to balanced manually
echo balanced | sudo tee /sys/firmware/acpi/platform_profile
echo 0 | sudo tee /sys/devices/platform/asus-nb-wmi/throttle_thermal_policy
Checking all temperatures
sensors