ไม่ทราบสถานะแบตเตอรี่ Lenovo T440 แต่กำลังชาร์จอยู่


14

ฉันพยายามกำหนดค่า Lenovo บน arch linux สิ่งสุดท้ายที่ฉันต้องทำคือทำให้แบตเตอรี่ใช้งานได้ 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 ของฉัน ฉันคิดว่าแบตเตอรี่สองก้อนผลัดกันการชาร์จ / การคายประจุ ขณะนี้ BAT0 ของฉันคือ "การชาร์จ 98%, 00:04:52 จนกว่าจะมีการชาร์จ" และ BAT1 ของฉันคือ "ไม่ทราบ, 79%" ตาม acpi เครื่องมือโหมดแล็ปท็อปรายงานว่า "คุณมีแบตเตอรี่แตกไม่สามารถระบุสถานะที่แท้จริงได้"แต่ UPower มีฮิวริสติกเพื่อตรวจสอบว่าสถานะที่แท้จริงของแบตเตอรี่คือ "กำลังชาร์จ"
Mathias Rav

1
หากแล็ปท็อปมีแบตเตอรี่เพียงก้อนเดียวมีเพียง 2 สถานะที่เป็นไปได้: "การปล่อย" และ "การชาร์จ" (และก็คือ "ชาร์จ 100%") เมื่อแล็ปท็อปมีแบตเตอรี่ 2 ก้อนมันอาจใช้เพียงหนึ่งในนั้นสถานะของแบตเตอรี่ก้อนที่สองจะถือว่าเป็น "ไม่ทราบ" (เนื่องจากไม่มีการชาร์จหรือการคายประจุ) ฉันเกิดสิ่งเดียวกันกับ Thinkpad X250 ของฉันดังนั้นฉันคิดว่านั่นเป็นพฤติกรรมที่คาดหวัง
ddnomad

คำตอบ:


0

ในขณะที่อยู่บน Arch คุณสามารถลองติดตั้งแพ็กเกจtpacpi-bat(สคริปต์ Perl ที่มี ACPI เรียกใช้ ThinkPads ล่าสุด (เช่น T420 และ W520) ซึ่งแบตเตอรีไม่รองรับขีด จำกัด แบตเตอรี่โดย tp_smapi) ด้วย

pacman -S tpacpi-bat

มันสามารถช่วยในการแก้ไข เห็นข้อมูลเกี่ยวกับการกำหนดค่าที่นี่


0

นี่เป็นปัญหาทั่วไปของแล็ปท็อป Thinkpad ที่มีแบตเตอรี่คู่

เมื่อคุณเสียบแล็ปท็อปของคุณจะเริ่มโดยการชาร์จ BAT0 ในขณะที่ BAT1 รายงานสถานะที่ไม่รู้จัก BAT1 จะรายงานสถานะการชาร์จเมื่อ 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.