Lenovo T440s Akkustatus unbekannt, wird aber aufgeladen?

13

Ich versuche mein Lenovo unter Arch Linux zu konfigurieren. Das Letzte, was ich tun muss, ist, den Akku 100% funktionsfähig zu machen.

Momentan scheint der Zustand der Hauptbatterie unbekannt zu sein:

> 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

Aber wenn ich die Batterie direkt abfrage, bekomme ich eine ganz andere Antwort:

> 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

Ich bin völlig ratlos, was ich hier tun soll. Ich habe ein Skript, das die Batterielebensdauer angibt, die von der Ausgabe einiger dieser Befehle ausgeht, und ich möchte, dass es so vollständig wie möglich ist. Es ist klar, dass der Akku aufgeladen wird, aber warum sollte acpi-V sagen, dass es unbekannt ist? Weiß jemand?

Aqyr
quelle
2
Auf meinem T460 sehe ich ungefähr dasselbe. Ich denke, die beiden Akkus wechseln sich beim Laden / Entladen ab. derzeit ist mein BAT0 laut acpi "Charging, 98%, 00:04:52 until charge" und mein BAT1 ist "Unknown, 79%". Laptop-mode-tools meldet "Sie haben einen defekten Akku. Der aktuelle Status kann nicht ermittelt werden" , UPower hat jedoch eine Heuristik , um zu ermitteln, ob der aktuelle Status des Akkus "Laden" ist.
Mathias Rav
1
Wenn der Laptop nur einen Akku hat, gibt es nur zwei mögliche Zustände: "Entladen" und "Laden" (und "100% geladen"). Wenn ein Laptop 2 Akkus hat, wird möglicherweise nur einer davon verwendet. Der Zustand eines zweiten Akkus wird als "unbekannt" angesehen (da er weder geladen noch entladen wird). Ich habe das gleiche Problem mit meinem Thinkpad X250, daher gehe ich davon aus, dass dies ein erwartetes Verhalten ist.
DDNOMAD

Antworten:

0

Auf Arch können Sie versuchen, das Paket zu installieren tpacpi-bat(Ein Perl-Skript mit ACPI ruft die neuesten ThinkPads (wie T420 und W520) auf, deren Batterieschwellenwerte von tp_smapi nicht unterstützt werden)

pacman -S tpacpi-bat

Es könnte helfen, es zu reparieren. Informationen zur Konfiguration finden Sie hier .

PCFreak
quelle
0

Dies ist ein häufiges Problem bei Thinkpad-Laptops mit zwei Batterien.

Wenn Sie Ihren Laptop anschließen, wird zunächst BAT0 aufgeladen, während BAT1 einen unbekannten Status meldet. BAT1 meldet einen Ladezustand, wenn BAT0 voll ist und BAT1 tatsächlich mit dem Laden beginnt.

Sie müssen dies in Ihrem Skript berücksichtigen und die Werte für BAT0 und BAT1 kombinieren, um etwas Verwendbares zu erhalten:

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

Hier ist ein vollständiges Beispiel:

#!/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
quelle