我正在调试新安装的电池的剩余电池百分比报告不准确的情况。
关于我上一个问题的答案,各种工具直接从电池本身查询电池信息。然而,电池电压的输出在/sys/class/power_supply/BAT1/voltage_now
和之间有所不同upower
:
# upower
voltage: 10.974 V
# /sys/...
10500000
此外,upower
每 2 分钟更新一次统计数据,似乎/sys/class/power_supply/BAT1/voltage_now
是实时更新的。这也表明这两个数据源的来源可能不同。
那么,这两个数据源的数据来源是什么?
答案1
然而,电池电压的输出在
/sys/class/power_supply/BAT1/voltage_now
和之间有所不同upower
这是你的问题。
此外,upower每2分钟更新一次统计数据
在这里你自己回答了。只是更新时间而已。如果您在更新时间cat voltage_now
运行upower
,您将得到相同的结果。
$ upower -i /org/freedesktop/UPower/devices/battery_BAT1 |egrep 'updated|voltage'; cat /sys/class/power_supply/BAT1/voltage_now
updated: Mon 17 Feb 2020 07:07:31 AM CAT (0 seconds ago)
voltage: 17.156 V
17156000
请注意,当更新时间是0 秒前,其值是相同的。多次尝试该命令,当时间不同时,您会看到更大的差异120 秒前。
如果您想upower
立即为您提供更新的值,您可以使用以下命令强制刷新
dbus-send --print-reply --system --dest=org.freedesktop.UPower /org/freedesktop/UPower/devices/battery_BAT1 org.freedesktop.UPower.Device.Refresh; upower -i /org/freedesktop/UPower/devices/battery_BAT1 |egrep 'updated|voltage'
那么,这两个数据源的数据来源是什么?
的数据源upower
是upowerd
.upowerd
将从中读取数据/sys/.../BAT1/*
并将历史记录存储在中/var/lib/upower/
。当upower
在配置的轮询时间之前发送请求时Upower
,upowerd
将回复limiting data to last 120 seconds
并返回历史值。