Lenovo T440s 배터리 상태를 알 수 없지만 충전 중입니까?


14

아치 리눅스에서 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에서도 거의 동일하게 보입니다. 나는 두 개의 배터리를 교대로 충전 / 방전한다고 생각한다. acpi에 따르면 현재 내 BAT0은 "충전 될 때까지 충전 중, 98 %, 00:04:52"이고 내 BAT1은 "알 수 없음, 79 %"입니다. 랩톱 모드 도구 는 "배터리가 고장 났습니다. 실제 상태를 확인할 수 없습니다"라고보고 하지만 UPower 배터리의 실제 상태가 "충전 중"임을 판단 하는 휴리스틱가지고 있습니다.
Mathias Rav

1
랩탑에 하나의 배터리 만있는 경우 "방전 중"및 "충전 중"(및 "충전 된 100 %")의 두 가지 가능한 상태 만 있습니다. 랩탑에 2 개의 배터리가 있으면 그 중 하나만 사용할 수 있으며, 두 번째 배터리의 상태는 "알 수 없음"으로 간주됩니다 (충전 또는 방전이 아님). Thinkpad X250에서도 같은 일이 일어나므로 예상되는 동작이라고 생각합니다.
ddnomad

답변:


0

Arch에서 패키지 tpacpi-bat(tp_smapi가 배터리 임계 값을 지원하지 않는 최신 ThinkPad (예 : T420 및 W520)의 ACPI 호출을 사용하는 Perl 스크립트) 를 설치하려고 시도 할 수 있습니다.

pacman -S tpacpi-bat

문제를 해결하는 데 도움이 될 수 있습니다. 구성에 대한 정보는 여기를 참조 하십시오 .


0

이것은 듀얼 배터리가 장착 된 Thinkpad 랩탑의 일반적인 문제입니다.

랩탑을 연결하면 BAT1이 알 수없는 상태를보고하는 동안 BAT0을 충전하여 시작합니다. BAT0은 BAT0이 가득 차서 실제로 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.