Running H3 boards with minimal consumption

Recommended Posts

Donate and support the project!

I've tested OPI ONE/LITE with moderate loads running stably from very modest power banks. The superior performance compared to RasPis ( ZERO/A+/B+/2 ) clearly make the OPIs the boards of choice. Good to know settings can be further adjusted from user space.

Link to post
Share on other sites

Hmm... I'm somewhat sceptical since at least with RPi Zero you can decrease idle consumption a lot:


Idle consumption is just perfect for the null use case :) RasPI Zero/ A+ are great as low power IoT gateways for sub-Arduino ATTINYs operating on watchdog. Higher up in the food chain OPIs deliver all the Linux fun at reasonable consumption. "Power on demand" for OPIs, idling at very low power and bursting to full blast when actually needed, is a very interesting strategy when running the boards from batteries. Thank you for the hints :) .

Link to post
Share on other sites

tkaiser said : "For RPi Zero exactly zero use cases come to my mind"


Well, I have an old Raspi A that serve a dozen of relays, IR transmitter, buzzer, Bluetooth remote, and other goodies. A 80286 would do the job. Idem with an other Pi for a waker (lamp + buzzer + radio), and other for temp sensors ...


So my personal use cases are low power, low consumption devices in a BT pan network. Ideally, I should use aduinos and mesh zigbee or z-wave network, but it would cost much more time and money !


So I am very interested in nanopi neo as RPI zero is so hard to find. Thanks for your work. Even if you dont have use cases for some cards, other will have the needs that match the specs. (I dont use a computer anymore but a network of arm nodes with specific roles : server, fw, desktop ...)

Link to post
Share on other sites

700 mW for a single device with its own PSU is good : small 5V PSU typically are rated 0.3 W consumption without any load and max 70% efficiency (only when power demand is near nominal power). Those who want to build a cluster (or a group of devices) should also invest in a good PSU to power the whole cluster + disk + hubs + goodies at around 80% of nominal power.

Link to post
Share on other sites

"Different people, different needs!"


Well, my first Unix workstation was a microVax (Digital Equipment). One tiny mips and it ran X11 !


My new H3 BPI boasts :

SMP: Total of 4 processors activated (19200.00 BogoMIPS)



I should say my new BPI M2+ is not the best card I ever saw, but eMMC is very valuable. It replaces now a RPI-B as firewall/gateway with 10 times cpu power and IO bandwith but with half the consumption (2 Ethernet - GbE + USB, wifi, Bluetooth, no display = 2,5 W - PSU has 75% efficiency). The (2nd level) http proxy cache can now run on the gateway thanks to eMMC).


I will test DRAM lower frequency after reinstalling the mail gateways.

Link to post
Share on other sites



I found I could spare 300 mW and 3° at idle by disabling 2 cpu, but I dont have any change by setting dram_clk = 480 in dram_para in script.bin.


Did I miss something ?


