2 2
user283746

Underclock Orange Pi Zero on mainline 4.14 kernel?

Recommended Posts

I have a rev 1.4 Orange Pi Zero that overheats. I've confirmed this by touch and know it's a known problem. On the legacy kernel, setting CPU to 800 Mhz and RAM to 300 Mhz used to keep things cool. (e.g. "sudo h3consumption -m 800").

 

h3consumption doesn't exist on 4.14 kernels, so how do I underclock? 

 

 

Share this post


Link to post
Share on other sites

edit/etc/default/cpufrequtils (max cpu speed)

followed by: /etc/init.d/cpufrequtils restart

should do the job... 
 

But figure out why it overheats might be also interesting? 

Share this post


Link to post
Share on other sites
15 hours ago, chwe said:

edit/etc/default/cpufrequtils (max cpu speed)

followed by: /etc/init.d/cpufrequtils restart

should do the job... 
 

But figure out why it overheats might be also interesting? 

 

Thanks, will try that. How do you under-clock the ram? I think that also contributes to the overall problem. 

 

Taking a step back, maybe dynamic frequency scaling is broken but IMHO the firmware should be using more appropriate values to match v1.4 board performance. I'm not sure if there is a proper way to detect v1.4 (or high temps or a broken temp sensor)

Edited by user283746

Share this post


Link to post
Share on other sites

@chwe Your CPU underclock instructions work and it helps to some extent. Board is still a lot warmer on newer software than legacy, so I'd also like to underclock the RAM.

 

How do we underclock ram?


FYI, I also changed the governor to powersave which also seems to help. For anyone more interested in governors here is the link to kernel docs. Documenting here for future readers, note that lines starting with # are commented out

user@orangepizero:~$ sudo nano /etc/default/cpufrequtils

# WARNING: this file will be replaced on board support package (linux-root-...) upgrade
ENABLE=true
MIN_SPEED=240000
# MAX_SPEED=1200000
MAX_SPEED=816000
# Run at lowest
# GOVERNOR=powersave
# Dynamic, jump to max
# GOVERNOR=ondemand
# Dynamic, slowly scale up
GOVERNOR=conservative

user@orangepizero:~$  sudo /etc/init.d/cpufrequtils restart

Lastly, you can see with 

sudo cpufreq-info

and set (NOTE  - this doesn't persist across reboots, so use the /etc/default/cpufrequtils file for persistence)

sudo cpufreq-set --max 816MHz

Share this post


Link to post
Share on other sites
7 hours ago, user283746 said:

so those values are now hardcoded in the uboot supplied by mainline kernel distribution?

They were always hardcoded, it's just that the sunxi legacy kernel has some hacks and closed source blobs that allow reconfiguring the DRAM frequency on the fly.

 

7 hours ago, user283746 said:

They should be re-programmable

"Should" is subjective here. Since nobody tried to implement this yet you can assume that developers think that this is not necessary or can't be reliably or cleanly implemented.

Share this post


Link to post
Share on other sites
On 5/17/2018 at 12:14 PM, user283746 said:

@chwe Your CPU underclock instructions work and it helps to some extent. Board is still a lot warmer on newer software than legacy, so I'd also like to underclock the RAM.

 

How do we underclock ram?


FYI, I also changed the governor to powersave which also seems to help. For anyone more interested in governors here is the link to kernel docs. Documenting here for future readers, note that lines starting with # are commented out


user@orangepizero:~$ sudo nano /etc/default/cpufrequtils

# WARNING: this file will be replaced on board support package (linux-root-...) upgrade
ENABLE=true
MIN_SPEED=240000
# MAX_SPEED=1200000
MAX_SPEED=816000
# Run at lowest
# GOVERNOR=powersave
# Dynamic, jump to max
# GOVERNOR=ondemand
# Dynamic, slowly scale up
GOVERNOR=conservative

user@orangepizero:~$  sudo /etc/init.d/cpufrequtils restart

Lastly, you can see with 


sudo cpufreq-info

and set (NOTE  - this doesn't persist across reboots, so use the /etc/default/cpufrequtils file for persistence)


sudo cpufreq-set --max 816MHz

Cool!  Thanks for this

 

Just tweaked to change my cpu minimum to 240MHz

sudo cpufreq-set --min 240MHz

changed my governor to conservative and now in my armbianmonitor -m shows it dropping down to the lower cpu speed and temps are dropping well at idle speeds
 

Share this post


Link to post
Share on other sites

Hi,

I have made all settings to underclock the CPU, unfortunately before and after temperatures are exactly  same.

we are planning to use this board as commercial product and  high temperature issues for rev 1.4 boards make us worried. 

i really wonder that v1.4 boards have problems ?

Share this post


Link to post
Share on other sites
21 minutes ago, sametkocatepe said:

we are planning to use this board as commercial product and  high temperature issues for rev 1.4 boards make us worried.

The original OPi Zero does get real "hot".... for a commercial product I would suggest the OPi Zero Plus2 H5 (if not used for Game Emulation because of the H5 CPU) because this one stays really cool (not the OPi Zero Plus H5)

Does cost a little more...but for a server-like device its pays for stability :)

Share this post


Link to post
Share on other sites
39 minutes ago, sametkocatepe said:

I have made all settings to underclock the CPU, unfortunately before and after temperatures are exactly  same

 

As expected. As long as the DVFS settings keep the SoC at the lower voltage (1.1V) temperatures won't differ significantly regardless whether the CPU cores idle at 816 MHz, 240 MHz or 0.1 MHz. Quoting linux-sunxi wiki: 'Modern processors implement advanced clock gating for power saving purposes and if the processor is sitting on a WFI instruction, then the power consumption is already significantly reduced regardless of the CPU clock speed.'

 

Please remember that with OPi Zero rev 1.4 thermal readouts are wrong. DRAM on OPi Zero is already downclocked to 408 MHz with Armbian so there's not much you could do to really lower temperatures (the real ones, not the wrong readouts).

Share this post


Link to post
Share on other sites
2 hours ago, guidol said:

The original OPi Zero does get real "hot".... for a commercial product I would suggest the OPi Zero Plus2 H5 (if not used for Game Emulation because of the H5 CPU) because this one stays really cool (not the OPi Zero Plus H5)

Does cost a little more...but for a server-like device its pays for stability :)

