Contribute
Register

Acer Aspire V3-372

Status
Not open for further replies.
Post native ACPI files.

You might have to debug the _BST logic with ACPIDebug.kext so you can find the error/problem.
Here you go.
 

Attachments

  • origin.zip
    64.9 KB · Views: 87
Here you go.

Definitely this:
You might have to debug the _BST logic with ACPIDebug.kext so you can find the error/problem.

Refer to the ACPI spec, so you understand how _BST is supposed to work...
 
Definitely this:


Refer to the ACPI spec, so you understand how _BST is supposed to work...
This is a lot harder than i thought. What do you think is the problem here?

If battery level is for example at 95% and you let it to charge to 100% battery status displays correctly. (says that the Battery is charged and power source = power adapter) Also I tested that if I unplug the charger and put it back in, it still displays it correctly.

However, if I restart the computer at 100% then the status will be displayed incorrectly. (says that its running on battery and it is calculating time remaining forever) and if i let it to discharge lets say again to 95% and charge it to 100% status will be correct.

This is really troubling me and I don't know where to begin debugging it.

EDIT: Okay, I was wrong, it shows 100% prematurely. When it actually reaches 100% the status will be displayed incorrectly (Says its running on battery and calculating time remaining)
 
Last edited:
This is a lot harder than i thought. What do you think is the problem here?

If battery level is for example at 95% and you let it to charge to 100% battery status displays correctly. (says that the Battery is charged and power source = power adapter) Also I tested that if I unplug the charger and put it back in, it still displays it correctly.

However, if I restart the computer at 100% then the status will be displayed incorrectly. (says that its running on battery and it is calculating time remaining forever) and if i let it to discharge lets say again to 95% and charge it to 100% status will be correct.

This is really troubling me and I don't know where to begin debugging it.

To start, use the debug ACPIBatteryManager.kext so you know what data is coming back from _BST. You will find it in system.log.
 
To start, use the debug ACPIBatteryManager.kext so you know what data is coming back from _BST. You will find it in system.log.
Am I doing it correctly?'
Code:
            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                XOr (DerefOf (Index (B0IP, Zero)), One, Local0)
                Store (MB0S, Local5) \RMDT.P2("MB0S", Local5)
                Return (GBST (Zero, Local5, Local0, B0SP)) \RMDT.P2("GBST", Local5)
            }

This is what is in system.log when battery is charged 100% and charger is connected.
To me it looks like it is actually trying to discharge it.

Code:
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: { "MB0S", 0xad, }
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: "Store (One, Local0)"
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: "Store (MBFC,Local2)"
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: "Substract (0x0010000, Local1, Local1)"
 
Am I doing it correctly?'
Code:
            Method (_BST, 0, NotSerialized)  // _BST: Battery Status
            {
                XOr (DerefOf (Index (B0IP, Zero)), One, Local0)
                Store (MB0S, Local5) \RMDT.P2("MB0S", Local5)
                Return (GBST (Zero, Local5, Local0, B0SP)) \RMDT.P2("GBST", Local5)
            }

Code placed after the Return statement is unreachable.

This is what is in system.log when battery is charged 100% and charger is connected.
To me it looks like it is actually trying to discharge it.

Code:
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: { "MB0S", 0xad, }
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: "Store (One, Local0)"
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: "Store (MBFC,Local2)"
Jun 18 18:01:31 Tomis-MacBook-Air kernel[0]: ACPIDebug: "Substract (0x0010000, Local1, Local1)"

No way to interpret this data without seeing the DSDT with the RMDT calls...

Also, coordinate with ACPIBatteryManager debug output.
 
Code placed after the Return statement is unreachable.



No way to interpret this data without seeing the DSDT with the RMDT calls...

Also, coordinate with ACPIBatteryManager debug output.
Battery is not working with debug ACPIBatteryManager. It displays 0% charge
 
Battery is not working with debug ACPIBatteryManager. It displays 0% charge

Behavior of debug version is the same as release but with extra logs in system.log. Look at your system.log.
 
Behavior of debug version is the same as release but with extra logs in system.log. Look at your system.log.
I think I might have fixed it...

At least it seems like it. It shows that 99% is fully charged. I think I might have to calibrate it. Posting it here so you can tell me if its wrong or horribly wrong.

This is my GBST method that's in charge of changes in battery status.
I commented the change on code, it doesn't let me color it. :(

Code:
Method (GBST, 4, NotSerialized)
        {
            If (And (Arg1, 0x02))
            {
                \RMDT.PUSH("Store(0x02, local0)")
                Store (0x02, Local0)
                If (And (Arg1, 0x20))
                {
                    \RMDT.PUSH("Store(Zero, Local0)")
                    Store (Zero, Local0)
                }
            }
            ElseIf (And (Arg1, 0x04))
            {
                \RMDT.PUSH("Store (One, Local0)")
                Store (One, Local0)
            }
            Else
            {
                \RMDT.PUSH("Store (Zero, Local0)")
                Store (Zero, Local0)
            }

            If (And (Arg1, 0x10))
            {
                \RMDT.PUSH("Or (Local0, 0x04, Local0")
                Or (Local0, 0x04, Local0)
            }

            If (And (Arg1, One))
            {
                Store (MBAC, Local1)
                Store (MBRC, Local2)
                If (ACST)
                {
                    If (And (Arg1, 0x20))
                    {
                        \RMDT.PUSH("Store (MBFC,Local2)")
                        Store (Zero, Local0) //This is what i changed, Original value was "Store (MBFC, Local2)"
                    }
                }

                If (Arg2)
                {
                    \RMDT.PUSH("Multiply (Local2, 0x0A, Local2)")
                    Multiply (Local2, 0x0A, Local2)
                }

                Store (MBVO, Local3)
                If (LGreaterEqual (Local1, 0x8000))
                {
                    If (And (Local0, One))
                    {
                        \RMDT.PUSH("Substract (0x0010000, Local1, Local1)")
                        Subtract (0x00010000, Local1, Local1)
                    }
                    Else
                    {
                        \RMDT.PUSH("Store (Zero, Local1)")
                        Store (Zero, Local1)
                    }
                }
                ElseIf (LEqual (And (Local0, 0x02), Zero))
                {
                    \RMDT.PUSH("Store (Zero, Local1)")
                    Store (Zero, Local1)
                }

                If (Arg2)
                {
                    \RMDT.PUSH("Multiply (Local3, Local1, Local1) and Divide (Local1, 0x03E8, Local7, Local1)")
                    Multiply (Local3, Local1, Local1)
                    Divide (Local1, 0x03E8, Local7, Local1)
                }
            }
            Else
            {
                Store (Zero, Local0)
                Store (0xFFFFFFFF, Local1)
                Store (0xFFFFFFFF, Local2)
                Store (0xFFFFFFFF, Local3)
            }

            Store (Local0, Index (Arg3, Zero))
            Store (Local1, Index (Arg3, One))
            Store (Local2, Index (Arg3, 0x02))
            Store (Local3, Index (Arg3, 0x03))
            Return (Arg3)
        }
 
I think I might have fixed it...

At least it seems like it. It shows that 99% is fully charged. I think I might have to calibrate it. Posting it here so you can tell me if its wrong or horribly wrong.

Not possible without seeing the original code for comparison with new.

And you should provide some description of what you think the bug was, along with how the debug output you used shows it, and what you did to fix it (standard peer code review sort of thing)...
 
Status
Not open for further replies.
Back
Top