(BPI M2+ 3.4.112-sun8i #8 SMP PREEMPT Mon Jun 20 12:54:33 CEST 2016 armv7l ARMv7 Processor rev 5 (v7l) sun8i GNU/Linux stock kernel)

Link to post
Share on other sites



Thanks a lot. I spared another 200 mW and 3° ! I can now run my "gatekeeper" with less than 2W (no video, 2 cpu) - initially more than 5W with an (untuned) RPI-B with outdated software.


Benchmarking performance in real world for my use case is not so easy and I have to think of a method. The usage is interactive (text filtering by privoxy) and the final result depends from network, and complex pipelining. I already found in first test that cpufreq governor parameters were optimal in armbian.


Energy saving (and heat dissipation) is a complex matter anyway but not so important during winter ! As a matter of fact, I spare 20W by shutting down my ISP TV box and audio booster with relays, and I can spare much more by driving intelligently my central heating circulator. I would like to have humidity sensors everywhere in the house because a leakage can cost you up to 1000 times the cost of a card if you dont detect it. So my next project will be to find the best card for IOT projects, even if I must downgrade performance of a 4 core, 1,5 GHz, 1Go RAM card - as manufacturers are not so much interested in providing cheap and light solutions.

Link to post
Share on other sites

A quick test show that I can spare 150 mW by downgrading ethernet to 100 Mbits - witch is not surprising. (ethtool -s eth0 speed 100 duplex full).


Modern switchs boast having adaptative power (with port usage and wire length). I use currently a 10 meters cable and will check the difference when I moved the swith and use shorter cable. But I dont expect a difference for BPI m2+ as the power consumption does not lower at idle when I unplug the cable.

Link to post
Share on other sites


Anyone wants to play a bit? Here are .debs of a patched kernel with DRAM clockspeed as low as 132 MHz:

# cat lib/patch/kernel/sun8i-default/0028-h3-limit-dram-clock-to-132-mhz.patch 
diff --git a/drivers/devfreq/dramfreq/sunxi-ddrfreq.c b/drivers/devfreq/dramfreq/sunxi-ddrfreq.c
index c7c20b7..7581087 100755
--- a/drivers/devfreq/dramfreq/sunxi-ddrfreq.c
+++ b/drivers/devfreq/dramfreq/sunxi-ddrfreq.c
@@ -1666,7 +1666,7 @@ static __devinit int sunxi_ddrfreq_probe(struct platform_device *pdev)
 	if (sunxi_ddrfreq_min < SUNXI_DDRFREQ_MINFREQ_MIN)
 		sunxi_ddrfreq_min = sunxi_ddrfreq_max / 3;
 #elif defined(CONFIG_ARCH_SUN8IW7P1)
-	sunxi_ddrfreq_min = 408000;
+	sunxi_ddrfreq_min = 132000;
 	type = script_get_item("dram_para", "dram_tpr12", &val);

Installation as usual -- unpack the tar archive and then do as root in the same directory:

dpkg -i linux-headers-sun8i_5.17_armhf.deb linux-image-sun8i_5.17_armhf.deb

Reducing DRAM clockspeed to just 132 MHz further reduces consumption. But performance is also affected of course. You would need to put the following to eg. /etc/rc.local or a cron job:

echo 132000 >/sys/devices/platform/sunxi-ddrfreq/devfreq/sunxi-ddrfreq/userspace/set_freq 2>/dev/null


Is this patch included in the armbian build tools or do I need to enable it somehow?


I've just built armbian kernel images for my nanopineo on Devuan Jessie (yes I know it's unsupported but I got it working after some trial and error).... It appears from my logs that this patch is not applied to the kernel I just built. I'm wanting to build a specific SPI LCD driver into the kernel as well as use the lower memory clocks.


Edit: never mind I didn't notice the file path you passed to cat above... I stuck it there and I expect that will work ;-)

Link to post
Share on other sites

Just disabling GPU/HDMI for headless use works great for OPI ONE/LITE. A customized x2go LXDE-desktop on OPI ONE accessed via WiFi or LAN uses just 85M RAM and "idles" around 900mW (LAN) - 1200mW (WLAN). That's just fine to run the boards from dirt cheap 18650 power bank hacks with passthrough charging.

Link to post
Share on other sites

I'm going to investigate thist stuff tomorrow, but I wanted to ask about my main usage case.  I have an OjPi PC running a chess engine 24/7 on two cores atm, but could use 4 soon. Anyway, it does a LOT of idling, so I'd like to reduce power there if possible, but obviously when a game starts, it can require 100% DRAM and CPU for long periods.  It doesn't think during the opening, and occasionally (due to the nature of chess engines) it is unable to come up with a move to ponder while waiting for the opponent. So it does sometimes go back to idle during a game, just not for long.


I don't think a cron solution for DRAM will work in this scenario, but clearly reducing DRAM speed is desirable if it can kick back up when needed. I don't need any USB ports active, though it's in a location where it's rarely useful to use the box for fdisk or a TTL connection via screen.  HDMI is off, but I don't think it's done in the fex file.  It gets not much network activity, but relatively constant trickle.


What do you think?

Link to post
Share on other sites

One funny thing with BPI m2+ is the drop in CPU temp when you lower ... Ethernet speed from 1000 to 100 Mb/s. Something like 1.5° if the card is in open air and 3° in a close case. (conditions : no heatsink, aluminium case, temp 41° at idle, 26° ambiant).


So I would say the PCB is responsible for half of it.


N.B. The effect is probably less important proportionally when temp raise at 60°+ in active computing.

Link to post
Share on other sites
  • Igor unpinned this topic
This topic is now closed to further replies.