Se desconoce el estado de la batería del Lenovo T440s, pero ¿se está cargando?


14

Estoy tratando de configurar mi Lenovo en Arch Linux. Lo último que necesito hacer es que la batería funcione al 100%.

En este momento parece que se desconoce el estado de la batería principal:

> 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

Pero si consulto la batería directamente, obtengo una respuesta 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

Estoy completamente perdido en cuanto a qué hacer aquí. Tengo un script que informa sobre la duración de la batería que se sale de la salida de algunos de estos comandos y me gustaría que fuera lo más completo posible. Claramente, la batería se está cargando, pero ¿por qué acpi -V dice que es desconocida? ¿Alguien sabe?


2
Veo casi lo mismo en mis T460. Creo que las dos baterías se turnan para cargar / descargar; actualmente mi BAT0 está "Cargando, 98%, 00:04:52 hasta que se cargue", y mi BAT1 es "Desconocido, 79%", según acpi. Laptop-mode-tools informa "Tiene una batería rota. No se puede determinar el estado real" , pero UPower tiene una heurística para determinar que el estado real de la batería es "Carga".
Mathias Rav

1
Si la computadora portátil tiene una sola batería, solo hay 2 estados posibles: "descargando" y "cargando" (y, bueno, "cargada al 100%"). Cuando una computadora portátil tiene 2 baterías, puede usar solo una de ellas, entonces el estado de una segunda batería se considerará "desconocido" (ya que no se está cargando ni descargando). Me sucede lo mismo con mi Thinkpad X250, así que supongo que es un comportamiento esperado.
ddnomad 01 de

Respuestas:


0

Mientras esté en Arch, puede intentar instalar el paquete tpacpi-bat(un script de Perl con llamadas ACPI para ThinkPads recientes (como T420 y W520) cuyos umbrales de batería no son compatibles con tp_smapi) con

pacman -S tpacpi-bat

Podría ayudar a arreglarlo. Ver información sobre la configuración aquí .


0

Este es un problema común con las computadoras portátiles Thinkpad con baterías duales.

Cuando conecte su computadora portátil, comenzará cargando BAT0 mientras BAT1 informa un estado desconocido. BAT1 informará un estado de carga cuando BAT0 esté lleno y BAT1 realmente comience a cargar.

Debe tener esto en cuenta en su secuencia de comandos y combinar valores para BAT0 y BAT1 para tener algo utilizable:

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"))

Aquí hay un ejemplo 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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.