Power-Management

如何清除/重置智能電池記憶?

  • December 1, 2018

所以,我為我的筆記型電腦買了一塊新電池,從一開始,我就遇到了問題。

電池幾乎從製造商處完全放電。我把它插到我的電腦上,電池會報告充電率為 0,因此永遠不會達到“充滿電”

幾分鐘後 X11 崩潰了,我現在在這個(upower -i /org/freedesktop/UPower/devices/battery_BAT0):

 native-path:          BAT0
 vendor:               Hewlett-Packard
 model:                Primary
 power supply:         yes
 updated:              Fri 21 Oct 2016 08:28:33 AM CEST (106 seconds ago)
 has history:          yes
 has statistics:       yes
 battery
   present:             yes
   rechargeable:        yes
   state:               charging
   warning-level:       none
   energy:              17.8704 Wh
   energy-empty:        0 Wh
   energy-full:         24.192 Wh
   energy-full-design:  95.04 Wh
   energy-rate:         0.0996923 W
   voltage:             15.947 V
   percentage:          73%
   capacity:            25.4545%
   technology:          lithium-ion
   icon-name:          'battery-full-charging-symbolic'

所以電池正在充電,能量容量只有設計的四分之一左右(即使電池只有幾天的使用時間),它只有 73%,充電率很小,它不甚至報告充滿電需要多少時間。

現在,我知道你可以“校準”電池,充電幾個小時,然後讓它耗盡,然後再次充電。

不過,這似乎不是正確的做法。我想知道我是否不能通過SMBus直接訪問智能數據。

i2cdetect -l報告:

i2c-0   smbus       SMBus I801 adapter at 8000          SMBus adapter
i2c-1   i2c         NVIDIA i2c adapter 0 at 1:00.0      I2C adapter
i2c-2   i2c         NVIDIA i2c adapter 2 at 1:00.0      I2C adapter
i2c-3   i2c         NVIDIA i2c adapter 3 at 1:00.0      I2C adapter
i2c-4   i2c         NVIDIA i2c adapter 5 at 1:00.0      I2C adapter

因此,我嘗試探索 SMBus ( i2cdetect -r 0):

WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0 using read byte commands.
I will probe address range 0x03-0x77.
Continue? [Y/n] y   
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f
00:          -- -- -- -- -- -- -- -- -- -- -- -- -- 
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- 
70: -- -- -- -- -- -- -- --                         

這對我來說很奇怪,這是否意味著沒有任何東西連接到公共汽車?

無論我嘗試轉儲哪個地址,結果總是相同的:

i2cdump 0 0x03(所有其他有效地址產生相同的輸出):

No size specified (using byte-data access)
WARNING! This program can confuse your I2C bus, cause data loss and worse!
I will probe file /dev/i2c-0, address 0x1a, mode byte
Continue? [Y/n] y
    0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f    0123456789abcdef
00: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
10: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
20: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
30: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
40: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
50: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
60: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
70: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
80: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
90: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
a0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
b0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
c0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
d0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
e0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX
f0: XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX XX    XXXXXXXXXXXXXXXX

我就是這麼走的。

系統從某個地方獲取它的電池資訊,但我不知道如何以及從哪裡獲取。

至於 I²C / SMBus 對電池的訪問:不知道我做錯了什麼,或者那樣不可能。

我想知道如何訪問智能電池數據,如何設置它(大概用i2cset),以及它的格式可能如何(哪些數據編碼哪些資訊等)


acpi -V更加困惑:

Battery 0: Unknown, 73%
Battery 0: design capacity 6600 mAh, last full capacity 1680 mAh = 25%
Adapter 0: on-line

(設計能力報告不正確等)


我能想到的最後一點資訊是dmidecode輸出:

Handle 0x0010, DMI type 39, 22 bytes
System Power Supply
   Location: OEM_Define0
   Name: OEM_Define1
   Manufacturer: OEM_Define2
   Serial Number: OEM_Define2
   Asset Tag: OEM_Define3
   Model Part Number: OEM_Define4
   Revision: OEM_Define5
   Max Power Capacity: 75 W
   Status: Present, OK
   Type: Regulator
   Input Voltage Range Switching: Auto-switch
   Plugged: No
   Hot Replaceable: No

您可以在其中看到所有這些“OEM_Define2”等字元串,但並沒有太多意義。

dmidecode -t connector報告:

Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.

智能電池規範 (SBS) 匯流排不能直接從作業系統訪問。但是,可以通過直接連接到電池引腳的 USB-I2C 適配器直接與電池通信。

編輯: https ://media.blackhat.com/bh-us-11/Miller/BH_US_11_Miller_Battery_Firmware_Public_WP.pdf

編輯 2:我個人設法使用 Raspberry PI 的 i2c 引腳和您提到的命令直接與電池交談。

量規沒有問題;您的電池有缺陷,因此您只需退回並要求更換。4 節鋰離子電池的完全充電電壓為 4.2 x 4 = 16.8 伏。事實上,它只有 15.9 並且幾乎沒有充電,這表明至少有一個電池損壞了。

smi 和 acpi 數據不正確的事實表明,這台筆記型電腦的製造商只是懶得把它修好,所以如果可能的話,我會退回它以獲得退款,不再從他們那裡購買。

引用自:https://unix.stackexchange.com/questions/317864