pbbuttonsd man page on YellowDog

Man page or keyword search:  
man Server   18644 pages
apropos Keyword Search (all sections)
Output format
YellowDog logo
[printable version]

PBBUTTONSD(1)							 PBBUTTONSD(1)

NAME
       pbbuttonsd - daemon to support Laptop specific functions

SYNOPSIS
       pbbuttonsd [options]

DESCRIPTION
       PBButtonsd  is  a  daemon which brings support for many Laptop specific
       functions to Linux. Basically it was designed to support Apple  iBooks,
       Powerbooks or TiBooks but since version 0.5 the design has been changed
       to support any Notebook.

       From its roots pbbuttons support Apple PowerBooks and iBooks  by	 100%.
       Support	for  the  new  Intel  based  MacBooks  is  very	 new but grows
       steadily. I would say we reached 70% by now. Also the support for other
       intel  based  notebooks	jumped	forward	 by adding the ACPI support to
       pbbuttonsd, but because laptop support is very  hardware	 dependent,  I
       guess  we have only 30% on this machines.  Help to build up support for
       more machines is always welcome.

       Supported features:

       Advanced Power Management:
       - puts the machine to sleep if idle to save energy,
       - prevent the machine from entering sleep mode if CPU or Net is busy
	 until the job is finished,
       - send a warning if battery is running low,
       - configurable emergency actions if battery is critically low,
       - dims the display if user is passive to save energy
       - puts machine to sleep if cover was closed,
       - executes external scripts on certain power management events to allow
	 most flexibility,
       - is able to replace power management daemons like pmud, apmd, etc.

       Support for laptop dependent hotkeys:
       - to adjust display brightness
       - to adjust keyboard illumination,
       - to adjust the sound volume,
       - to mute/unmute the sound channels,
       - to open/close the CDROM tray,
       - to trigger sleep mode.
       - to switch external video on/off

       Support for laptop dependent specialities:
       - initializes trackpad and keyboard mode during startup,
       - disables trackpad's mouse click emulation while typing on the key‐
	 board
       - keeps keyboard settings during sleep mode,
       - cycles through the trackpad operating mode via hotkeys,
       - support ambient light sensor and automatic adjustment of LCD and key‐
	 board brightness on Apple PowerBooks and MacBook Pros.

USER INTERFACE
       The main input to PBButtonsd works  through  key	 codes.	 Certain  keys
       ensure  appropriate  actions. This keys are widely user configurable in
       the configuration file. In detail following keys are supported:

       Config Option	Modifier Description
       LCD_IllumUpKey	--	 Increase display brightness.
			shift	 Increase display brightness to maximum value.
				 The shift modifier here is hard coded and
				 can't be configured.

       LCD_IllumDownKey --	 Decrease display brightness until complete
				 darkness.
			shift	 Decrease display brightness to minimum value.
				 The shift modifier here is hard coded and
				 can't be configured.

       KBD_IllumUpKey	--	 Increase keyboard illumination brightness.
			shift	 Increase keyboard illumination brightness to
				 maximum value. The shift modifier here is
				 hard coded and can't be configured.

       KBD_IllumDownKey --	 Decrease keyboard illumination brightness
				 until complete darkness.
			shift	 Decrease keyboard illumination brightness to
				 minimum value. The shift modifier here is
				 hard coded and can't be configured.

       KBD_IllumOnKey	--	 Switch keyboard illumination on/off. The
				 level won't change.

       CRT_MirrorKey	--	 Enable/disable external video output.

       SleepKey		--	 Trigger configured sleep action.

       VolumeUpKey	--	 Increase volume of configured channels by
				 ten percent. This works on all sound hardware
				 the same way.
			shift	 Increase volume level in fine steps. This function
				 uses the volume scale the hardware supports so
				 that small volume adjustment might not result in
				 audible volume change.
				 OSS always handle the volume level in percent
				 so that this function will change the volume
				 level by one percent.
				 The shift modifier here is hard coded and can't
				 be configured.

       VolumeDownKey	--	 Decrease volume of configured channels by
				 ten percent.
			shift	 Decrease volume level in small steps. Smallest
				 hardware supported step with ALSA and one
				 percent with OSS.
				 The shift modifier here is hard coded and
				 can't be configured.

       MuteKey		--	 Disable/enable sound output. The volume level
				 won't change. Pressing any other volume con-
				 trol key will automaticaly enable sound out-
				 put again.

       EjectCDKey	--	 Ejects a CDROM from CDROM drive. If necessary
				 the device will be unmounted before. This
				 would fail if the device was busy.

       TPModeUpKey	--	 Cycle trackpad mode forward (notap, tap,
				 drag or lock). This function is only available
				 on Apple PowerBooks.

       TPModeDownKey	--	 Cycle trackpad mode backward (lock, drag,
				 tap or notap).	 This function is only available
				 on Apple PowerBooks.

       Not all of this keys must work on your system. Most of them  are	 hard‐
       ware  dependent and if your notebook doesn't have the required hardware
       the related function will not work. Read	 your  notebook's  manual  and
       pbbuttonsd.cnf (5) to figure out what you could expect.

