Battery indicator ALWAYS says Using Battery Power - even when plugged in - ASUS laptop

I have an ASUS N550JK laptop (BIOS version 204) running Ubuntu 14.04 (3.13.0-43-generic kernel).

My issue is that the battery indicator ALWAYS shows that it's using battery power - even when plugged in and fully charged. So even though I have selected to show the battery status in the menu bar only when charging or in use (in power settings), it is ALWAYS displayed. When it reaches a full charge, the indicator icon will either show just the percentage (usually 99% or 100%), or sometimes a very big number for time (like 22:14) along with the percentage. If I go to the power settings menu, it always says "Using battery power", with something like 40 hours remaining. This is all while plugged in and fully charged.

Are there any fixes less drastic than trying to update BIOS, or is a BIOS update necessary to fix this? The latest BIOS version is 208 according to the ASUS website, but the (very brief) descriptions of the updates don't mention anything about battery issues. If at all possible I'd like to avoid updating BIOS because of the risk involved.

I've already tried letting the battery drain all the way and then charging to full, with no luck.

Thanks in advance!


I would turn the laptop off and take out the battery and plug it in to see if it thinks it is on battery power that should make work I think.


It seem there is a bug in the acpi, this could be corrected with a modded DSDT but i don't know how to make it load in Ubuntu (tried and failed on my N551JM) here is what user Vmonheros write about it:

The culprit is here, inside method FBST (called inside _BST)

Store (Zero, Local0)
If (^^LPCB.EC0.ACAP ())
{
Store (One, Local0)
}

So Local0=1 if the laptop is on power, fine ;)

If (Local0)
{
If (CHGS (Zero)) here CHGS =0 id battery is charging
{
Store (0x02, Local0)
}
Else
{
Store (One, Local0) The error is here, if I'm on power and battery is not charging, we must store zero, not one !
}
}
Else
{
Store (One, Local0) }

With this "small" correction, everything works well now.