- Joined
- Nov 3, 2013
- Messages
- 136
- Motherboard
- Asus N53SV
- CPU
- i7-2670QM
- Graphics
- HD 3000
- Mobile Phone
Here you go.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.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.
You might have to debug the _BST logic with ACPIDebug.kext so you can find the error/problem.
This is a lot harder than i thought. What do you think is the problem here?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.
Am I doing it correctly?'To start, use the debug ACPIBatteryManager.kext so you know what data is coming back from _BST. You will find it in system.log.
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)
}
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) }
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)"
Battery is not working with debug ACPIBatteryManager. It displays 0% chargeCode 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
I think I might have fixed it...Behavior of debug version is the same as release but with extra logs in system.log. Look at your system.log.
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.