[Gta04-owner] bq27000-battery: battery is not calibrated! ignoring capacity values
edorfaus at xepher.net
Tue Feb 5 00:00:30 CET 2013
On 02/04/2013 07:06 AM, NeilBrown wrote:
> On Sun, 03 Feb 2013 22:47:03 +0100 EdorFaus <edorfaus at xepher.net> wrote:
>> The problem is that, since we haven't seen the datasheet or any other
>> relevant information, we don't actually know what that calibration
>> procedure is supposed to be.
> Datasheets can be found. e.g.
Ah, thank you! I'm apparently no good at that.
If I read this correctly, the calibration is specified to happen
automatically whenever the battery goes from a full charge to completely
empty in one go, which is basically what I thought.
Nice to see that confirmed by official documentation.
(Sheet also says that no calibration is needed, but by that it appears
to mean that no *manual* calibration (as in, measuring and configuring)
is needed, either by the end-user or the device/battery builder.)
> There are two things that can cause this message.
> The first is if the BQ27000 in your battery doesn't think that it is
> calibrated. This seems unlikely except for a new battery or one that has
> been left to go completely flat for a long time. Normally the BQ27000 will
> think it is calibrated, even if the calibration is inaccurate.
Well, a new battery is precisely what I had, and others will also
probably get new batteries as their old ones die (or if they're buying
their first device).
Leaving a Li-Ion battery completely flat for any significant length of
time is (AFAIK) likely to kill it (or at least be very detrimental to
its health), so I guess that might be less of a concern, really.
> The second is if the BQ27000 doesn't respond to a read properly. In that
> case an attempt to read the 'flags' will see 0xFF, and as that has the
> "Capacity Inaccurate" flag set, the driver will think that it is not
> calibrated. This happens for example if you take the battery out.
Hm, the sheet says the CI flag will also be set if the battery has been
through 32 cycles since the last calibration.
It also says (unless I'm misreading it) that the chip will then use the
design values to calculate the values we read - which suggests that
Radek shouldn't need to, since the chip already does it... But I guess
the driver might be blocking that somehow? Or maybe the battery
indicator is relying on some values the chip doesn't provide in that case?
> This also happens if you have a battery without a BQ27000 in it, hence
> Nikolaus' earlier question "HDQ can't detect battery presence?"
> While the one-wire bus can enumerate devices, the HDQ bus (which is
> similar but simpler) cannot. So if the device doesn't expect to have a
> BQ27000 in the battery, we need to tell the kernel.
> Possibly we could get the BQ27000 driver to detect read errors better and
> somehow report "no battery" rather than "not calibrated".
Maybe there's a readable register somewhere that will always contain at
least one 0 bit? Then a 0xFF read could trigger a read from that
register to see if we're actually talking to a battery or not, and if
so, perhaps retry the original read to see if it's still 0xFF.
I don't know if this is actually feasible though, not having checked the
>> So, I have a question: is it possible to temporarily disable the
>> function that stops charging when the battery is full, so that it keeps
>> charging as long as the device is plugged in?
> No it isn't. That is a function of the hardware. The charger will keep
> charging until the current drops below a certain value, and then stops
Ah, OK, I see. That's perfectly reasonable, and seems much more
dependent on actual battery capacity than on any software readings
thereof, which suggests that I shouldn't bother trying even if I could.
More information about the Gta04-owner