电池未充电,upower 显示已充满,但电池并未充满

电池未充电,upower 显示已充满,但电池并未充满

我的联想 L13 Yoga 上安装了 Ubuntu 20.04。

upower -i /org/freedesktop/UPower/devices/battery_BAT0
  native-path:          BAT0
  vendor:               Sunwoda
  model:                5B10W13935
  serial:               666
  power supply:         yes
  updated:              Mi 30 Mär 2022 14:43:14 (32 seconds ago)
  has history:          yes
  has statistics:       yes
  battery
    present:             yes
    rechargeable:        yes
    state:               fully-charged
    warning-level:       none
    energy:              38.33 Wh
    energy-empty:        0 Wh
    energy-full:         39.8 Wh
    energy-full-design:  46 Wh
    energy-rate:         2.313 W
    voltage:             16.885 V
    percentage:          96%
    capacity:            86.5217%
    technology:          lithium-polymer
    icon-name:          'battery-full-charged-symbolic'
  History (rate):
    1648644193  2.313   discharging

§ cat /sys/class/power_supply/BAT0/capacity
96
§ cat /sys/class/power_supply/BAT0/status
Unknown

即使我的充电器已插入。有人知道发生了什么事吗?

答案1

这是不同开发者群体对单词含义持有不同看法的“奇妙”结果之一。深入研究电池的历史,你会看到至少三个不同团队的成果:

  1. 电池制造商的固件开发团队
  2. 笔记本电脑供应商的固件开发团队
  3. 开发upower团队

并非所有电池都具有相同的 API 端点集。当您使用/sys/class/power_supply“文件”时,实际上是通过内核挂钩查询设备的固件。这些与笔记本电脑供应商提供的固件交互,在本例中,笔记本电脑供应商是联想。联想从几个不同的供应商处获得电池,包括 Sunwoda、LGC、深圳明益源电子、Sunwind、Bamtop、东莞 Lewe、深圳 Glory 等。这些电池制造商中的每一个都有不同的固件端点,用于报告充电周期、可用电压、充电限制等信息。联想固件将电池固件中的不同端点转换为半标准化的端点集,联想硬件可以使用这些端点来管理电池并将信息报告回操作系统。

硬件人员已经说完了,现在我们可以看看多年来为联想(和其他硬件制造商)做出贡献的无数开发upower人员,他们对联想(和其他硬件制造商)多年来提供的终端进行了逆向工程。由于公司很少提供任何文档,因此开发人员必须查看他们面前的数据并找出各个位的含义。对于联想upower,这意味着:

硬件 API 端点 upower 定义
/sys/class/power_supply/BAT0/capacity percentage 当前电池电量百分比(介于0和之间107...不要询问)
/sys/class/power_supply/BAT0/state state 当前电池活动(idle,,,,)chargingfully-chargeddischargingunknown

对于我的联想 X1 Carbon,/sys/class/power_supply/BAT0/state/sys/class/power_supply/BAT0/status,因为为您的笔记本制作固件的团队与为我的笔记本制作固件的团队不同。有趣的是,笔记本可以同时拥有state 相互冲突status,例如我的联想 W541 和我妻子的东芝。这会导致upower(和 Gnome)报告错误的电池状态。我的 W541 总是充满电,即使它没有充满电。我妻子的东芝总是在充电,即使电池已充满电。

这自然会引发一个问题:我可以信任哪些值?不幸的是,这取决于您认为哪组开发人员最了解您的计算机。对我来说,我倾向于使用报告的数字作为upower“大致范围”,而 中的信息则/sys/class/power_supply是真理。这并不总是正确的,特别是对于华硕机器,但事实证明多年来它是最一致的。

希望这可以解答您的一些疑问。

答案2

在这种情况下,另一个有用的端点是energy-rate。当充电真正完成并且外部电源可用时,它将降至 0。无论statestatus说什么,这都是权威的,因为它是电池中的 BMS 芯片报告的实际电流进入电池(或放电时流出)。

相关内容