Cooling CPU without additional hardware

So I finally got my N5 Max (S905X2) running how I wanted only to find it was running flat out (1800MHz) all the time I know this is pretty standard in the GUI. It was running at 58C. So I ran this from SSH.

echo 'interactive' > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor

I noticed the CPU dropped to around 54C in the GUI average of about 1600MHz. h265 HD movie temp dropped bellow 50C speed 800MHz. UHD Movie temp was around 52C and speed around 1200MHz. Both with hardware decoding.

I had not take n much notice of the CPU speed on my A95X Max and also discovered that it was running at 1800MHz as default, so ran the same command and temp immediately dropped by 3C and CPU running between 667 and 1000Mhz with no adverse effect on video playback, so a great spot and remedy.

Running at 57c is well within spec for these chips. Much above 70c and I would start to worry.
I have my s912 chipped Vim2 set to performance on all cores and the GPU over clocked. I also have dirty regions disabled. This gives about the highest performance and the difference is noticeable. Average temps are about 70c and have been for over a year.


This setting still allows your box to run at full pelt when the need arises but when it doesn’t require it, it makes sense to throttle down.

Saves energy and cooler for longer is always better in the long run.

Try “ondemand” or “hotplug” governor

Thanks for this! This is one of the most useful tips I’ve cme across in quite some time. I had to try this out for my S905x immediately and got the same great results. In my case I had to change the governor for the CPU0 core with this command:

echo interactive | tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor >/dev/null

YOU DON’T HAVE TO REPEAT IT FOR THE OTHER CORES since their cpufreq folder symlink to this core. After that CPU temp went down considerably. On the S905X there are 4 governors available. Interactive is the best governor for anything except maybe games.

The default, ondemand, essentially only oscillates between lowest and highest frequency state.

Hotplug works similar to Ondemand but is able to shut off unused cpu cores completely. Performance always keeps the highest state. Interactive uses all the power states.

Therefore, these governors yield running temperatures from lowest to highest: Interactive, Ondemand, Performance. Not sure where to put Hotplug, needs some experimenting.

You can put the above command to change the governor in your file.

1 Like

S905x2 only supports interactive performance schedutil

 # cat  /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
interactive performance schedutil

if you set /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
It seems to work for all cores. I am going to add it to my and see how it works.

I have S905W and I have to set interactive to all 4 cores just like @HeresJohnny did. But the problem is that every time I restart my android box, the scaling governor goes back to ondemand how do I set it to interactive permanently ?

create a file called put the commands in it use something like nano or notepad++ (make sure its UTF8 and Linux LF). put the fle in the ConfigFiles directory. (94 Bytes)

I have uploaded my file as a template.


echo 'interactive' > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
) &

Here’s my box playing a 1080p file h265

1 Like

After some more testing I have concluded for myself that actually the “Hotplug” governor is the best (on my S905x box). It acts much like the interactive governor by going through all the speed steps but with the added benefit that it can shut off cores seperately. Also, while using the interactive governor I noticed some micro-stutter. Subtle, but still there.

So again, just put this line in your autostart file:

echo hotplug | tee /sys/devices/system/cpu/cpu0/cpufreq/scaling_governor >/dev/null

You only need to run this command on the first core, the other cores are linked to it.

1 Like