The fan curves on the laptop has the fans not turn on until the CPU/APU temperature reaches around 47C. 40C is around where it will start to get pretty uncomfortable. Long term contact with it could be bad too. W/ Firefox open, I’m just below 40C:
$ sudo ectool temps all
--sensor name -------- temperature -------- ratio (fan_off and fan_max) --
ambient_f75303@4d 310 K (= 37 C) N/A (fan_off=0 K, fan_max=0 K)
charger_f75303@4d 311 K (= 38 C) N/A (fan_off=0 K, fan_max=0 K)
apu_f75303@4d 311 K (= 38 C) 0% (320 K and 335 K)
cpu@4c 309 K (= 36 C) 0% (338 K and 370 K)
gpu_amb_f75303@4d 273 K (= 0 C) N/A (fan_off=0 K, fan_max=0 K)
gpu_vr_f75303@4d 273 K (= 0 C) 0% (323 K and 347 K)
gpu_vram_f75303@4d 273 K (= 0 C) N/A (fan_off=0 K, fan_max=0 K)
gpu_amdr23m@40 273 K (= 0 C) 0% (323 K and 353 K)
lines 3 and 4 show apu and cpu temp need to reach 320k and 338k (47C and 65C) respectively, but I’m at 38C on both, so the fans are completely off. I’m not sure what kind of filtering/strategy is used, but the averaging might prevent it from turning up the fans quickly enough to compensate for the high temperatures.
I used ectool to adjust the fan curves. To adjust the fancurves, I used
$ sudo ectool thermalget
sensor warn high halt fan_off fan_max name
0 363 363 378 0 0 ambient_f75303@4d
1 363 363 378 0 0 charger_f75303@4d
2 363 363 378 300 320 apu_f75303@4d
3 381 381 400 300 330 cpu@4c
4 0 0 0 0 0 gpu_amb_f75303@4d
5 344 0 0 323 347 gpu_vr_f75303@4d
6 0 0 0 0 0 gpu_vram_f75303@4d
7 0 0 0 323 353 gpu_amdr23m@40
(all temps in degrees Kelvin)
to get the current settings.
Here you can see I’ve already modified the off/max temps for the apu/cpu (0% and 100% for the fans) but here’s the command to modify that:
$ sudo ectool thermalset 2 363 363 378 300 320
In this case, I left the warn, high, and halt parameters the same and adjusted the turn on temp and max fan temp. This is essentially a linear fan curve, so my fans turn on at 300K (27C on the APU) and are at 100% by 320K (47C). They probably don’t need to be set that aggressively but you get the idea. Similar for the CPU I have it set to turn up more aggressively - off at 27C and 100% at 57C.
The benefit of this over fw-fanctrl is that it doesn’t need to constantly run in the background. The downside is that without setting up a script to set it on startup, it will get reset on reboot. It also only offers two points for the fan curve rather than many points to smooth it out or get more aggressive at higher load compared to at low load.
This doesn’t fix any issues that affect the actual power draw, but can help get the temperatures into a more reasonable or comfortable range. I wrote a script that uses the above command to set my APU and CPU temperature points when starting up the laptop
Temps after:
$ sudo ectool temps all
--sensor name -------- temperature -------- ratio (fan_off and fan_max) --
ambient_f75303@4d 307 K (= 34 C) N/A (fan_off=0 K, fan_max=0 K)
charger_f75303@4d 306 K (= 33 C) N/A (fan_off=0 K, fan_max=0 K)
apu_f75303@4d 308 K (= 35 C) 40% (300 K and 320 K)
cpu@4c 305 K (= 32 C) 16% (300 K and 330 K)
gpu_amb_f75303@4d 273 K (= 0 C) N/A (fan_off=0 K, fan_max=0 K)
gpu_vr_f75303@4d 273 K (= 0 C) 0% (323 K and 347 K)
gpu_vram_f75303@4d 273 K (= 0 C) N/A (fan_off=0 K, fan_max=0 K)
gpu_amdr23m@40 273 K (= 0 C) 0% (323 K and 353 K)