Asus battery_full_discharging_quirk doubts

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

Linux 4.16 has new battery_full_discharging_quirk code in
drivers/acpi/battery.c for 5 Asus laptops which will detect when the
battery is reporting that it is charging even though the charge level
is full and AC power is connected. In this case it will adjust Linux's
reported state to avoid stating that it is charging, just reporting
that it is full.

I don't think this is a good idea in it's current form, for these reasons:

1. Linux will never even get close to winning on this particular DMI
blacklist. You will need to add literally hundreds of Asus models
here, and realistically we'll always be seriously behind/incomplete,
far from a state where the blacklist covers all affected products.


2. On the systems where we have investigated this, you will also
occasionally see state where it says that the battery is charging even
though it is full. Currently the quirk only covers discharging.


3. I asked Asus about this and they provided what I view as an
acceptable explanation. If you leave a battery at 100% charge and just
leave it in that state unused (because you're entirely running from AC
power instead) then the long term battery life will just fade away.
This is why - at least according to my limited understanding - all
UPS, decent consumer products, etc, have a battery controller which
will periodically perform a partial discharge & charge cycle under
these conditions. It gives more lifetime to your battery.

According to Asus's explanation this is exactly what they do, when the
battery is full they do limited charge and discharge cycles for each
cell, and the state returned in ACPI reflects this.

I looked in the ACPI spec expecting that I would be able to argue that
their DSDT is wrong, but as far as I can see, they actually comply
with the spec just fine. The ACPI spec allows you to report that your
battery has an estimated full charge available, but that you are
discharging and also on AC power. This is what they do and according
to their explanation this is an accurate reflection of reality.

I see no mention in the ACPI spec that the system should hide the fact
that it is doing a bit of charging or discharging when the battery
charge is full. ACPI just straightforwardly says you should report
when you are charging or discharging. I imagine that all major vendors
have this kind of charge/discharge thing going on, but most other
vendors apparently do not give you the full truth in ACPI - you could
perhaps argue that they are doing it wrong, and Asus is doing it
right.


I do agree that at a UI level, it is confusing to see that your
battery is full but also charging/discharging. The charge/discharge
cycle is a technical detail/optimization/hack that I would say should
not be exposed in the battery indication to the regular user. So
rather than quirking it in this way, I would suggest one of the
following:

 1. Don't quirk it for 5 Asus laptops but make it a generic thing.
Doesn't matter which system you are on, always detect if the battery
is full and on AC power and in such case tweak the kernel's returned
battery charge status to say "Full" instead

 2. Document that the kernel is doing the right thing, in terms that
it is passing on the information from ACPI which is also accurate. Ask
userspace to deal with this reality instead. Userspace also has enough
info available to realise that you're on AC power and the battery is
full, and can decide to show the battery full indication based on
that.

Daniel
--
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux