web-dev-qa-db-fra.com

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

Donc, j'ai eu une nouvelle batterie pour mon ordinateur portable et je suis juste de l'aller, j'ai des problèmes.

La batterie est presque entièrement déchargée du fabricant. Je l'ai branché dans mon ordinateur et le frappeur signalerait que le taux de charge est égal à 0, et donc n'atteindrait jamais "complètement chargé"

Après quelques minutes et avoir une crash x11, je suis maintenant à cela (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'

De sorte que la batterie est chargée, la capacité énergétique n'est que d'environ un quart de ce qu'elle a été conçue (même si la batterie n'a que quelques jours), il est assis à 73% et le taux de charge est si petit, il ne le fait pas Même signalez combien il faudrait jusqu'à bien chargé.

Maintenant, je sais que vous pouvez un peu "calibrer" une batterie, en la chargeant pendant quelques heures, puis la laissant courir à plat, puis la facturer à nouveau.

Cela ne semble pas être la bonne façon de le faire. 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

Donc, j'ai essayé de rechercher 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'essaie 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

C'est à quel point j'ai eu.

Le système obtient ses informations de batterie de quelque part , mais je ne peux pas comprendre comment et à partir de là où.

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

J'aimerais savoir comment accéder aux données de la batterie intelligente, comment la définir (probablement avec i2cset), et éventuellement comment il est formaté (quelles données code dans quelle information, 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 rapportée de manière incorrecte, etc.)


Dernier peu d'informations que je peux trouver, c'est dmidecode sortie:

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 voir tous ces "oem_define2", etc. Cordes de là, qui ne disent pas grand chose.

dmidecode -t connector rapports:

Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.
9
polemon

Le bus Smart Battery Spécification (SBS) n'est pas directement accessible à partir du système d'exploitation. Il est toutefois 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 à l'aide d'une goupille I2C de Raspberry Pi et des commandes que vous avez mentionnées.

5
RetroDroid

Il n'y a rien de mal à la jauge; Votre batterie est défectueuse, vous devez donc simplement le retourner et demander un remplaçant. Une batterie Li-ion à 4 cellules comporte une tension entièrement 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 au moins une cellule est endommagée.

Le fait que les données SMI et ACPI soient incorrectes indiquent que le fabricant de cet ordinateur portable n'a peut-être pas pu être gêné de la construire correctement, alors je le retournerais pour un remboursement si possible et ne l'achez pas à nouveau.

1
psusi

Êtes-vous sûr que c'est même une batterie intelligente? Celui de mon pavillon HP n'est pas.

Et où vous avez eu la batterie. Il m'a fallu 3 ou 4 essais pour obtenir une batterie de travail pour mon dell acheter des batteries bon marché. J'ai enfin eu bonne chance à - http://drwpowerglobal.com/drbattery/ Mais c'était il y a des années, maintenant je portais celui-ci.

0
Alan Corey