xfce4-power-manager-0.8.5 and hal

J.R. Oldroyd fbsd at opal.com
Mon Nov 29 01:23:34 UTC 2010

I am nominally maintaining the xfce4-power-manager port; sadly this
is a port that gets only rare attention.  Now is one of those rare

If someone else is willing to take this port over, that'd be ideal,
since I am not an expert on hal, d-bus or power-management/acpi stuff
in general.  Please send me an email if you're interested in taking
this on.

In the meantime...

On bringing the port up-to-date, it became clear that much of the
application's functionality is not working on FreeBSD.  Certain things
can be made to work with changes to PolicyKit.conf and sysctl settings
and these will now be documented in the port's pkg-message.

Other things are still not working.

1. The xfce4-power-manager program uses hal to obtain a list of buttons
   on which to request d-bus messages.  It gets the list using a
   FindDeviceByCapability call.  On my laptop the buttons are:

   udi = '/org/freedesktop/Hal/devices/acpi_button_0'
     button.type = 'power'  (string)
     freebsd.driver = 'acpi_button'  (string)
     freebsd.unit = 0  (0x0)  (int)
     info.capabilities = {'button'} (string list)
     info.category = 'button'  (string)
     info.parent = '/org/freedesktop/Hal/devices/computer'  (string)
     info.product = 'Power Button'  (string)
     info.subsystem = 'platform'  (string)
     info.udi = '/org/freedesktop/Hal/devices/acpi_button_0'  (string)
     platform.id = 'acpi_button.0'  (string)
     pnp.description = 'ACPI power button device'  (string)
     pnp.id = 'PNP0C0C'  (string)

   udi = '/org/freedesktop/Hal/devices/acpi_lid_0'
     button.has_state = true  (bool)
     button.state.value = true  (bool)
     button.type = 'lid'  (string)
     freebsd.driver = 'acpi_lid'  (string)
     freebsd.unit = 0  (0x0)  (int)
     info.ignore = true  (bool)
     info.parent = '/org/freedesktop/Hal/devices/computer'  (string)
     info.product = 'Ignored Device'  (string)
     info.subsystem = 'platform'  (string)
     info.udi = '/org/freedesktop/Hal/devices/ignored-device'  (string)
     platform.id = 'acpi_lid.0'  (string)
     pnp.description = 'ACPI lid device'  (string)
     pnp.id = 'PNP0C0D'  (string)
   Now, acpi_lid_0 is being omitted from the list given to
   xfce4-power-manager because it does not have an info.capability
   value of "button" - it does not have info.capability at all.  (Note
   also, that lshal lists it as an ignored device.)  Why is this, and
   what must be changed to add the capability to the lid device?

2. If I force inclusion of the lid device in xfce4-power-manager's device
   list, xfce4-power-manager then does perform the configured action on
   lid closure.

   However, if the action is to suspend the system, on resume, the
   display "brightness" is very low.  I say "brightness" in quotes,
   beecause the cursor's brightness is normal, and the backlight
   is clearly on, it is merely the contents of the display that are

   Switching to the console gives dimmed console text, too.

   The brightness seems to be at a random value typically from as
   low as 5% to about 50% of normal.  Repeated suspend/resume cycles
   done using xfce4-power-manager tend to further lower the brightness
   more until it gets to be unusable.  One can still "drive blind"
   though, and things do work.

   sysctl hw.acpi.video.lcd0.brightness remains at 100 throughout.

   Killing the X server and allowing it to restart brings everything
   back to normal brightness.

   This does NOT happen on a normal suspend/resume initiated from the
   Xfce shutdown pane - this works perfectly and repeatedly here meaning
   my reset_video settings etc are OK for normal suspend/resume cycles.

   It also does NOT happen for a suspend/resume for a lid closure
   controlled by setting sysctl hw.acpi.lid_switch_state=S3... this
   also works perfectly.

   Only when the suspend is initiated by xfce4-power-manager is the
   display dimmed on resume.

   This suggests there is a problem with to xfce4-power-manager's
   brightness or backlight support which is messing up.

   Any thoughts on what might be going on here?

I'll probably add some other questions about hal/dbus in due course,
once we've resolved these.

As I said at the top, ideally it would be great if someone else could
take this one over and get it working, but in the absence of this,
and with some help, I'll get it going as time permits.


More information about the freebsd-ports mailing list