了解 power_supply 文件

了解 power_supply 文件

这是一个非常简单的问题,但我认为它的简单性在于它有水色输出。

情况是我有兴趣更好地了解托管的文件/sys/class/power_supply以及管理系统电池监控的文件。就我而言,我使用带有电池的笔记本电脑,其目录位于/sys/class/power_supply/BAT0.另一方面我有AC适配器/sys/class/power_supply/AC0据我了解,中的接口这里

在电池接口内,我找到了各种文件:

/sys/class/power_supply/BAT0$ ls
alarm               model_name
capacity            power
capacity_level      present
charge_full         serial_number
charge_full_design  status
charge_now          subsystem
current_now         technology
cycle_count         type
device              uevent
hwmon2              voltage_min_design
manufacturer        voltage_now

我理解这个capacity参考的是当前电池百分比。我也通过上下文理解capacity_levelstatus

/sys/class/power_supply/BAT0$ cat capacity
81

/sys/class/power_supply/BAT0$ cat capacity_level
Normal

/sys/class/power_supply/BAT0$ cat status
Discharging

但是,我不理解其他文件,例如charge_fullcharge_full_design、或:charge_nowcurrent_nowcycle_count

/sys/class/power_supply/BAT0$ cat charge_full
900000
/sys/class/power_supply/BAT0$ cat charge_full_design
4100000
/sys/class/power_supply/BAT0$ cat charge_now
630000
/sys/class/power_supply/BAT0$ cat current_now
1191000
/sys/class/power_supply/BAT0$ cat cycle_count
0

uevent课程中,您可以查看之前的每个变量,并了解更多详细信息:

POWER_SUPPLY_NAME=BAT0
POWER_SUPPLY_TYPE=Battery
POWER_SUPPLY_STATUS=Discharging
POWER_SUPPLY_PRESENT=1
POWER_SUPPLY_TECHNOLOGY=Li-ion
POWER_SUPPLY_CYCLE_COUNT=0
POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11400000
POWER_SUPPLY_VOLTAGE_NOW=11759000
POWER_SUPPLY_CURRENT_NOW=1089000
POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
POWER_SUPPLY_CHARGE_FULL=900000
POWER_SUPPLY_CHARGE_NOW=675000
POWER_SUPPLY_CAPACITY=75
POWER_SUPPLY_CAPACITY_LEVEL=Normal
POWER_SUPPLY_MODEL_NAME=standard
POWER_SUPPLY_MANUFACTURER=OEM
POWER_SUPPLY_SERIAL_NUMBER=00001

清楚理解电池容量的百分比来自于POWER_SUPPLY_CHARGE_NOW( /sys/class/power_supply/BAT0/charge_now)对POWER_SUPPLY_CHARGE_FULL( /sys/class/power_supply/BAT0/charge_full)的计算:100*675000/900000=75。

但你如何理解这些价值观呢?从哪里来POWER_SUPPLY_CHARGE_NOW?上述值的电压有什么干扰吗?

答案1

您可能想了解 Linux 电源设备类是如何定义的包括/linux/power_supply.h在Linux内核源代码中。那里描述的数据结构中的值按原样呈现在/sys/class/power_supply/*

/*
 * All voltages, currents, charges, energies, time and temperatures in uV,
 * µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise
 * stated. It's driver's job to convert its raw values to units in which
 * this class operates.
 */

/*
 * For systems where the charger determines the maximum battery capacity
 * the min and max fields should be used to present these values to user
 * space. Unused/unknown fields will not appear in sysfs.
 */

所以所有的charge_*值都以微安时为单位,并且current_now单位是微安。

POWER_SUPPLY_VOLTAGE_MIN_DESIGN=11400000
POWER_SUPPLY_VOLTAGE_NOW=11759000

电池的最小设计电压(= 切勿放电至低于此电压)为 11400000 微伏 = 11.4 伏。

当前电压水平为 11.759 伏。

POWER_SUPPLY_CURRENT_NOW=1089000

电池现在提供 1.089 安培的电流。

POWER_SUPPLY_CHARGE_FULL_DESIGN=4100000
POWER_SUPPLY_CHARGE_FULL=900000
POWER_SUPPLY_CHARGE_NOW=675000

当它是新的时,该电池声称充满电的容量为 4.10 安培小时,但此后它已经退化,因此目前充满电的容量仅为 0.9 安培小时。目前,它还剩 0.675 安培小时的电量。

因此,作为一个简单的估计,根据您现在从电池获取的电流,您将拥有 0.675 Ah / 1.089 A = 大约 0.62 小时,或大约剩余 37 分钟的电量。

power_supply.h文件还有许多其他信息丰富的注释,直接描述了各种值的含义。您可能想阅读这些评论。

相关内容