État de la batterie du Lenovo T440 inconnu, mais en charge?

14

J'essaie de configurer mon Lenovo sur arch linux. La dernière chose que je dois faire est de faire fonctionner la batterie à 100%.

À l'heure actuelle, il semble que l'état de la batterie principale soit inconnu:

> 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

Mais si j'interroge directement la batterie, j'obtiens une réponse complètement différente:

> 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

Je ne sais absolument pas quoi faire ici. J'ai un script rapportant la durée de vie de la batterie qui s'écoule de la sortie de certaines de ces commandes et je voudrais qu'il soit aussi complet que possible. De toute évidence, la batterie se charge, mais pourquoi acpi -V dirait-elle qu'elle est inconnue? Est-ce que quelqu'un sait?

Aqyr
la source
2
Je vois à peu près la même chose sur mes T460. Je pense que les deux batteries se chargent / déchargent à tour de rôle; actuellement, mon BAT0 est "En charge, 98%, 00:04:52 jusqu'à ce qu'il soit chargé", et mon BAT1 est "Inconnu, 79%", selon acpi. Laptop-mode-tools signale "Vous avez une batterie cassée. Impossible de déterminer l'état réel" , mais UPower a une heuristique pour déterminer que l'état réel de la batterie est "En charge".
Mathias Rav
1
Si l'ordinateur portable n'a qu'une seule batterie, il n'y a que 2 états possibles: "décharge" et "charge" (et, bien, "chargé à 100%"). Lorsqu'un ordinateur portable a 2 batteries, il peut utiliser une seule d'entre elles, alors l'état d'une deuxième batterie serait considéré comme "inconnu" (car il ne se charge ni ne se décharge). J'ai la même chose qui se passe avec mon Thinkpad X250, donc je suppose que c'est un comportement attendu.
ddnomad

Réponses:

0

Sur Arch, vous pouvez essayer d'installer le package tpacpi-bat(un script Perl avec ACPI appelle des ThinkPad récents (tels que T420 et W520) dont les seuils de batterie ne sont pas pris en charge par tp_smapi) avec

pacman -S tpacpi-bat

Cela pourrait aider à le réparer. Voir les informations sur la configuration ici .

PCFreak
la source
0

Il s'agit d'un problème courant avec les ordinateurs portables Thinkpad avec deux batteries.

Lorsque vous branchez votre ordinateur portable, il commence par charger BAT0 tandis que BAT1 signale un état inconnu. BAT1 signale un état de charge lorsque BAT0 est plein et que BAT1 commence réellement à se charger.

Vous devez en tenir compte dans votre script et combiner les valeurs de BAT0 et BAT1 pour que quelque chose soit utilisable:

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

Voici un exemple complet:

#!/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
la source