]> pere.pagekite.me Git - homepage.git/blobdiff - blog/data/2015-09-24-laptop-battery.txt
Generated.
[homepage.git] / blog / data / 2015-09-24-laptop-battery.txt
index 9630b186e4be632fee68b4c1525e107a029fcd93..5aa5026c8f93244eb2ea9f362cf1088ecbf08505 100644 (file)
@@ -1,35 +1,37 @@
-Title: The Life and death of a laptop battery
-Tags: english
-Date: 2015-09-24 20:00
-
-<p>When I get a new laptop, the battery life time of the lap top at
-the start is OK.  But this do not last.  I got 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 to it.
-Because of this, when I got a new Thinkpad X230 laptop almost two
-years ago, I decided to monitor its state to have more hard facts when
-the battery started to fail.</p>
+Title: The life and death of a laptop battery
+Tags: english, debian
+Date: 2015-09-24 16:00
+
+<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
-<ahref="https://tracker.debian.org/pkg/battery-stats">battery-stats</a>,
+<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
-<ahref="http://www.ifweassume.com/2013/08/the-de-evolution-of-my-laptop-battery.html">a
+<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
-<ahref="https://github.com/jradavenport/batlog.git">batlog</a>, not
+<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 look like this:</p>
+when it is unable to charge above 7% of original capacity.  My
+collector shell script is quite simple and look like this:</p>
 
 <pre>
 #!/bin/sh
@@ -54,7 +56,7 @@ fi
 
 log_battery() {
     # Print complete message in one echo call, to avoid race condition
-    # when several log processes run in parallell.
+    # when several log processes run in parallel.
     msg=$(printf "%s," $(date +%s); \
        for f in $files; do \
            printf "%s," $(cat $f); \
@@ -73,8 +75,12 @@ done
 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 log file look like this:</p>
+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,
@@ -84,25 +90,46 @@ timestamp,manufacturer,model_name,technology,serial_number,energy_full,energy_fu
 1443090601,LGC,45N1025,Li-ion,974,4900000,62160000,4900000,0,Full,
 </pre>
 
-<p>I even wrote a small script to create a graph of the charge
-development over time.  This show the slow death of my Lenovo Thinkpad
-X230 laptop battery:</p>
+<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 my laptop
+battery.</p>
 
-<img src="images/2015-09-24-laptop-battery-graph.png"/>
-
-<p>But why is this happening?  Why are my laptop batteries dying,
-while the batteries of space probes and satellites keep working year
-after year.  If we are to believe
-<ahref="http://batteryuniversity.com/learn/article/how_to_prolong_lithium_based_batteries">Battery
-University</a>, 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
-<ahref="http://my.teslamotors.com/de_CH/forum/forums/battery-charge-limit">limit
+<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 Tesla,
-but that is another story), which I guess is the option we should have
-for laptops on Linux too.</p>
+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>
 
-<p>Is there a 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?</p>
+<p>Update 2015-09-24: I got a tip to install the packages
+acpi-call-dkms and tlp (unfortunately missing in Debian stable)
+packages instead of the tp-smapi-dkms package I had tried to use
+initially, and use 'tlp setcharge 40 80' to change when charging start
+and stop.  I've done so now, but expect my existing battery is toast
+and need to be replaced.  The proposal is unfortunately Thinkpad
+specific.</p>