Bug 7263
Summary: | Lenovo 3000 N100 always has present rate: 0 mA in /proc/acpi/battery/BAT1/state | ||
---|---|---|---|
Product: | ACPI | Reporter: | Richard Hughes (hughsient) |
Component: | BIOS | Assignee: | acpi_power-battery |
Status: | CLOSED INVALID | ||
Severity: | normal | ||
Priority: | P2 | ||
Hardware: | i386 | ||
OS: | Linux | ||
Kernel Version: | 2.6.18 | Subsystem: | |
Regression: | --- | Bisected commit-id: | |
Attachments: | the output of acpidump |
Description
Richard Hughes
2006-10-04 14:02:39 UTC
Created attachment 9154 [details]
the output of acpidump
This is the output from acpidump. If you need anything else, please let me
know. Thanks.
Please look for _BST (battery status) method in your DSDT. It fills PBST package (4 numbers) with values. 2nd is your rate. As you can see there is Store(Zero, Index(PBST, One)) near the end of the method, it means that your laptop will _never_ return rate other than 0. Thanks for the quick and detailed response. I've been looking in the .dsl file, and I agree with your conclusion that the rate will always be zero. What now? * Do I complain to Lenovo directly (i.e. can they fix it with a bios upgrade?) * can I create my own custom dsdt with the functionality added (is that possible?) * or do I write better code in HAL to do a best effort rate-guess based on the falling capacity? Thanks for your help, Richard. It occurs to me that if Windows runs on this laptop and and somehow figures out a battery rate, then Linux has a problem here... Any chance you can check? Len, this laptop gets the time remaining in windows correct, but I don't know if it is interpolating the rate value itself (and working around a buggy bios) or if it does it some other clever way. Is there some sort of windows program that gives me low level access like /proc/acpi/battery/BAT1/state does? Thanks again guys, Richard. It's a long shot, but do any of you have the specification for ACPI: Embedded Controller [EC0] (gpe 25)? So far, I think I'm managed to work out (from the ACPI spec and lots of googling): EC0.BMF0, 3 // always == 2 EC0.BTY0, 1 // always == 1 EC0.BST0, 8 // Battery State Bitfield EC0.BRC0, 16 // Remaining Current (mAh) EC0.BSN0, 16 // Serial Number ??? EC0.BPV0, 16 // Present Voltage EC0.BDV0, 16 // Design Voltage ??? EC0.BDC0, 16 // Design Capacity ??? EC0.BFC0, 16 // Last Full Capacity EC0.GAU0, 8 // Battery Gauge = WTF? But these may be wrong, and I don't know what Battery Gauge is. Any helpful links, pointers or other help will be rewarded with a beer at GUADEC2007. :-) |