page.title=Measuring Power Values @jd:body

In this document

    Device manufacturers must provide a component power profile in /frameworks/base/core/res/res/xml/power_profile.xml.

    To determine values for power profiles, use hardware that measures the power being used by the device and perform the various operations for which information is needed. Measure the power use during those operations and compute the values (deriving differences from other baseline power uses as appropriate).

    As the goal of a power profile is to estimate battery drain appropriately, power profile values are given in current (amps). The Android framework multiplies the current by the time for which the subsystem was active and computes the mAh value, which is then used to estimate the amount of battery drained by the application/subsystem.

    Devices with Bluetooth and Wi-Fi controllers running Android 6.0 and higher can provide additional power values obtained from chipset data.

    Devices with heterogeneous CPUs

    The power profile for devices with CPU cores of heterogeneous architecture must include the following additional fields:

    To differentiate between active CPUs and supported CPU speeds for each cluster, append the cluster number to the name of the array. Example:

    <array name="cpu.active.cluster0">
    <value>200</value>
    <value>300</value>
    <value>400</value>
    </array>
    <array name="cpu.speeds.cluster0">
    <value>600000</value>
    <value>800000</value>
    <value>1200000</value>
    </array>
    
    <array name="cpu.active.cluster1">
    <value>400</value>
    <value>500</value>
    <value>600</value>
    </array>
    <array name="cpu.speeds.cluster1">
    <value>800000</value>
    <value>1200000</value>
    <value>1400000</value>
    </array>
    

    Power values

    The following table describes available power value settings. To view the sample file in AOSP, see power_profile.xml.

    Name Description Example Value Notes
    none Nothing 0
    screen.on Additional power used when screen is turned on at minimum brightness. 200mA Includes touch controller and display backlight. At 0 brightness, not the Android minimum which tends to be 10 or 20%.
    screen.full Additional power used when screen is at maximum brightness, compared to screen at minimum brightness. 100mA-300mA A fraction of this value (based on screen brightness) is added to the screen.on value to compute the power usage of the screen.
    bluetooth.active Additional power used when playing audio through Bluetooth A2DP. 14mA
    bluetooth.on Additional power used when Bluetooth is turned on but idle. 1.4mA
    wifi.on Additional power used when Wi-Fi is turned on but not receiving, transmitting, or scanning. 2mA
    wifi.active Additional power used when transmitting or receiving over Wi-Fi. 31mA
    wifi.scan Additional power used when Wi-Fi is scanning for access points. 100mA
    dsp.audio Additional power used when audio decoding/encoding via DSP. 14.1mA Reserved for future use.
    dsp.video Additional power used when video decoding via DSP. 54mA Reserved for future use.
    camera.avg Average power use by the camera subsystem for a typical camera application. 600mA Intended as a rough estimate for an application running a preview and capturing approximately 10 full-resolution pictures per minute.
    camera.flashlight Average power used by the camera flash module when on. 200mA
    gps.on Additional power used when GPS is acquiring a signal. 50mA
    radio.active Additional power used when cellular radio is transmitting/receiving. 100mA-300mA
    radio.scanning Additional power used when cellular radio is paging the tower. 1.2mA
    radio.on Additional power used when the cellular radio is on. Multi-value entry, one per signal strength (no signal, weak, moderate, strong). 1.2mA Some radios boost power when they search for a cell tower and do not detect a signal. Values can be the same or decrease with increasing signal strength. If you provide only one value, the same value is used for all strengths. If you provide two values, the first is used for no-signal, the second value is used for all other strengths, and so on.
    cpu.speeds Multi-value entry that lists each possible CPU speed in KHz. 125000KHz, 250000KHz, 500000KHz, 1000000KHz, 1500000KHz The number and order of entries must correspond to the mA entries in cpu.active.
    cpu.idle Total power drawn by the system when CPUs (and the SoC) are in system suspend state. 3mA
    cpu.awake Additional power used when CPUs are in scheduling idle state (kernel idle loop); system is not in system suspend state. 50mA Your platform might have more than one idle state in use with differing levels of power consumption; choose a representative idle state for longer periods of scheduler idle (several milliseconds). Examine the power graph on your measurement equipment and choose samples where the CPU is at its lowest consumption, discarding higher samples where the CPU exited idle.
    cpu.active Additional power used by CPUs when running at different speeds. 100mA, 120mA, 140mA, 160mA, 200mA Value represents the power used by the CPU rails when running at different speeds. Set the max speed in the kernel to each of the allowed speeds and peg the CPU at that speed. The number and order of entries correspond to the number and order of entries in cpu.speeds.
    cpu.clusters.cores Number of cores each CPU cluster contains. 4, 2 Required only for devices with heterogeneous CPU architectures. Number of entries and order should match the number of cluster entries for the cpu.active and cpu.speeds. The first entry represents the number of CPU cores in cluster0, the second entry represents the number of CPU cores in cluster1, and so on.
    battery.capacity Total battery capacity in mAh. 3000mAh

    Devices with Bluetooth and Wi-Fi controllers

    Devices with Bluetooth and Wi-Fi controllers running Android 6.0 and higher can be polled for the following energy use data:

    Time values are not measured but are instead available from respective chip specifications and must be explicitly stated (for details, see Wi-Fi, Bluetooth, and cellular usage). To convert time values to power values, the framework expects four (4) values for each controller in a resource overlay at /frameworks/base/core/res/res/values/config.xml.

    Controller Values/Resource Names Description
    Bluetooth< android:integer/config_bluetooth_idle_cur_ma Average current draw (mA) of the Bluetooth controller when idle.
    Bluetooth android:integer/config_bluetooth_active_rx_cur_ma Average current draw (mA) of the Bluetooth controller when receiving.
    Bluetooth android:integer/config_bluetooth_tx_cur_ma Average current draw (mA) of the Bluetooth controller when transmitting.
    Bluetooth android:integer/config_bluetooth_operating_voltage_mv Average operating voltage (mV) of the Bluetooth controller.
    Wi-Fi android:integer/config_wifi_idle_receive_cur_ma Average current draw (mA) of the Wi-Fi controller when idle.
    Wi-Fi android:integer/config_wifi_active_rx_cur_ma Average current draw (mA) of the Wi-Fi controller when receiving.
    Wi-Fi android:integer/config_wifi_tx_cur_ma average current draw (mA) of the Wi-Fi controller when transmitting.
    Wi-Fi android:integer/config_wifi_operating_voltage_mv Average operating voltage (mV) of the Wi-Fi controller.