
Итак, я купил новую батарею для своего ноутбука, и с самого начала у меня возникли проблемы.
Аккумулятор пришел с завода почти полностью разряженным. Я подключил его к компьютеру, и аккумулятор сообщил, что уровень заряда равен 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.
решение1
Шина спецификации Smart Battery (SBS) недоступна напрямую из ОС. Однако можно напрямую взаимодействовать с батареей через адаптер USB-I2C, подключенный напрямую к контактам батареи.
РЕДАКТИРОВАТЬ: https://media.blackhat.com/bh-us-11/Miller/BH_US_11_Miller_Battery_Firmware_Public_WP.pdf
ПРАВКА 2: Мне лично удалось напрямую связаться с аккумулятором, используя контакты i2c Raspberry PI и команды, которые вы упомянули.
решение2
С датчиком все в порядке; ваш аккумулятор неисправен, поэтому вам нужно просто вернуть его и потребовать замену. 4-элементный литий-ионный аккумулятор имеет полностью заряженное напряжение 4,2 x 4 = 16,8 вольт. Тот факт, что он показывает всего 15,9 и почти не заряжается, указывает на то, что по крайней мере один элемент поврежден.
Тот факт, что данные smi и acpi неверны, говорит о том, что производитель этого ноутбука просто не удосужился сделать его как следует, поэтому я бы вернул его, если бы это было возможно, и больше у них не покупал бы.
решение3
Вы уверены, что это вообще умная батарея? Та, что в моем HP Pavilion, не такая.
И где вы взяли батарею, имеет значение. Мне потребовалось 3 или 4 попытки, чтобы получить рабочую батарею для моего Dell, покупая дешевые батареи. Наконец-то мне повезло сhttp://drpowerglobal.com/drbattery/но это было много лет назад, сейчас я его уже износил.