[Gta04-owner] [Community] GTA04 power management [was: About cost and business models for community hardware]

H. Nikolaus Schaller hns at goldelico.com
Wed Oct 7 10:06:34 CEST 2015


Hi Neil.

Am 03.10.2015 um 05:16 schrieb Neil Brown <neilb at suse.de>:

> "H. Nikolaus Schaller" <hns at goldelico.com> writes:
>> 
>> Could you share a complete description of your setup? So that it is reproducible?
>> I.e. which kernel, which user space, command to suspend/wakeup, boot loader
>> version, how you measure suspend current etc.
>> 
> My test board in a GTA04A3, though my GTA04A4 shows much the same sort
> of numbers.

There shouldn't be big differences (some A3 boards may have an additional LIS302)

> 
> 
> User space is Debian/testing ... possibly with a bit of
> Debian/experimental (it is listed in my sources.list but I don't
> remember why).
> 
> I have a few of my own tools running, but they are all idle while I test
> power usage.
> So screen is blank, sound is off, GPS is off etc.  There is no SIM card
> and I haven't tried to access the GSM module at all.
> 
> I use the following script while connected to the serial console.
> The script disables RS-232 (as the sucks several mA) and turns of the
> power source (my board is powered via a 5V source on the 'AC' pins of
> the serial connector).
> Then it checks the battery, suspends for 5 minutes (default), wakes up
> and checks the power usage.
> I run that several times and discard the outliers.
> 
> With a 4.2 kernel at:
>   http://git.neil.brown.name/?p=gta04.git;a=shortlog;h=refs/heads/4.2-gta04
> I get numbers like:
> 
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 46967 uA over 301 seconds
> 47124 uA over 300 seconds
> 47124 uA over 300 seconds
> 47124 uA over 300 seconds
> 47124 uA over 300 seconds
> 47124 uA over 300 seconds
> 47124 uA over 300 seconds
> 47124 uA over 300 seconds
> 47281 uA over 299 seconds
> 47281 uA over 299 seconds
> 47600 uA over 297 seconds
> 
> 
> With the 3.7 kernel
> http://git.neil.brown.name/?p=gta04.git;a=shortlog;h=refs/heads/3.7-gta04
> I get:
> 
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21420 uA over 300 seconds
> 21709 uA over 296 seconds
> 23556 uA over 300 seconds
> 23568 uA over 300 seconds
> 36420 uA over 300 seconds
> 36420 uA over 300 seconds
> 
> 
> Disabling the RS-232 doesn't work on my 3.7 kernel (because the required
> GPIO isn't exported by the board file) so I have to unplug the RS-232 to
> get proper reading there, but I could easily fix that.
> 
> I'd be interested to hear what other people measure.

I have run a quick test with our Letux 4.3-rc4 kernel (on a GTA04A3 with
broken WiFi) and get readings ~170-190 mA.

Well, this is with backlight still enabled (we have no proper config for
that in our tree - it remains "white") and the red power button LED stays
on.

Backlight needs ~20mA at 18V which translates to ~100 mA (depends
on battery voltage). So this means the core goes down to less than
70 - 90mA.

And, I did not take care of turning off everything yet. Just a first test.

Subtracting the red LED and some peripherals which may stay powered
makes you readings reasonable. But to really compare I would need a
better test setup (which also requires to be able to charge the battery without
downgrading the kernel).

One observation is that the RTC wakeup does not trigger. I have to wake
up by pressing the power button.

> If you don't have a serial port connected you probably need to arrange
> some way to start in from the touch-screen, and then make sure the
> screen turns off.
> 
> NeilBrown
> 
> Script is:
> #!/bin/sh

I had to replace by /bin/bash to make $[...] recognised.

> 
> # disable charging, suspend for 5 minutes and report apparent
> # power usage by monitoring battery.
> 
> power1=/sys/class/power_supply/twl4030_usb/mode
> power2=/sys/class/power_supply/twl4030_ac/mode
> chg=/sys/class/power_supply/bq27000-battery/charge_now
> rs232=/sys/class/gpio/gpio13/value
> rs232dir=/sys/class/gpio/gpio13/direction
> delay=${1-300}
> [ -f $rs232 ] || { echo 13 > /sys/class/gpio/export; echo high > $rs232dir;}
> 
> stty raw -echo -cread
> echo 0 > $rs232
> echo off > $power1
> echo off > $power2
> before=`cat $chg`
> start=`date '+%s'`
> echo $[start+delay] > /sys/class/rtc/rtc0/wakealarm
> echo mem > /sys/power/state
> after=`cat $chg`
> end=`date '+%s'`
> echo 1 > $rs232
> stty sane
> echo auto > $power1
> echo auto > $power2
> 
> echo $[(before-after)*3600/(end-start)] uA over $[end-start] seconds


BR and thanks for sharing!

Nikolaus



More information about the Gta04-owner mailing list