COMMANDS AND SIGNALS
       PBButtonsd  has	an IPC interface (Inter Process Communication) and you
       could send commands to the server to trigger certain actions.  Use  the
       command line tool 'pbbcmd' with following syntax to send commands:

				  pbbcmd <command>

       Following commands are understood:

       SAVECONFIG     saves the configuration if enabled by pbbuttonsd's secu‐
		      rity checks (see 'configuration file' section below) and
		      you have the right permission.
       EJECTCD	      unmount and ejects the CDROM or closes the tray again,
		      if already open.
       SLEEP	      puts the machine to sleep (also known as suspend to RAM)
		      if possible. If sleep was not supported on this machine
		      the screen will be blanked. Sleep is a kernel function
		      and will only be triggered by pbbuttonsd.
       HIBERNATE      saves the memory and the process information to disk
		      (also known as suspend to Disk or Hibernate) if possi‐
		      ble. If hibernate was not supported on this machine
		      nothing will happen. Hibernate is a kernel function and
		      will only be triggered by pbbuttonsd through a PMCS
		      script usually placed in /etc/power/.
       REINIT	      This command triggers reinitialization of hardware under
		      control of pbbuttonsd (for example trackpad and keyboard
		      on powerbooks). The PMCS script to reinitialize the
		      power policy will also be launched after receiving this
		      command. This could be helpful when after a 'suspend to
		      disc' all the hardware needs to be reinitialized.

       Beside the IPC interface pbbuttonsd understands some signals:

       SIGHUP	1  pbbuttonsd scans for new input devices (see
		    'connecting/disconnecting new keyboards' section below).
       SIGINT	2  usually emitted by CTRL-C. pbbuttonsd will clean up used
		   resources and terminates
       SIGUSR1 10  pbbuttonsd reinitializes hardware components under its con‐
		   trol (for example trackpad and keyboard on powerbooks).
		   Sending this signal is the same as sending the command
		   REINIT except that IPC will not be used. This is for the
		   complete paranoid guys ;-)
       SIGTERM 15  pbbuttonsd will clean up its resources and terminates

