Forum > Debian
bronco 看全部
2015-12-8 01:03:19
Edited by bronco at 2015-12-8 01:20


zgoda replied at 2015-12-8 00:23
OPi PC will be working in my beer cellar, any additional heat dissipation is not welcome.

Today my 2nd OPi PC arrived and I had the chance to try again without a heatsink: It's crazy how these moronic dvfs table settings then look. On the left the 'defaults' with only 1.3V for all lower cpufreqs and 1.5V above 1.2 GHz defined. On the right sane settings:

Results without a heatsink, no enclosure (!) and upright position (helps a little bit due to convection):

Xunlong settings:
Idle at 480MHz/1300mV: 1.7 W consumption and 48°C
Idle at 1536MHz/1500mV: 2.1 W consumption and 60°C

Sane settings:
Idle at 480MHz/980mV: 1.5W consumption and 43°C
Idle at 1200MHz/1240mV: 1.6W consumption and 47°C

Given you combine the wrong dvfs settings (Xunlong's) with the performance governor you end up with a device that doesn't idle at 43°C but at 17°C more. While consuming a whopping 0.6W more. Still DOING NOTHING. That's the price you pay for accepting these weird overvolted/overclocked settings. It's obvious based on the graphs where the heat problem originates: Overvolting.

And given you put your H3 device into a small enclosure it might be easily possible that idle temperature exceed 70°C or even more. Still while being completely idle

At the moment I let the test script walk through my undervolted settings (not recommended since they're not expected to work with a connected display) and then I repeat the whole series of tests also firing up cpuburn-a7 to get an idea how fast throttling occurs without heatsink with Xunlong's insane default vs. sane settings...

hojnikb 看全部
2015-12-8 02:25:44
Will you share the script for others to test ?
bronco 看全部
2015-12-8 03:33:54


hojnikb replied at 2015-12-8 02:25
Will you share the script for others to test ?

Of course. I saved it as /usr/local/bin/check-temperature.sh


  1. #!/bin/bash

  2. FexSetting1=/media/boot/script.bin.OPI-PC_1080p60
  3. FexSetting2=/media/boot/script.bin-display

  4. diff /media/boot/script.bin ${FexSetting1} >/dev/null 2>&1
  5. case $? in
  6.         0)
  7.                 cat ${FexSetting2} >/media/boot/script.bin
  8.                 ;;
  9.         *)
  10.                 cat ${FexSetting1} >/media/boot/script.bin
  11.                 ;;
  12. esac

  13. i=480000
  14. echo $i >/sys/devices/system/cpu/cpu0/cpufreq/scaling_min_freq
  15. echo $i >/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
  16. echo performance >/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor
  17. sleep $(( 15 * 60 ))

  18. read Maximum </sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq
  19. while [ $i -le ${Maximum} ]; do echo $i >/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq; echo $i; sleep 6; i=$(( $i + 2400 )); done
  20. sleep 300
  21. cpuburn-a7 &
  22. sleep 300
  23. while [ $i -gt 480000 ]; do echo $i >/sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq; echo $i; sleep 6; i=$(( $i - 2400 )); done
  24. pkill cpuburn-a7
  25. sleep 300
  26. shutdown -r now

It's called from within /etc/rc.local this way (the trailing " &" is important):


  1. /usr/local/bin/check-temperature.sh &
(ensure that "exit 0" follows later in /etc/rc.local).

The "sleep $(( 15 * 60 ))" statement ensures that 15 minutes after a reboot nothing happens (this is necessary to get correct thermal measurements when running the board headless, since the display controller will be activated after a hot or cold boot and disables itself after 10 minutes -- in case you use this with an active display you can lower the amount of time to 5 minutes). And then the script walks through all cpufrequencies starting from 480 MHz.

The 2 script.bin files containing different dvfs settings MUST exist and will be referenced through $FexSetting1 and $FexSetting2. Be careful. This is just a quick&dirty hack above. If the files you specify here don't exist, script.bin will be deleted and the next boot impossible!
bronco 看全部
2015-12-8 03:35:59
And you'll need cpuburn-a7 somewhere in your $PATH.
bronco 看全部
2015-12-8 06:00:27
I did a set of tests without heatsink (on 2nd OPi PC). There it's even more obvious what's wrong with the overvolted settings:

An increase in idle temperature of 12°C when exceeding 1.2 GHz just due to the different voltage levels. Insane. Also interesting the results under full load: http://linux-sunxi.org/User_talk:Tkaiser#Tests_without_a_heatsink

With the insane default settings the H3 wastes more energy when running under full load at 480 MHz than compared to sane settings while at 1.2 GHz. Another plus: Thermal throttling works way better. It seems the Vcore voltage is also considered. In my settings I use 1.24V at 1200 MHz and was able to finish sysbench tests while exceeding 80°C -- with the overvolted default settings throttling would've occured way earlier and sysbench results are worse. Depending on the thermal conditions (small enclosure for example) the sane settings might even improve performance compared to the overvolted defaults since throttling would occur later or not at all.

The best news is: If there's appropriate airflow possible not even a heatsink is needed but the H3 can still run with 1.2 GHz under full load over longer periods of time. Time to stop here.

OrangePi En

Powered by Discuz! X3.4

homepage|Simple edition|Touch edition|PC