﻿


Building & Installing PowerTOP
------------------------------

To build and install PowerTOP type the following commands, 
	./configure 
	./make
	./make install

Note: For Android (running Intel Architecture ) there is a Android.mk 
that was provided by community members, and at this time is supported
 mostly by community members. 

Build dependencies
------------------

PowerTOP uses C++, and expects g++ and libstdc++ to be functional 
along with a glibc/pthreadsi, autoconf, automake, and libtool in the 
development environment.
 

in addition to that, PowerTOP requires the following components:

pciutils-devel (is only required if you have PCI) 
ncurses-devel 
libnl-devel
kernel version => 2.6.38

Kernel Parameters:
------------------

PowerTOP needs some kernel config options enabled in order function properly.
As of linux-3.3.0 these are (list probably incomplete):

CONFIG_NO_HZ
CONFIG_HIGH_RES_TIMERS
CONFIG_HPET_TIMER
CONFIG_CPU_FREQ_GOV_ONDEMAND
CONFIG_USB_SUSPEND
CONFIG_SND_AC97_POWER_SAVE
CONFIG_TIMER_STATS
CONFIG_PERF_EVENTS
CONFIG_PERF_COUNTERS
CONFIG_TRACEPOINTS
CONFIG_TRACING
CONFIG_EVENT_POWER_TRACING_DEPRECATED
ACPI_PROCFS_POWER

The patches in the patches/ sub-directory are required for PowerTOP to function
fully.



Outputting a report
-------------------
When invoking PowerTOP without arguments, PowerTOP starts in interactive mode.
However, for reporting bugs etc there is a special reporting modes:

For an HTML formatted report simply execute PowerTOP with the following,  

powertop --html

which will create a "powertop.html" file which is static and can be sent to
others to help diagnose power issues. Additionally has the feature of showing 
the tunables executions withing the report as a reference. 

Note for the developers: If you make changes on the report format please
make sure that the output can be cleanly validated by the W3C Markup
Validation Service and W3C CSS Validation Service:
 * http://validator.w3.org/#validate_by_upload
 * http://jigsaw.w3.org/css-validator/#validate_by_upload

For a CSV formatted report, simply execute PowerTOP with the following, 

Powertop --csv 

which will create a “powertop.csv” file which is static and can be used in 
reporting, diagnoses, and analytical data analysis. 

Also you can set the number of iterations, and duration of test, in which case 
all reports will time stamp for you. 

Calibrating & Power Numbers
---------------------------
PowerTOP will, when running on battery, track your power consumption as well
as your activity on the system. Once there are sufficient such measurements,
PowerTOP can start to report power estimates for various activities.
You can help get this estimation more accurate by running a calibration
cycle:

powertop --calibrate

at least once; this will cycle through various display brightness levels
(including "off") as well as USB device activities and some other workloads.


Code from other open source projects
------------------------------------
PowerTOP contains some code from other open source projects; we'd like to
thank the authors of those projects for their work. 
Specifically PowerTOP contains code from

Parse Event Library - Copyright 2009, 2010 Red Hat Inc  Steven Rosted <srostedt@redhat.com>
nl80211 userspace tool - Copyright 2007, 2008	Johannes Berg <johannes@sipsolutions.net>


Extech Power Analyzer / Datalogger support
------------------------------------------
I use, and our analysis teams use, the Extech Power Analyzer/Datalogger
(model number 380803) quite a lot, and PowerTOP supports using this
device over the serial cable. Just pass the device node on the command line
like this

powertop --extech=/dev/ttyUSB0

(where ttyUSB0 is the devicenode of the serial-to-usb adapter on my system)

