I wrote my own perl script to track battery usage - as an exercise in programming rather than in utility - and came across a similar problem.
In my case, I was calling
/usr/local/bin/apm rather than grokking /proc/apm, and it only ever reports "charging" (with no status). I presumed the battery meter was doing the same.
Here's the contents of my /proc/apm from just now:
Without charging:
1.14 1.2 0x02 0x00 0x00 0x01 50% -1 ?
Immediately after plugging in power:
1.14 1.2 0x02 0x01 0x03 0x08 255% -1 ?
The file
<srcdir>/arch/arm/kernel/apm.c gives the field definitions in /proc/apm as:
/*
* Arguments, with symbols from linux/apm_bios.h.
*
* 0) Linux driver version (this will change if format changes)
* 1) APM BIOS Version. Usually 1.0, 1.1 or 1.2.
* 2) APM flags from APM Installation Check (0x00):
* bit 0: APM_16_BIT_SUPPORT
* bit 1: APM_32_BIT_SUPPORT
* bit 2: APM_IDLE_SLOWS_CLOCK
* bit 3: APM_BIOS_DISABLED
* bit 4: APM_BIOS_DISENGAGED
* 3) AC line status
* 0x00: Off-line
* 0x01: On-line
* 0x02: On backup power (BIOS >= 1.1 only)
* 0xff: Unknown
* 4) Battery status
* 0x00: High
* 0x01: Low
* 0x02: Critical
* 0x03: Charging
* 0x04: Selected battery not present (BIOS >= 1.2 only)
* 0xff: Unknown
* 5) Battery flag
* bit 0: High
* bit 1: Low
* bit 2: Critical
* bit 3: Charging
* bit 7: No system battery
* 0xff: Unknown
* 6) Remaining battery life (percentage of charge):
* 0-100: valid
* -1: Unknown
* 7) Remaining battery life (time units):
* Number of remaining minutes or seconds
* -1: Unknown
*
min = minutes; sec = seconds
*/
..Which, from the above, I interpret to mean the unit's using Linux APM 1.14, APM Spec 1.2, it's got 32 Bit APM support (no other flags), my power is external, the battery WAS "low" and is now "charging", and (critically) 255 looks like -1 to me - battery life percentage unknown.
I think you're out of luck...