Không rõ tình trạng pin của Lenovo T440s, nhưng sạc?


14

Tôi đang cố gắng cấu hình Lenovo của tôi trên arch linux. Điều cuối cùng tôi cần làm là làm cho pin hoạt động 100%.

Ngay bây giờ có vẻ như trạng thái của pin chính là không xác định:

> 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

Nhưng nếu tôi truy vấn trực tiếp pin, tôi nhận được phản hồi hoàn toàn khác:

> 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

Tôi hoàn toàn không biết phải làm gì ở đây. Tôi có một đoạn mã báo cáo thời lượng pin hết từ một số lệnh này và tôi muốn nó hoàn chỉnh nhất có thể. Rõ ràng pin đang sạc, nhưng tại sao acpi -V lại nói là không rõ? Có ai biết không?


2
Tôi thấy gần giống nhau trên T460 của tôi. Tôi nghĩ rằng hai pin thay phiên nhau sạc / xả; hiện tại BAT0 của tôi là "Đang sạc, 98%, 00:04:52 cho đến khi được sạc" và BAT1 của tôi là "Không xác định, 79%", theo acpi. Công cụ chế độ máy tính xách tay báo cáo "Bạn có pin bị hỏng. Không thể xác định trạng thái thực tế" , nhưng UPower có một heuristic để xác định rằng trạng thái thực tế của pin là "Đang sạc".
Mathias Rav

1
Nếu máy tính xách tay chỉ có một pin duy nhất, chỉ có 2 trạng thái có thể xảy ra: "xả" và "sạc" (và, tốt, "sạc 100%"). Khi một máy tính xách tay có 2 pin, nó có thể chỉ sử dụng một trong số chúng, khi đó trạng thái của pin thứ hai sẽ được coi là "không xác định" (vì nó không sạc cũng không xả). Tôi có điều tương tự xảy ra với Thinkpad X250 của tôi vì vậy tôi cho rằng đó là một hành vi được mong đợi.
ddnomad

Câu trả lời:


0

Trong khi trên Arch, bạn có thể thử cài đặt gói tpacpi-bat(Tập lệnh Perl với các lệnh gọi ACPI cho các ThinkPad gần đây (như T420 và W520) có ngưỡng pin không được tp_smapi hỗ trợ) với

pacman -S tpacpi-bat

Nó có thể giúp để sửa nó. Xem thông tin về cấu hình ở đây .


0

Đây là một vấn đề phổ biến với máy tính xách tay Thinkpad có pin kép.

Khi bạn cắm máy tính xách tay, nó sẽ bắt đầu bằng cách sạc BAT0 trong khi BAT1 báo cáo trạng thái không xác định. BAT1 sẽ báo cáo trạng thái sạc khi BAT0 đầy và BAT1 thực sự bắt đầu sạc.

Bạn cần tính đến điều này trong tập lệnh của mình và kết hợp các giá trị cho BAT0 và BAT1 để có thứ gì đó có thể sử dụng được:

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

Dưới đây là một ví dụ đầy đủ:

#!/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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.