1

As the question reads, I want to log the current in milliAmpere or Ampere (both charging and discharging) over a period of time.

Please note I am not asking about charging or discharging rate, but rather on the current. I am aware of the app called Ampere which displays the current, which is good but I want them logged over a period of time. I am also aware of the app Battery Log, which logs the details but not the current.

Device info: Nexus 5 rooted, running stock 5.1.1. Ready to install custom kernel but stock ROM only.

Edit: Based on a comment from Firelord, I could see a file in /sys/class/power_supply/battery/current_now which at the moment of writing had a number 835910 and after a second it became 695229, then 673163. All these values were during the discharge phase.

When plugged in, it showed 412190 and the Ampere app showed 160mA. It seems this is the current, but I guess I have to average it out to compare it with Ampere's output.

Interestingly, there is another file named status which has values charging and discharging.

I also happen to know another question in this site.

4
  • 1
    In my Android 4.2.1, I found that this Ampere app is showing the values made available by the kernel under /sys/class/power_supply/.... It was easy for me to see the real value inside the file but Lollipop has made some changes so I can't find out which new file holds the value for current. Anyhow, if you do end-up with such file then use Tasker app to log the value for your time period.
    – Firelord
    Jul 20, 2015 at 14:58
  • Thanks @Firefox for your input. You should compile your comment as answer so that I can up vote and accept it as well.
    – Narayanan
    Jul 22, 2015 at 4:39
  • Done posting it, and I was reluctant to post the answer but your edit about current_now made me to rethink about posting. :)
    – Firelord
    Jul 22, 2015 at 16:10
  • My bad, the auto correction features at times are just nuisance and at times funny. Please read "Thanks [at]Firefox for your input" as "Thanks [at]Firelord for your input".
    – Narayanan
    Jul 23, 2015 at 11:00

3 Answers 3

3

Ampere shows us the value of current made available to the system by the kernel. I used three devices with different Android versions to test my answer. Here we go!


Test 1 & 2: Two MTK devices running stock Android 4.2.1 and 4.4.2

Since MTK is involved, thing would behave a bit differently. In both the devices Ampere had trouble measuring the current not because it couldn't, but two files were available to measure the current, and the user had to choose one from its Settings → Basic settings → Measurement interface. (Rant: A design flaw I tend to think since I wasn't aware of that before digging it up).

The two files for my Android 4.2.1:

/sys/device/platform/mt6320-battery/power_supply/battery/BatteryAverageCurrent
/sys/class/power_supply/battery/BatteryAverageCurrent

The two files for my Android 4.4.2:

/sys/device/platform/battery/power_supply/battery/BatteryAverageCurrent
/sys/class/power_supply/battery/BatteryAverageCurrent

The file BatteryAverageCurrent would show a numeric value with no mention of any unit (be it A or mA).

In my devices, both the files (second was the symlink of the first) had the same value (dynamic, Current varies of course) like 440 when connected to PC, and 880 when connected to charger. Correspondingly, Ampere showed the similar value with a slight mismatch of +- 1-10 mA. // Somebody on XDA said that this app doesn't show true values, but that's none of my concern honestly.

Test 3: A Qualcomm device running Android 5.0.2 (CyanogenOS 12)

I read that Google made changes in Lollipop related to measurement of current, and among other things, BatteryAverageCurrent is nowhere to be found in the system, at least not in my system. Don't blame me since I didn't verify whether the changes were introduce in Lollipop or before, and it's not really a concern to test the things here.

Before I tell the tale further I should mention that Ampere had no trouble in this device even though there were two files to measure current:

/sys/devices/00-qcom,charger/power_supply/battery/current_now
/sys/class/power_supply/battery/current_now

Not to mention that the second one is the symlink of the first one, and 00-qcom,charger may differ in your device.

Anyhow, when it comes to the content of the current_now you can consider everything same as in BatteryAverageCurrent except that the value was in negative like -180 or -840 (don't ask me why?)

There's more

The last directory named battery has some other cool stuff which might interest some people. Checkout them like Battery temperature, Voltage, capacity, among other things.

If you want a summary of them, look at uevent file whose output would be like:

POWER_SUPPLY_NAME=battery
POWER_SUPPLY_CHARGING_ENABLED=1
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_CHARGE_TYPE=Unknown
POWER_SUPPLY_HEALTH=Good
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_ONLINE=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_VOLTAGE_MAX_DESIGN=4350000
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=4400000
POWER_SUPPLY_VOLTAGE_NOW=4316000
POWER_SUPPLY_CAPACITY=100
POWER_SUPPLY_CURRENT_NOW=0  
POWER_SUPPLY_INPUT_CURRENT_MAX=100000
POWER_SUPPLY_INPUT_CURRENT_TRIM=33
POWER_SUPPLY_INPUT_CURRENT_SETTLED=0
POWER_SUPPLY_VOLTAGE_MIN=4300000
POWER_SUPPLY_INPUT_VOLTAGE_REGULATION=1
POWER_SUPPLY_CHARGE_FULL_DESIGN=0
POWER_SUPPLY_CHARGE_FULL=0
POWER_SUPPLY_TEMP=311
POWER_SUPPLY_TEMP_COOL=0
POWER_SUPPLY_TEMP_WARM=0
POWER_SUPPLY_SYSTEM_TEMP_LEVEL=0
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_CHARGE_NOW=5048
POWER_SUPPLY_FASTCHARGER=0
POWER_SUPPLY_CHARGE_TIMEOUT=1

And if (somehow) you're wondering about 0 in POWER_SUPPLY_CURRENT_NOW=0 then know that POWER_SUPPLY_CAPACITY=100 i.e. charging was complete and even Ampere was showing 0mA.


As for Logging, sorry! since I've no detailed solution as I didn't bother because the logging can be done using an automation tool like Tasker.

But a brief usage of Tasker must be told:

  • Create a profile based on time or the type that suits your goal.
  • There are two file actions under the action File namely Read File and Write File. If it doesn't work, then you can always do cat <SOURCE> >> <DESTINATION> using the action Code → Run Shell and you don't need root access.

We're good to go now!

3

This is not as in-depth as FireLord's answer, but I found a few apps that might be useful.

These all appear monitor current and have a log feature:

These are more general system monitors but they appear to include battery stats and logging:

1
  • 2
    +1 for listing all the apps. Though I haven't tested them yet, but they look promising. And I must say, I was drawn into my answer that I forgot about such easy solution as apps available at our disposal. //And, it's good that you mentioned the developer's name against the app name which made it easy to look for the apps. On a side note, it's not that we deal with new users who post answers with good formatting in general. Anyway. :)
    – Firelord
    Jul 22, 2015 at 16:49
1

I tried all of the above apps, but in 2020 they all are either no longer existing or they do not log the data like we hoped.

This one does, though:

3C Battery Monitor Widget

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .