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
4 hours ago, chwe said:

But figure out why it overheats might be also interesting? 

maybe because its a rev 1.4 :)

 

 

or a wrong read-out....

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

Wait .. so those values are now hardcoded in the uboot supplied by mainline kernel distribution?? Why? They should be re-programmable ...

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

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