Stato della batteria del Lenovo T440s sconosciuto, ma in carica?


14

Sto cercando di configurare il mio Lenovo su Arch Linux. L'ultima cosa che devo fare è far funzionare la batteria al 100%.

Al momento sembra che lo stato della batteria principale sia sconosciuto:

> 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

Ma se interrogo direttamente la batteria ottengo una risposta completamente diversa:

> 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

Sono in completa perdita su cosa fare qui. Ho uno script che riporta la durata della batteria che si esaurisce l'output di alcuni di questi comandi e vorrei che fosse il più completo possibile. Chiaramente la batteria si sta caricando, ma perché acpi -V direbbe che è sconosciuto? Qualcuno sa?


2
Vedo più o meno la stessa cosa sul mio T460s. Penso che le due batterie si alternino caricando / scaricando; attualmente il mio BAT0 è "In carica, 98%, 00:04:52 fino a quando non viene addebitato", e il mio BAT1 è "Sconosciuto, 79%", secondo acpi. Gli strumenti in modalità laptop riportano "La batteria è scarica. Impossibile determinare lo stato effettivo" , ma UPower ha un'euristica per determinare che lo stato effettivo della batteria è "In carica".
Mathias Rav

1
Se il portatile ha una sola batteria, ci sono solo 2 stati possibili: "scarica" ​​e "carica" ​​(e, beh, "carica al 100%"). Quando un laptop ha 2 batterie, può usarne solo una, quindi lo stato di una seconda batteria sarebbe considerato "sconosciuto" (poiché non si carica né si scarica). Ho la stessa cosa accadendo con il mio Thinkpad X250, quindi presumo che sia un comportamento previsto.
ddnomad,

Risposte:


0

Mentre su Arch potresti provare a installare il pacchetto tpacpi-bat(uno script Perl con ACPI chiama i ThinkPad recenti (come T420 e W520) le cui soglie della batteria non sono supportate da tp_smapi) con

pacman -S tpacpi-bat

Potrebbe aiutare a farlo riparare. Vedi informazioni sulla configurazione qui .


0

Questo è un problema comune con i laptop Thinkpad con doppia batteria.

Quando si collega il laptop, inizierà caricando BAT0 mentre BAT1 segnala uno stato sconosciuto. BAT1 segnalerà uno stato di carica quando BAT0 è piena e BAT1 inizia effettivamente la carica.

Devi tenerne conto nel tuo script e combinare i valori per BAT0 e BAT1 per avere qualcosa di utilizzabile:

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

Ecco un esempio 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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.