Cooling CPU in software S905X2/S922?

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


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

echo 'schedutil' > /sys/devices/system/cpu/cpufreq/policy0/scaling_governor
echo '1000000' > /sys/devices/system/cpu/cpufreq/policy0/scaling_min_freq
) &

Gives 45Deg C during 1080p playback and not much higher in the Gui with dirty regions set at 3.

In my S912 there is no path to

only to

Sorry that is for a s905x2 box I will power up an s912 box and get back to you.

If my S912 box is typical it has 2 sets of 4 cores the first set of 4 cores uses
and is set to ondemand Minimum frequency 1Ghz (1000000) Maximum 1.5Ghz (1512000)
Available Frequencies 100000 250000 500000 667000 1000000 1200000 1512000

The second set of 4 are controlled by
and is set to ondemand Minimum frequency 1Ghz (1000000) Maximum 1Ghz (100000). So the scaling governor has no effect.
Available Frequencies 100000 250000 500000 667000 1000000

I tried the following but it only makes a couple of degrees C difference as the S912 has already got the ondemand governor enabled. The box does idle at 600Mhz even playing UHD content.

echo 500000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
echo 500000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

On the S905x2 the default is ‘performance’ so the cpus run flat out all the time so there is a dramatic drop in power/temperature by changing the governor to interactive/schedutil.

1 Like

In my S912 I have tried

echo 667000 > /sys/devices/system/cpu/cpu4/cpufreq/scaling_min_freq
echo 667000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq

and I am very satisfied to go from 1000Mhz to 667Mhz minimum CPU speed. In idle conditions I have seen temperatures of 57ºC (66ºC playing HDTV) for the first time, which has its logic:

Heat generated in low speed state:

1000Mhz = 100% heat generated (default)
667Mhz = 67% heat generated (2/3 = 0.67)*

With a speed of 500Mhz I have not seen added advantages.


1 Like

I don’t think P(ower)=F() requency^2 is an accurate measure for this type of CPU at these frequencies. Any reduction in power is a good thing looking at the S905X2 stats most of the core are sat around 80% of the time Waiting For Interrupts.

I had to go back to the default settings. One of the HDTV channels has micro freezes at intervals of a few seconds.

What is this console? Can you share infor please?