Hi guidol thank you for your suggestion. unfortunately OPi zero H5 does not include built in ethernet connectivity and usb . our application depends on fully ethernet. in this situation, i will use a passive & active cooler. actually our application  does not have  heavy duty working, it will gather some serial data and transfer to remote server using python and nodejs at every 20 minutes. nevertheless it will be in a plastic case. 

 

i have soldered all pins of opi zero to the PCB and noticed that PCB works like passive cooler even if just a bit.

do you have a suggestion on cooling the opi zero ?

Share this post


Link to post
Share on other sites
2 hours ago, tkaiser said:

 

As expected. As long as the DVFS settings keep the SoC at the lower voltage (1.1V) temperatures won't differ significantly regardless whether the CPU cores idle at 816 MHz, 240 MHz or 0.1 MHz. Quoting linux-sunxi wiki: 'Modern processors implement advanced clock gating for power saving purposes and if the processor is sitting on a WFI instruction, then the power consumption is already significantly reduced regardless of the CPU clock speed.'

 

Please remember that with OPi Zero rev 1.4 thermal readouts are wrong. DRAM on OPi Zero is already downclocked to 408 MHz with Armbian so there's not much you could do to really lower temperatures (the real ones, not the wrong readouts).

yes exactly as you stated. even if it work under 0.1 MHz it becomes hot. :( .  Can i calculate the correct temperature according to wrong readouts? 

Share this post


Link to post
Share on other sites
20 hours ago, tkaiser said:

 

As expected. As long as the DVFS settings keep the SoC at the lower voltage (1.1V) temperatures won't differ significantly regardless whether the CPU cores idle at 816 MHz, 240 MHz or 0.1 MHz. Quoting linux-sunxi wiki: 'Modern processors implement advanced clock gating for power saving purposes and if the processor is sitting on a WFI instruction, then the power consumption is already significantly reduced regardless of the CPU clock speed.'

 

Please remember that with OPi Zero rev 1.4 thermal readouts are wrong. DRAM on OPi Zero is already downclocked to 408 MHz with Armbian so there's not much you could do to really lower temperatures (the real ones, not the wrong readouts).

 

I'm an EE that did power optimization at Qualcomm a while back. I'll just say - if only it were that easy :) ! If everything lines up, yes, it's possible to drop power draw to ideal. But clearly the software (legacy vs new kernel) heavily influences actual physical temperatures on the same silicon/processor. So safe to assume the board (design, layout, components etc) is just about acceptable for this price point, even if not optimal.

 

Without a specific deep-dive into this issue, our efforts here are like band-aids the minimize the thermal performance problem with 4.x kernels rather than solve the problem at the root cause itself. IMHO, these are all 'toys' so I don't see anyone 'caring' enough to root-cause this (vs say, if this was my product line). Tinker on!

Share this post


Link to post
Share on other sites
5 hours ago, sametkocatepe said:

when i make thumb test, i see that the temperature goes down about 4 - 5 degree.

 

Pressing the thumb on an idle H3 SoC without heatsink and then seeing reported temperatures decreasing by just 5°C IIRC means the SoC is at around 45°C. But I might be wrong. Anyway: the numbers you can read out via software are bogus, can not be trusted and not 'calibrated' by any means other than a hardware mod described in the other thread.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
2 2