Status da bateria do Lenovo T440s desconhecido, mas carregando?

14

Estou tentando configurar meu Lenovo no arch linux. A última coisa que preciso fazer é deixar a bateria 100% funcionando.

No momento, parece que o estado da bateria principal é desconhecido:

> acpi -V
Battery 0: Unknown, 97%
Battery 0: design capacity 5849 mAh, last full capacity 5956 mAh = 100%
Battery 1: Charging, 96%, 00:05:50 until charged
Battery 1: design capacity 1861 mAh, last full capacity 1536 mAh = 82%
Adapter 0: on-line
Thermal 0: ok, 43.0 degrees C
Thermal 0: trip point 0 switches to mode critical at temperature 200.0 degrees C
Cooling 0: x86_pkg_temp no state information available
Cooling 1: intel_powerclamp no state information available
Cooling 2: Processor 0 of 10
Cooling 3: Processor 0 of 10
Cooling 4: Processor 0 of 10
Cooling 5: Processor 0 of 10

Mas se eu consultar a bateria diretamente, recebo uma resposta completamente diferente:

> cat /sys/class/power_supply/BAT0/status
Charging

> cat /sys/class/power_supply/BAT0/uevent
POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_STATUS=Charging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11100000
POWER_SUPPLY_VOLTAGE_NOW=12389000
POWER_SUPPLY_POWER_NOW=0
POWER_SUPPLY_ENERGY_FULL_DESIGN=23200000
POWER_SUPPLY_ENERGY_FULL=19150000
POWER_SUPPLY_ENERGY_NOW=19050000
POWER_SUPPLY_CAPACITY=99
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_MODEL_NAME=45N1773
POWER_SUPPLY_MANUFACTURER=SANYO
POWER_SUPPLY_SERIAL_NUMBER=16120

Estou completamente perdido quanto ao que fazer aqui. Eu tenho um script que relata a duração da bateria que foge da saída de alguns desses comandos e gostaria que fosse o mais completo possível. Claramente, a bateria está carregando, mas por que o acpi -V diz que é desconhecido? Alguém sabe?

Aqyr
fonte
2
Vejo aproximadamente o mesmo nos meus T460s. Eu acho que as duas baterias se revezam carregando / descarregando; atualmente meu BAT0 é "Carregando, 98%, 00:04:52 até ser carregado", e meu BAT1 é "Desconhecido, 79%", de acordo com a acpi. As ferramentas do modo laptop relatam "Você está com a bateria quebrada. Não é possível determinar o estado real" , mas a UPower possui uma heurística para determinar que o estado real da bateria está "Carregando".
Mathias Rav
1
Se o laptop tiver apenas uma bateria, existem apenas 2 estados possíveis: "descarregando" e "carregando" (e, bem, "cobrado 100%"). Quando um laptop tem 2 baterias, ele pode usar apenas uma delas, então o estado de uma segunda bateria seria considerado "desconhecido" (pois não está carregando nem descarregando). Eu tenho a mesma coisa acontecendo com o meu Thinkpad X250, então presumo que esse seja um comportamento esperado.
ddnomad

Respostas:

0

Enquanto estiver no Arch, você pode tentar instalar o pacote tpacpi-bat(um script Perl com ACPI chama ThinkPads recentes (como T420 e W520) cujos limites de bateria não são suportados por tp_smapi) com

pacman -S tpacpi-bat

Isso poderia ajudar a consertá-lo. Veja informações sobre a configuração aqui .

PCFreak
fonte
0

Esse é um problema comum em laptops Thinkpad com duas baterias.

Quando você conecta seu laptop, ele inicia o carregamento do BAT0 enquanto o BAT1 relata um estado desconhecido. O BAT1 informa um estado de carregamento quando BAT0 está cheio e o BAT1 realmente começa a carregar.

Você precisa levar isso em conta no seu script e combinar valores para BAT0 e BAT1 para ter algo útil:

battery_level=$(("$battery_level_0 + $battery_level_1"))
battery_max=$(("$battery_max_0 + $battery_max_1"))

battery_percent=$(("$battery_level * 100"))
battery_percent=$(("$battery_percent / $battery_max"))

Aqui está um exemplo completo:

#!/bin/sh

path_ac="/sys/class/power_supply/AC"
path_battery_0="/sys/class/power_supply/BAT0"
path_battery_1="/sys/class/power_supply/BAT1"

ac=0
battery_level_0=0
battery_level_1=0
battery_max_0=0
battery_max_1=0

if [ -f "$path_ac/online" ]; then
    ac=$(cat "$path_ac/online")
fi

if [ -f "$path_battery_0/energy_now" ]; then
    battery_level_0=$(cat "$path_battery_0/energy_now")
fi

if [ -f "$path_battery_0/energy_full" ]; then
    battery_max_0=$(cat "$path_battery_0/energy_full")
fi

if [ -f "$path_battery_1/energy_now" ]; then
    battery_level_1=$(cat "$path_battery_1/energy_now")
fi

if [ -f "$path_battery_1/energy_full" ]; then
    battery_max_1=$(cat "$path_battery_1/energy_full")
fi

battery_level=$(("$battery_level_0 + $battery_level_1"))
battery_max=$(("$battery_max_0 + $battery_max_1"))

battery_percent=$(("$battery_level * 100"))
battery_percent=$(("$battery_percent / $battery_max"))

if [ "$ac" -eq 1 ]; then
    plug=""

    echo "$plug $battery_percent %"
else
    if [ "$battery_percent" -gt 95 ]; then
        echo ""
    elif [ "$battery_percent" -gt 85 ]; then
        icon=""
    elif [ "$battery_percent" -gt 60 ]; then
        icon=""
    elif [ "$battery_percent" -gt 35 ]; then
        icon=""
    elif [ "$battery_percent" -gt 10 ]; then
        icon=""
    else
        icon=""
    fi

    echo "$icon $battery_percent %"
fi
ldclrcq
fonte