Status baterai Lenovo T440 tidak diketahui, tetapi sedang mengisi daya?

14

Saya mencoba mengkonfigurasi Lenovo saya di arch linux. Hal terakhir yang perlu saya lakukan adalah mendapatkan baterai 100% berfungsi.

Saat ini tampaknya status baterai utama tidak diketahui:

> 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

Tetapi jika saya menanyakan baterai secara langsung, saya mendapat respons yang sama sekali berbeda:

> 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

Saya benar-benar bingung apa yang harus dilakukan di sini. Saya memiliki skrip yang melaporkan usia baterai yang kehabisan output dari beberapa perintah ini dan saya ingin selengkap mungkin. Jelas baterai sedang diisi, tetapi mengapa acpi -V mengatakan itu tidak diketahui? Apakah ada yang tahu?

Aqyr
sumber
2
Saya melihat kira-kira sama pada T460s saya. Saya pikir dua baterai bergantian pengisian / pemakaian; saat ini BAT0 saya adalah "Mengisi, 98%, 00:04:52 hingga diisi", dan BAT1 saya "Tidak Dikenal, 79%", menurut acpi. Laptop-mode-tools melaporkan "Anda memiliki baterai yang rusak. Tidak dapat menentukan keadaan sebenarnya" , tetapi UPower memiliki heuristik untuk menentukan bahwa keadaan baterai sebenarnya adalah "Pengisian".
Mathias Rav
1
Jika laptop hanya memiliki baterai tunggal, hanya ada 2 status yang memungkinkan: "pemakaian" dan "pengisian daya" (dan, yah, "terisi 100%"). Ketika sebuah laptop memiliki 2 baterai, ia mungkin hanya menggunakan salah satu dari mereka, maka keadaan baterai kedua akan dianggap "tidak dikenal" (karena itu bukan pengisian atau pemakaian). Saya memiliki hal yang sama terjadi dengan Thinkpad X250 saya jadi saya menganggap itu perilaku yang diharapkan.
ddnomad

Jawaban:

0

Saat di Arch, Anda dapat mencoba menginstal paket tpacpi-bat(skrip A Perl dengan panggilan ACPI untuk ThinkPads baru-baru ini (seperti T420 dan W520) yang ambang baterainya tidak didukung oleh tp_smapi) dengan

pacman -S tpacpi-bat

Ini bisa membantu memperbaikinya. Lihat info tentang konfigurasi di sini .

PCFreak
sumber
0

Ini adalah masalah umum dengan laptop Thinkpad dengan baterai ganda.

Ketika Anda mencolokkan laptop Anda, itu akan mulai dengan mengisi baterai BAT0 sementara BAT1 melaporkan keadaan yang tidak diketahui. BAT1 akan melaporkan status pengisian saat BAT0 penuh dan BAT1 benar-benar mulai mengisi.

Anda perlu mempertimbangkan ini dalam skrip Anda, dan menggabungkan nilai untuk BAT0 dan BAT1 untuk memiliki sesuatu yang dapat digunakan:

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

Ini adalah contoh lengkapnya:

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