On Thu, Sep 30, 2010 at 8:45 AM, Richard Hughes <hughsi...@gmail.com> wrote: > On 30 September 2010 13:04, Marc Ferland <marc.ferl...@gmail.com> wrote: >> I'm having BIOS/firmware related problems that prevent some interrupt >> from being sent to the OS. I have to manually refresh the status. >> Since the problem is firmware related, it will probably won't be fixed >> in the kernel (see this bug report for more info: >> https://bugzilla.kernel.org/show_bug.cgi?id=19022). The only option >> left is to refresh the status by polling. > > Right, is there any DMI data or device data that can be used to force > upower to keep polling? I think that's preferable than userspace keep > requesting Refresh(). >
Of course, I would rather not be polling from user space all the. The battery status (percentage, remaining time, etc) is correctly updated by upowerd and is delivered to user-space as normal but not the battery or AC plug/unplugged events (caused by the firmware limitation). So what happens is that if I remove a battery or unplug the AC cable, the devices just stop updating but they are not removed from the /sysfs tree. They are still there with false information.... The only way I've found to update the devices tree (sysfs) is to manually read the /proc/acpi/battery/BAT[12]/state file. Reading this file seems to force a read of the battery presence _and_ their status information. So this works well in theory for the batteries. For the AC adapter, I found that the information, even when correctly updated in the sysfs tree, is not updated in upowerd. This is why I wanted to manually refresh it. For example: On a machine running on batteries: # upower -d Device: /org/freedesktop/UPower/devices/line_power_ADP1 native-path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/ACPI0003:00/power_supply/ADP1 power supply: yes updated: Thu Sep 30 12:49:48 2010 (1638 seconds ago) has history: no has statistics: no line-power online: no Device: /org/freedesktop/UPower/devices/battery_BAT1 native-path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0A:00/power_supply/BAT1 vendor: SHEnerTech model: LI202SX serial: SN 00E5 power supply: yes updated: Thu Sep 30 13:16:54 2010 (12 seconds ago) has history: yes has statistics: yes battery present: yes rechargeable: yes state: discharging energy: 23.643 Wh energy-empty: 0 Wh energy-full: 79.8423 Wh energy-full-design: 79.92 Wh energy-rate: 18.6036 W voltage: 11.011 V time to empty: 1.3 hours percentage: 29.6121% capacity: 99.9028% History (charge): 1285852554 29.612 discharging History (rate): 1285852614 18.604 discharging 1285852584 18.615 discharging 1285852554 18.570 discharging 1285852524 18.604 discharging Daemon: daemon-version: 0.9.5 can-suspend: no can-hibernate no on-battery: yes on-low-battery: no lid-is-closed: no lid-is-present: no Now if I plug the AC adapter in: # upower -d Device: /org/freedesktop/UPower/devices/line_power_ADP1 native-path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/ACPI0003:00/power_supply/ADP1 power supply: yes updated: Thu Sep 30 12:49:48 2010 (1792 seconds ago) has history: no has statistics: no line-power online: no Device: /org/freedesktop/UPower/devices/battery_BAT1 native-path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/PNP0C0A:00/power_supply/BAT1 vendor: SHEnerTech model: LI202SX serial: SN 00E5 power supply: yes updated: Thu Sep 30 13:19:24 2010 (16 seconds ago) has history: yes has statistics: yes battery present: yes rechargeable: yes state: charging energy: 22.8549 Wh energy-empty: 0 Wh energy-full: 79.8423 Wh energy-full-design: 79.92 Wh energy-rate: 0 W voltage: 11.248 V percentage: 28.6251% capacity: 99.9028% History (charge): 1285852704 28.625 discharging History (rate): 1285852764 0.000 charging 1285852734 18.648 discharging 1285852704 18.626 discharging 1285852674 18.659 discharging Daemon: daemon-version: 0.9.5 can-suspend: no can-hibernate no on-battery: no on-low-battery: no lid-is-closed: no lid-is-present: no The battery status has been updated (state is now charging) but the AC adapter is marked as offline... and by looking at the "updated" field of the AC power line it looks like it was never updated. Now if I ask sysfs: # cat /sys/class/power_supply/ADP1/online 0 And procfs: cat /proc/acpi/ac_adapter/ADP1/state state: on-line And then to sysfs again: cat /sys/class/power_supply/ADP1/online 1 And to upowerd again: upower -d Device: /org/freedesktop/UPower/devices/line_power_ADP1 native-path: /sys/devices/LNXSYSTM:00/LNXSYBUS:00/PNP0A08:00/device:02/ACPI0003:00/power_supply/ADP1 power supply: yes updated: Thu Sep 30 12:49:48 2010 (2175 seconds ago) has history: no has statistics: no line-power online: no Still offline and the updated field wasn't updated. Hope this is not too confusing ! Regards, Marc _______________________________________________ devkit-devel mailing list devkit-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/devkit-devel