¿Cómo borrar / restablecer la memoria inteligente de la batería?

9

Entonces, obtuve una batería nueva para mi computadora portátil y, desde el primer momento, tengo problemas.

La batería se descargó casi por completo del fabricante. Lo conecté a mi computadora y la batería informaría que la tasa de carga es 0 y, por lo tanto, nunca llegaría a "completamente cargada"

Después de un par de minutos y teniendo un bloqueo X11, ahora estoy en esto ( 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'

Por lo tanto, la batería se está cargando, la capacidad de energía es solo alrededor de una cuarta parte de lo que se diseñó (a pesar de que la batería tiene solo un par de días), se encuentra en un 73% y la tasa de carga es tan pequeña que no incluso informe cuánto tardaría en cargarse por completo.

Ahora, sé que puedes "calibrar" un poco la batería, cargándola durante un par de horas, luego dejando que se agote y luego cargándola nuevamente.

Sin embargo, esta no parece ser la forma correcta de hacerlo. Me pregunto si no puedo acceder a los datos inteligentes directamente, a través de SMBus .

i2cdetect -l informes:

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

Entonces, intenté sondear 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: -- -- -- -- -- -- -- --                         

Esto es bastante extraño para mí, ¿eso significa que no hay nada conectado al autobús?

No importa en qué dirección esté tratando de volcar, el resultado es siempre el mismo:

i2cdump 0 0x03 (todas las demás direcciones válidas producen la misma salida):

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

Así de lejos llegué.

El sistema obtiene la información de la batería de alguna parte , pero no puedo entender cómo y de dónde.

En cuanto al acceso I²C / SMBus a la batería: no tengo idea si estoy haciendo algo mal, o es imposible así.

Me gustaría saber cómo acceder a los datos de la batería inteligente, cómo configurarlo (presumiblemente con i2cset) y posiblemente cómo está formateado (qué datos codifican qué información, etc.)


acpi -V está aún más confundido:

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

(capacidad de diseño informada incorrectamente, etc.)


El último bit de información que se me ocurre es la dmidecodesalida:

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

Puede ver todas estas cadenas "OEM_Define2", etc., que no dicen mucho.

dmidecode -t connector informes:

Getting SMBIOS data from sysfs.
SMBIOS 2.4 present.
polemon
fuente
Intenté calibrarlo a la antigua usanza (haciéndolo plano y cargándolo durante la noche). Sigue siendo tan malo. Esto es OT para mi pregunta, pero supongo que mi batería está rota.
polemon

Respuestas:

5

El bus de especificación de batería inteligente (SBS) no es directamente accesible desde el sistema operativo. Sin embargo, es posible comunicarse directamente con la batería a través de un adaptador USB-I2C conectado directamente a los pines de la batería.

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

EDIT 2: personalmente logré hablar directamente con la batería usando los pines i2c de un Raspberry PI y los comandos que mencionaste.

RetroDroid
fuente
1

No hay nada malo con el medidor; su batería está defectuosa, por lo que debe devolverla y exigir un reemplazo. Una batería de iones de litio de 4 celdas tiene un voltaje completamente cargado de 4.2 x 4 = 16.8 voltios. El hecho de que esté sentado a solo 15.9 y que no tome casi ninguna carga indica que al menos una celda está dañada.

El hecho de que los datos de smi y acpi sean incorrectos indica que el fabricante de este portátil simplemente no se molestó en construirlo correctamente, por lo que lo devolvería para obtener un reembolso si es posible y no comprarlo de nuevo.

psusi
fuente
-1

¿Estás seguro de que es incluso una batería inteligente? El que está en mi HP Pavilion no lo es.

Y de dónde sacaste la batería es importante. Me llevó 3 o 4 intentos conseguir una batería que funcionara para mi Dell comprando baterías baratas. Finalmente tuve buena suerte en http://drpowerglobal.com/drbattery/ pero eso fue hace años, ahora lo he agotado.

Alan Corey
fuente