电池指示灯和电源设置面板显示电池状态错误

我的笔记本电脑是Thinkpad E420,安装了64位Ubuntu 12.04,内核版本是3.2.0-33-generic。 我通过windows7将电池阈值设置为60%。 似乎Ubuntu中的阈值自动生效。 但是,电池指示器的状态存在一些问题。

我将列出一些电池状态信息如下:(请注意,终端ubuntu表示电池充电状态已充电 ,而电源设置面板显示电池状态正在充电以及电池指示灯显示。)


$ cat /proc/acpi/battery/BAT0/state present: yes capacity state: ok *charging state: charged* present rate: 0 mW remaining capacity: 18200 mWh present voltage: 16103 mV 

电池指示灯状态

在此处输入图像描述


电源设置面板

在此处输入图像描述

有什么方法可以解决这个问题吗?

编辑通过** sudo fwts电池添加一些结果 – > battery.log **

 3 passed, 4 failed, 0 warnings, 0 aborted, 0 skipped, 0 info only. Test Failure Summary =============================== Critical failures: NONE High failures: 2 battery: Did not detect any ACPI battery events. battery: Could not detect ACPI events for battery BAT0. Medium failures: 1 battery: Battery BAT0 claims it's charging but no charge is added Low failures: 1 battery: System firmware may not support cycle count interface or it reports it incorrectly for battery BAT0. Other failures: NONE Test |Pass |Fail |Abort|Warn |Skip |Info | ---------------+-----+-----+-----+-----+-----+-----+ battery | 3| 4| | | | | ---------------+-----+-----+-----+-----+-----+-----+ Total: | 3| 4| 0| 0| 0| 0| ---------------+-----+-----+-----+-----+-----+-----+ 

Edit2根据@Colin Ian King的建议,我运行了以下脚本。

 $ cat /sys/class/power_supply/BAT0/uevent POWER_SUPPLY_NAME=BAT0 POWER_SUPPLY_STATUS=Unknown POWER_SUPPLY_PRESENT=1 POWER_SUPPLY_TECHNOLOGY=Li-ion POWER_SUPPLY_CYCLE_COUNT=0 POWER_SUPPLY_VOLTAGE_MIN_DESIGN=14400000 POWER_SUPPLY_VOLTAGE_NOW=16075000 POWER_SUPPLY_POWER_NOW=0 POWER_SUPPLY_ENERGY_FULL_DESIGN=31680000 POWER_SUPPLY_ENERGY_FULL=22050000 POWER_SUPPLY_ENERGY_NOW=17860000 POWER_SUPPLY_MODEL_NAME=LNV-42T4763 POWER_SUPPLY_MANUFACTURER=SANYO POWER_SUPPLY_SERIAL_NUMBER= 2614 

我拍了两张bios的照片,万一我错过了什么。

在此处输入图像描述

在此处输入图像描述


acpi -V的输出

 future$ acpi -V Battery 0: Unknown, 89% Battery 0: design capacity 1947 mAh, last full capacity 1339 mAh = 68% Adapter 0: on-line Thermal 0: ok, 31.0 degrees C Thermal 0: trip point 0 switches to mode critical at temperature 120.0 degrees C Cooling 0: LCD 3 of 15 Cooling 1: LCD 3 of 15 Cooling 2: Processor 0 of 10 Cooling 3: Processor 0 of 10 Cooling 4: Processor 0 of 10 Cooling 5: Processor 0 of 10 

任何帮助,将不胜感激!

这似乎没问题。
很快,Windows计算的功耗并没有指向实际状态 ,因为Windows很饿并且迫使用户“ 有点不对劲 ”。 这是我非常主观的看法。

Hovewer,由于实际状态术语的相对性质,这是一个非常相对论的问题

有很多方法可以解释为什么Windows 60%是实际的,但是对于实际的Ubuntu 82%是EQUAL。 最简单的是关于Windows和Ubuntu范例之间的差异。

更新1

尝试使用fwts测试您的环境:

 sudo add-apt-repository ppa:firmware-testing-team/ppa-fwts-stable sudo apt-get update sudo apt-get install fwts 

阅读: wiki.ubuntu.com/Kernel/Reference/fwts

更新2

因此, battery.log显示电源ACPI接口已禁用。
这意味着您可以通过在BIOS中启用电源接口来解决您的问题。
或者,如果boot-parameter启动此行为,则需要找到正确的值。

更新3

显然,引导参数化在这里很重要。
基于更新的新读数: UEFIBooting

大多数实际参数( 警告!仅使用参考配置的正确参数 ):

  acpi noefi acpi_osi apm 

内核启动参数文档

更新4

您也可以尝试使用acpi程序测试输出参数:

 sudo apt-get install acpi acpi -V 

最后,我的所有网络冲浪点都指向: ThinkPad ACPI Extras Driver

并且: Lenovo Diagnostics(Linux可启动CD) 。

您可以运行以下命令并将输出放入您的问题中:

 cat /sys/class/power_supply/BAT0/uevent 

这应该包含诸如POWER_SUPPLY_ENERGY_FULL_DESIGN,POWER_SUPPLY_ENERGY_FULL和POWER_SUPPLY_ENERGY_NOW之类的信息,它们将为您提供更明智的答案。

[更新]

所以你的机器报告:

POWER_SUPPLY_ENERGY_FULL_DESIGN = 31680000

POWER_SUPPLY_ENERGY_FULL = 22050000

这两个字段是来自ACPI _BIX控件的静态数据。 第一个是电池的设计容量,第二个是充满电时的预测电池容量。

POWER_SUPPLY_ENERGY_NOW = 17860000

..这是来自ACPI _BST控件,显示当前的电池电量。 这是动态的,会发生变化。

该数据通常从嵌入式控制器读取,该控制器通常通过i2c总线与智能电池通信。 这些数据通过APCI控件呈现给内核,因此这些数据基本上是内核给出的,它无法控制这些数据,而是直接将它呈现给用户空间应用程序。

这些电流值表明,上次完全充电后的电池电量达到完全电池设计容量的69.6%。 此外,您的电流容量约为完全充电容量的80%,占电池理论设计容量的56.3%。

我的猜测是用户空间应用程序以完全充电容量的百分比显示电池容量。 也许windows会向您展示电池设计容量方面的数据。 只是一个猜测。