KERNEL CONFIGURATION
       In kernels before 2.4.18-rc2-benh the brightness	 of  the  display  was
       handled	by  the	 kernel itself. The brightness hotkeys were blocked by
       the kernel and there was no chance for a user space daemon like	PBBut‐
       tonsd to get the necessary information.

       Nevertheless to get the brightness keys work with older kernels, a spe‐
       cial kernel patch could be applied. Without this patch the daemon  work
       as  well	 with the little limitation not to control the display bright‐
       ness. This is done  by  the  kernel,  so	 a  possibly  attached	client
       wouldn't be informed on brightness level changes.

       With kernel >= 2.6.18 a new SysFS interface to the backlight controller
       has been introduced. Unfortunately the kernel configuration become very
       confusing  and  misunderstanding.  The Kernel has two options regarding
       the backlight in section "Device Drivers -> Macintosh Device Drivers":

       Backlight control for LCD screens
	   (CONF_PMU_BACKLIGHT)

	   The help text says that this option enables generic backlight code.
	   In  fact  without this option you won't get any backlight interface
	   running, neither SysFS nor PMU, so say YES here.

	   Unfortunately this option enables  also  code  to  control  display
	   brightness  for older PowerBooks. That means the kernel itself con‐
	   trols the backlight brightness and interfere with  any  user	 space
	   daemmon.  The reference in the help text to use a user space daemon
	   like pbbuttonsd is very kind, but The user space daemon is helpless
	   if  the  kernel  itself  do	the job.  Nevertheless say YES to this
	   option.

       Provide legacy ioctl's on /dev/pmu for the backlight
	   (CONF_PMU_BACKLIGHT_LEGACY)

	   This option apears if backlight  control  has  been	enabled.  This
	   option adds some code to read and write the backlight level via the
	   pmu driver (/dev/pmu).  This interface was used  by	pbbuttonsd  in
	   the	past  and normaly it isn't needed any longer because the SysFS
	   interface should make it redundant.

	   Unfortunately the function to disable the direct kernel control  of
	   the	backlight  (for	 old PowerBooks, you remenber?) is part of the
	   code added by this option. That means if you say YES to  PMAC_BACK‐
	   LIGHT  but say NO to PMAC_BACKLIGHT_LEGACY, backlight will work but
	   pbbuttonsd will never get the chance to gain control over the back‐
	   light  controller. Kernel and user space daemon will interfere with
	   eachother in	 an  unacceptable  way	and  that  leads  to  unwanted
	   results.

	   This mixture of related but independent functions make it necessary
	   to say YES to this option as well until the Kernel guys cleaned  up
	   this mess.

       Finally your Kernel 2.6.18 configuration should look like this:

	   [*] Backlight control for LCD screens
		 [*] Provide legacy ioctl's on /dev/pmu for the backlight

       PBButtonsd will then automatically detect the best suited interface and
       use it.

GENERAL
       To get visual feedback from the adjustments a user made, a SystemV  IPC
       interface  is  implemented to exchange messages with a client which for
       example displays the brightness and volume levels on a X Desktop.

       If battery level is critically low pbbuttonsd has multiple mechanism to
       react  on. The default behavior is to put the machine to sleep.	Alter‐
       natively it is possible to send the init process the SIGPWR  signal  or
       to  shut the machine down directly by a configurable script. Everything
       could be done to bring the machine down in a controlled way before  the
       power  management  unit will switch the machine off the hard way due to
       lack of energy. This would prevent data losses and other problems.

       To be able to shut down the  machine  pbbuttonsd	 must  be  running  as
       'root'  because only the superuser is allowed to call the shutdown pro‐
       gram or could send init requests to the init process.

POWER POLICIES
       Since version 0.6 PBButtonsd supports so called power  policies.	  With
       this policies the user can roughly define how the machine should handle
       the current load condition. If low current consumption, maximum perfor‐
       mance  or  anything  in	between	 is most important at this time. Three
       policies are supported: 'powersave', 'custom' and 'performance'.

       Each power source can be connected to a policy that becomes  active  as
       soon  as	 the power source changes. Sometimes it may not desirable that
       the policy changes as soon as the power source changes. For  this  case
       the policy connected to this power source can be set to 'nochange'.

       The  pmcs  script  is  responsible to put the set policy into practice.
       PBButtonsd will call this script among others  every  time  the	policy
       changes or has to be reset after periods of sleep or suspend.

