Lenovo T440sのバッテリー状態は不明ですが、充電中ですか?


14

Arch LinuxでLenovoを構成しようとしています。最後に行う必要があるのは、バッテリーを100%動作させることです。

現在、メインバッテリの状態は不明です。

> 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

しかし、バッテリーを直接照会すると、まったく異なる応答が返されます。

> 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

私はここで何をすべきかについて完全に迷っています。これらのコマンドの一部の出力で実行されるバッテリー寿命を報告するスクリプトがあり、可能な限り完全にしたいと思います。明らかにバッテリーは充電中ですが、acpi -Vが不明だと言うのはなぜですか?誰か知っている?


2
T460でもほぼ同じように見えます。2つのバッテリーが交互に充電/放電すると思います。現在、私のBAT0は「充電中、充電されるまで98%、00:04:52」であり、acpiによるとBAT1は「不明、79%」です。Laptop-mode-tools は「バッテリーが壊れています。実際の状態を判断できません」と報告しますが、 UPowerにバッテリーの実際の状態が「充電中」であると判断するためのヒューリスティックがあります。
マティアスRav

1
ラップトップのバッテリーが1つだけの場合、「放電中」と「充電中」の2つの状態しかありません(また、「充電済み100%」)。ラップトップに2つのバッテリーがある場合、そのうちの1つだけを使用できますが、2番目のバッテリーの状態は「不明」と見なされます(充電も放電もしていないため)。Thinkpad X250でも同じことが起こっているので、これは予想される動作だと思います。
ddnomad

回答:


0

Archでパッケージをインストールすることができますtpacpi-bat(ACPIを使用したPerlスクリプトは、バッテリーしきい値がtp_smapiでサポートされていない最近のThinkPad(T420やW520など)を呼び出します)

pacman -S tpacpi-bat

修正するのに役立ちます。設定についてはこちらをご覧ください


0

これは、デュアルバッテリーを搭載したThinkpadラップトップの一般的な問題です。

ラップトップを接続すると、BAT1が不明な状態を報告している間にBAT0を充電して起動します。BAT0が満杯で、BAT1が実際に充電を開始すると、BAT1は充電状態を報告します。

スクリプトでこれを考慮し、BAT0とBAT1の値を組み合わせて使用​​可能なものにする必要があります。

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

完全な例を次に示します。

#!/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
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.