Comment effacer / réinitialiser la mémoire de la batterie intelligente?

9

Donc, j'ai une nouvelle batterie pour mon ordinateur portable, et dès le départ, j'ai des problèmes.

La batterie est presque entièrement déchargée du fabricant. Je l'ai branché sur mon ordinateur et le batteur signale que le taux de charge est 0 et n'atteindrait donc jamais "complètement chargé"

Après quelques minutes et avoir un crash X11, j'en suis là ( 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'

Ainsi, la batterie est en charge, la capacité énergétique n'est que d'un quart de celle pour laquelle elle a été conçue (même si la batterie n'a que quelques jours), elle se situe à 73% et le taux de charge est si petit qu'il ne le fait pas même signaler combien il faudrait jusqu'à pleine charge.

Maintenant, je sais que vous pouvez "calibrer" une batterie en la chargeant pendant quelques heures, puis en la laissant à plat et en la rechargeant à nouveau.

Cependant, cela ne semble pas être la bonne façon de procéder. Je me demande si je ne peux pas accéder directement aux données intelligentes, via le SMBus .

i2cdetect -l rapports:

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

J'ai donc essayé de sonder 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: -- -- -- -- -- -- -- --                         

C'est assez étrange pour moi, cela signifie-t-il qu'il n'y a rien de connecté au bus?

Peu importe l'adresse que j'essaye de vider, le résultat est toujours le même:

i2cdump 0 0x03 (toutes les autres adresses valides produisent la même sortie):

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

Voilà jusqu'où je suis arrivé.

Le système obtient ses informations sur la batterie quelque part , mais je ne peux pas comprendre comment et d'où.

Quant à l'accès I²C / SMBus à la batterie: aucune idée si je fais quelque chose de mal, ou c'est impossible comme ça.

Je voudrais savoir comment accéder aux données de la batterie intelligente, comment les définir (probablement avec i2cset) et éventuellement comment elles sont formatées (quelles données codent quelles informations, etc.)


acpi -V est encore plus confus:

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

(capacité de conception signalée de manière incorrecte, etc.)


La dernière information que je peux trouver est la dmidecodesortie:

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

Vous pouvez y voir toutes ces chaînes "OEM_Define2", etc., qui ne disent pas grand-chose.

dmidecode -t connector rapports:

Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.
polémon
la source
J'ai essayé de l'étalonner à l'ancienne (en le faisant fonctionner à plat et en le chargeant pendant la nuit). C'est toujours aussi mauvais. c'est OT à ma question, mais je suppose que ma batterie est cassée.
polemon

Réponses:

5

Le bus Smart Battery Specification (SBS) n'est pas directement accessible depuis le système d'exploitation. Il est cependant possible de communiquer directement avec la batterie via un adaptateur USB-I2C connecté directement aux broches de la batterie.

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

EDIT 2: J'ai personnellement réussi à parler directement à la batterie en utilisant les broches i2c d'un Raspberry PI et les commandes que vous avez mentionnées.

RetroDroid
la source
1

Il n'y a rien de mal avec la jauge; votre batterie est défectueuse, vous devez donc simplement la retourner et demander un remplacement. Une batterie li-ion à 4 cellules a une tension complètement chargée de 4,2 x 4 = 16,8 volts. Le fait qu'il soit assis à seulement 15,9 et ne prenne pratiquement aucune charge indique qu'au moins une cellule est endommagée.

Le fait que les données smi et acpi soient incorrectes indique que le fabricant de cet ordinateur portable ne pouvait tout simplement pas être dérangé pour le construire correctement, donc je le retournerais si possible pour un remboursement et je n'achèterais plus chez eux.

psusi
la source
-1

Êtes-vous sûr que c'est même une batterie intelligente? Ce n'est pas le cas dans mon HP Pavilion.

Et où vous avez la batterie compte. Il m'a fallu 3 ou 4 essais pour obtenir une batterie fonctionnelle pour mon Dell achetant des batteries bon marché. J'ai finalement eu de la chance sur http://drpowerglobal.com/drbattery/ mais c'était il y a des années, maintenant je l'ai porté.

Alan Corey
la source