PBButtonsd AND SLEEP MODE (Suspend to RAM)
       PBButtonsd  can't  suspend  the	machine by its own. It uses kernel API
       functions for that. This means pbbuttonsd only asks the kernel: "Please
       suspend	the  machine".	If the kernel do so and what happens after the
       request is up to the kernel.

       Problems in this stage often occour due to  old	device	drivers	 which
       don't  support the suspend mode very well. The kernel API changed a lot
       here and it took a lot of time to adapt all the device drivers  to  the
       new interface. A solution could be to unload problematic device drivers
       before triggering sleep and reload  them	 after	wake  up.   PBButtonsd
       would  support  that  via  its  Power  Management  Control Scripts (see
       /etc/power/).

       The machine went to sleep after the main CPU  has  been	switched  off.
       Now,  the  computer  is	only  controlled  by  the PMU which is a small
       (mostly 8bit) microprocessor with ROM (Read Only	 Memory)  code.	 After
       the  occourence	of  a dedicated event the PMU reactivates the main CPU
       and the machine wake up again. Those events could be:

       - trigger a key on the keyboard
       - open the cover (closing the cover doesn't wake up the machine)
       - insert or remove an USB device
       - timer
       - other computers address the sleeping computer via LAN

       The PMU needs to know which events should trigger a wake up  procedure.
       The  first  two are explicitly enabled by the kernel before putting the
       machine to sleep. The third seems to be not maskable by the  PMU,  that
       means  it  will	always	wake up the computer. And the last two weren't
       supported at all yet on Linux.

       While the key trigger event will unconditionally wake up	 the  machine,
       the  cover  open	 event	could  be configured via the /proc/pmu/options
       interface. The following command will prevent your machine from	waking
       up after the cover has been opened:
		      echo > "lid_wakeup=0" > /proc/pmu/options

       And the following command enable the wake up on "cover open" again:
		      echo > "lid_wakeup=1" > /proc/pmu/options

       Other  wake  up options are not foreseen by the kernel but may be added
       in the future. PBButtonsd is completely out of control until the kernel
       has  finished  its  wake	 up  procedure	and gives control back to user
       space.

IBaM (Intelligent Battery Monitoring)
       IBaM is an advanced battery monitoring method, which  uses  statistical
       and  adaptive linear methods to provide accurate estimations of battery
       time remaining or of the time needed until full recharge.

       If IBaM is compiled into	 pbbuttonsd  all  internal  time  calculations
       based  on kernel battery information would be replaced. Through the IPC
       signal TimeRemaining pbbuttonsd clients	could  benefit	from  accurate
       time estimations too.

       Once  started  Pbbuttonsd  will	collect battery data and saves them to
       disk for statistical analysis. The more data pbbuttonsd have to analyse
       the more accurate the time estimations will be.

       Because	at  the very beginning pbbuttonsd has no data to analyse it is
       recommended to perform the initial procedure described  below  to  fill
       the  database  with  real  data. If pbbuttonsd has to initialize IBaM's
       database during	normal	usage  with  arbitrary	charge	and  discharge
       cycles, it might take longer to get reliable time predictions and accu‐
       rate battery warnings.

IBaM INITIAL PROCEDURE
       This step is not necessary if you only update PBButtonsd.  The  updated
       version will continue to use the existing data.

       At  the very beginnig pbbuttonsd has no data to analyse and all estima‐
       tions based on default values that won't be better than the kernel bat‐
       tery  data. Therefore it is recommended to do one complete battery dis‐
       charge/charge cycle after installing this version  of  pbbuttonsd  with
       integrated IBaM to initially fill the database with real data.

       Unplug AC power from your laptop. IBaM will now save the time intervals
       between changes in battery status. PBButtonsd will already use the data
       in  this	 early	stage  and the battery warnings might be unreliable or
       won't occur at all. This is normal behaviour and will only happen  dur‐
       ing initial discharge cycle.

       The  most  important time of a battery discharge cycle is the last min‐
       utes.  During the last, let's say 20 minutes of battery time it is most
       important  to  get reliable and accurate battery warnings. But this aim
       could only be reached if the IBaM database contains data about the last
       minutes on battery.  It is very important that the battery will be com‐
       pletely drained during the initial discharge  cycle  (until  pbbuttonsd
       triggers	 sleep or the hardware switch off hardly, prepare for the sec‐
       ond case to prevent data losses).

       After your battery is completely drained, plug in your AC connector and
       continue working as usual.

       IBaM  is fully initialized now and it's prepared to show its full power
       and benefit. Depending on your load cases  the  time  estimations  will
       fluctuating  a  bit  the first time. But after roundabout three battery
       charge/discharge cycles the predicted time  and	the  battery  warnings
       will be rather stable and reliable.

       The database is updated continously so that any aging of the battery is
       taken into account. When pbbuttons tells you now,  you  still  have  10
       minutes	left  on  battery,  then you will have 10 minutes left even if
       your battery is growing old and the capacity decreases.

IBaM and multiple batteries
       Currently IBaM is not able to handle multiple batteries	seperatly.  It
       always  sums up all batteries in system and calculates with the result.
       Therefore the IBaM statistics will be influenced	 if  you  change  your
       battery configuration (adding or removing batteries).

       Battery warnings will be slightly inaccurate after changing the battery
       configuration. If you run a long time with  a  unchanged	 configuration
       this  changes  would hardly be significant or not seen at all. The sce‐
       nario described in the paragraph below is only likely if you did only a
       few charge/discharge cycles.

       After  plugging in an additional battery pbbuttonsd might show low bat‐
       tery warnings too early and vica versa after you	 removed  your	second
       battery.	  Especially  after  you decreased overall battery capacity by
       removing a second battery, pbbuttonsd might get aware  of  low  battery
       condition  too  late.   As  result the machine will switch off the hard
       way. To prevent data losses in this case you should not	wait  for  the
       last  warning  before  you  plug	 in the AC connector. IBaM will resync
       itself automatically during the next charge/discharge cycles.

       IBaM works best if you use always the same battery  configuration  (one
       or two batteries).

CONFIGURATION FILE
       PBButtonsd  uses a configuration file for setting up all it's features.
       This file is usually located in etc. From version 0.5.4	on  PBButtonsd
       is also able to write the current configuration to a file.

       To  make this solution as secure as possible a batch of security checks
       will be performed until configuration writing would be allowed:

       1. The owner of the writable configuration file must be the same as the
	  owner of pbbuttonsd process.
       2. The configuration file is only writable by the owner.

       If  any	of  this  conditions failed, writing of the configuration file
       would be disabled.

CONNECTING / DISCONNECTING NEW INPUT DEVICES
       PBButtonsd uses for its input the event	hander	in  /dev/input/event%,
       which  handles  also hot-plugable devices such as USB or ADB (Mac only)
       input devices. PBButtonsd scanns those devices at start time  and  work
       with the found devices.

       Before  Hotplug, the only way for pbbuttonsd to realize newly connected
       devices is to regularly scan the event devices. Unfortunately there  is
       no  summary  keyboard  device  as  there	 is for mice and hotplug isn't
       available for kernel 2.4 and before. Because external USB input devices
       become quite common, the autorescan feature is enabled by default.

       If  your	 hard  disk is prevented from spinning down due to the regular
       event device scans, you might want to disable this feature. This	 could
       be  done	 in the configuration file. In this case you have to trigger a
       rescan manually after connecting new input devices. Scanning is	initi‐
       ated by sending the HUP signal to the server:

		       kill -HUP `cat /var/run/pbbuttonsd.pid`

       Be  aware  that	the  configuration  file will also be reloaded in this
       case.

OPTIONS
       PBButtonsd accepts the following options:

       -c, --configfile=CONFIGFILE
	      Use an alternative configuration file,  default  is  /etc/pbbut‐
	      tonsd.cnf.

       -h, --help
	      Show summary of options.

       -v, --version
	      Show version of PBButtonsd.

       -q, --quiet
	      Suppress	the welcome message. Some startup scripts want to have
	      full control about their output.

       -d, --detach[=PIDFILE]
	      Start PBButtonsd as background process. optional an  alternative
	      pidfile. The daemon writes it's pid into this file.
	      In  this	mode  we  can't assume to have a valid terminal so all
	      outputs will be blocked and no error message will be printed.

	      If you don't use this flag and start PBButtonsd as background
	      process by adding a ´&´ to the  command  line,  please  redirect
	      ´stdout´	and  ´stderr´  to a valid file as well (or at least to
	      /dev/null if you don't need error output). If you	 don't	do  so
	      PBButtonsd  may be stopped by the shell because of using invalid
	      file descriptors.

SEE ALSO
       pbbuttonsd.cnf (5), gtkpbbuttons (1)

AUTHOR
       Matthias Grimm.

			       February 07, 2007		 PBBUTTONSD(1)
[top]

List of man pages available for YellowDog

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net