X-Git-Url: https://pere.pagekite.me/gitweb/homepage.git/blobdiff_plain/003b81920f99022757fe66c24b275aebdc197782..5b6222f93f94e2721e119fb4a477de4a547e89ba:/blog/archive/2015/09/09.rss diff --git a/blog/archive/2015/09/09.rss b/blog/archive/2015/09/09.rss index f7636daaa6..4d3f6ab26e 100644 --- a/blog/archive/2015/09/09.rss +++ b/blog/archive/2015/09/09.rss @@ -6,6 +6,137 @@ http://people.skolelinux.org/pere/blog/ + + The life and death of a laptop battery + http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html + http://people.skolelinux.org/pere/blog/The_life_and_death_of_a_laptop_battery.html + Thu, 24 Sep 2015 16:00:00 +0200 + <p>When I get a new laptop, the battery life time at the start is OK. +But this do not last. The last few laptops gave me a feeling that +within a year, the life time is just a fraction of what it used to be, +and it slowly become painful to use the laptop without power connected +all the time. Because of this, when I got a new Thinkpad X230 laptop +about two years ago, I decided to monitor its battery state to have +more hard facts when the battery started to fail.</p> + +<img src="http://people.skolelinux.org/pere/blog/images/2015-09-24-laptop-battery-graph.png"/> + +<p>First I tried to find a sensible Debian package to record the +battery status, assuming that this must be a problem already handled +by someone else. I found +<a href="https://tracker.debian.org/pkg/battery-stats">battery-stats</a>, +which collects statistics from the battery, but it was completely +broken. I sent a few suggestions to the maintainer, but decided to +write my own collector as a shell script while I waited for feedback +from him. Via +<a href="http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html">a +blog post about the battery development on a MacBook Air</a> I also +discovered +<a href="https://github.com/jradavenport/batlog.git">batlog</a>, not +available in Debian.</p> + +<p>I started my collector 2013-07-15, and it has been collecting +battery stats ever since. Now my +/var/log/hjemmenett-battery-status.log file contain around 115,000 +measurements, from the time the battery was working great until now, +when it is unable to charge above 7% of original capasity. My +colletor shell script is quite simple and look like this:</p> + +<pre> +#!/bin/sh +# Inspired by +# http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html +# See also +# http://blog.sleeplessbeastie.eu/2013/01/02/debian-how-to-monitor-battery-capacity/ +logfile=/var/log/hjemmenett-battery-status.log + +files="manufacturer model_name technology serial_number \ + energy_full energy_full_design energy_now cycle_count status" + +if [ ! -e "$logfile" ] ; then + ( + printf "timestamp," + for f in $files; do + printf "%s," $f + done + echo + ) > "$logfile" +fi + +log_battery() { + # Print complete message in one echo call, to avoid race condition + # when several log processes run in parallell. + msg=$(printf "%s," $(date +%s); \ + for f in $files; do \ + printf "%s," $(cat $f); \ + done) + echo "$msg" +} + +cd /sys/class/power_supply + +for bat in BAT*; do + (cd $bat && log_battery >> "$logfile") +done +</pre> + +<p>The script is called when the power management system detect a +change in the power status (power plug in or out), and when going into +and out of hibernation and suspend. In addition, it collect a value +every 10 minutes. This make it possible for me know when the battery +is discharging, charging and how the maximum charge change over time. +The code for the Debian package +<a href="https://github.com/petterreinholdtsen/battery-status">is now +available on github</a>.</p> + +<p>The collected log file look like this:</p> + +<pre> +timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_full_design,energy_now,cycle_count,status, +1376591133,LGC,45N1025,Li-ion,974,62800000,62160000,39050000,0,Discharging, +[...] +1443090528,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full, +1443090601,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full, +</pre> + +<p>I wrote a small script to create a graph of the charge development +over time. This graph depicted above show the slow death of mylaptop +battery.</p> + +<p>But why is this happening? Why are my laptop batteries always +dying in a year or two, while the batteries of space probes and +satellites keep working year after year. If we are to believe +<a href="http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries">Battery +University</a>, the cause is me charging the battery whenever I have a +chance, and the fix is to not charge the Lithium-ion batteries to 100% +all the time, but to stay below 90% of full charge most of the time. +I've been told that the Tesla electric cars +<a href="http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit">limit +the charge of their batteries to 80%</a>, with the option to charge to +100% when preparing for a longer trip (not that I would want a car +like Tesla where rights to privacy is abandoned, but that is another +story), which I guess is the option we should have for laptops on +Linux too.</p> + +<p>Is there a good and generic way with Linux to tell the battery to +stop charging at 80%, unless requested to charge to 100% once in +preparation for a longer trip? I found +<a href="http://askubuntu.com/questions/34452/how-can-i-limit-battery-charging-to-80-capacity">one +recipe on askubuntu for Ubuntu to limit charging on Thinkpad to +80%</a>, but could not get it to work (kernel module refused to +load).</p> + +<p>I wonder why the battery capacity was reported to be more than 100% +at the start. I also wonder why the "full capacity" increases some +times, and if it is possible to repeat the process to get the battery +back to design capacity. And I wonder if the discharge and charge +speed change over time, or if this stay the same. I did not yet try +to write a tool to calculate the derivative values of the battery +level, but suspect some interesting insights might be learned from +those.</p> + + + Book cover for the Free Culture book finally done http://people.skolelinux.org/pere/blog/Book_cover_for_the_Free_Culture_book_finally_done.html