xref: /freebsd/usr.sbin/apmd/README (revision 05248206f720394d95c2a7475429311df670a2e9)
1d50a71bdSMitsuru IWASAKIFreeBSD apmd Package Release Notes (19990711 version)
2d50a71bdSMitsuru IWASAKI
3d50a71bdSMitsuru IWASAKI1. What is "apmd"?
4d50a71bdSMitsuru IWASAKI==================
5d50a71bdSMitsuru IWASAKI
6d50a71bdSMitsuru IWASAKIThe apmd package provides a means of handling various APM events from
7d50a71bdSMitsuru IWASAKIuserland code.  Using apmd.conf, the apmd(8) configuration file, you
8d50a71bdSMitsuru IWASAKIcan select the APM events to be handled from userland and specify the
9d50a71bdSMitsuru IWASAKIcommands for a given event, allowing APM behaviour to be configured
10d50a71bdSMitsuru IWASAKIflexibly.
11d50a71bdSMitsuru IWASAKI
12d50a71bdSMitsuru IWASAKI
13d50a71bdSMitsuru IWASAKI2. How to install the apmd package
14d50a71bdSMitsuru IWASAKI==================================
15d50a71bdSMitsuru IWASAKI
16d50a71bdSMitsuru IWASAKI2.1 Making the apmd control device file
17d50a71bdSMitsuru IWASAKI---------------------------------------
18d50a71bdSMitsuru IWASAKI
19d50a71bdSMitsuru IWASAKIapmd(8) uses the new special device file /dev/apmctl.  This should be
20d50a71bdSMitsuru IWASAKIcreated as follows:
21d50a71bdSMitsuru IWASAKI
22d50a71bdSMitsuru IWASAKI# cd /dev
23d50a71bdSMitsuru IWASAKI# mknod apmctl c 39 8
24d50a71bdSMitsuru IWASAKI
25d50a71bdSMitsuru IWASAKI2.2 Applying the kernel patch and building a new kernel
26d50a71bdSMitsuru IWASAKI-------------------------------------------------------
27d50a71bdSMitsuru IWASAKI
28d50a71bdSMitsuru IWASAKIThe next step is to apply the patch against the sys source tree.
29d50a71bdSMitsuru IWASAKIGo to the source directory (eg. /usr/src/ or /usr/PAO3/src/) and run
30d50a71bdSMitsuru IWASAKIthe patch command as follows:
31d50a71bdSMitsuru IWASAKI
32d50a71bdSMitsuru IWASAKI# gzip -cd [somewhere]/apmd-sys-R320.diff | patch
33d50a71bdSMitsuru IWASAKI
34d50a71bdSMitsuru IWASAKIFor PAO3 users, the patch file name would be apmd-sys-PAO3.diff
35d50a71bdSMitsuru IWASAKIinstead of apmd-sys-R320.diff.  After this step has completed
36d50a71bdSMitsuru IWASAKIsuccessfully, build and install a new kernel and reboot your system.
37d50a71bdSMitsuru IWASAKI
38d50a71bdSMitsuru IWASAKI2.3 Making the apmd program
39d50a71bdSMitsuru IWASAKI---------------------------
40d50a71bdSMitsuru IWASAKI
41d50a71bdSMitsuru IWASAKIGo to src/usr.sbin/ and extract the apmd tarball as follows:
42d50a71bdSMitsuru IWASAKI
43d50a71bdSMitsuru IWASAKI# tar xzpvf [somewhere]/apmd-usr.sbin.tar.gz
44d50a71bdSMitsuru IWASAKI
45d50a71bdSMitsuru IWASAKIBefore doing a make all, you need to copy apm_bios.h in the sys source
46d50a71bdSMitsuru IWASAKItree to /usr/include/machine/ first:
47d50a71bdSMitsuru IWASAKI
48d50a71bdSMitsuru IWASAKI# cp /sys/i386/include/apm_bios.h /usr/include/machine/
49d50a71bdSMitsuru IWASAKI
50d50a71bdSMitsuru IWASAKIThen do the build and install steps in the apmd directory:
51d50a71bdSMitsuru IWASAKI
52d50a71bdSMitsuru IWASAKI# cd src/usr.sbin/apmd
53d50a71bdSMitsuru IWASAKI# make depend all install
54d50a71bdSMitsuru IWASAKI
55d50a71bdSMitsuru IWASAKI2.4 Setting up the configuration file and userland script
56d50a71bdSMitsuru IWASAKI---------------------------------------------------------
57d50a71bdSMitsuru IWASAKI
58d50a71bdSMitsuru IWASAKIIn src/usr.sbin/apm/etc/ there are example configuration and userland
59d50a71bdSMitsuru IWASAKIscript files which are invoked automatically when the APM BIOS informs
60d50a71bdSMitsuru IWASAKIapmd of an event, such as suspend request.  Copy these files to
61d50a71bdSMitsuru IWASAKI/etc/ as follows:
62d50a71bdSMitsuru IWASAKI
63d50a71bdSMitsuru IWASAKI# cp src/usr.sbin/apm/etc/* /etc/
64d50a71bdSMitsuru IWASAKI
65d50a71bdSMitsuru IWASAKI
66d50a71bdSMitsuru IWASAKI3. Running the apmd daemon program
67d50a71bdSMitsuru IWASAKI==================================
68d50a71bdSMitsuru IWASAKI
69d50a71bdSMitsuru IWASAKITo run apmd(8) in background mode, simply type ``apmd''.
70d50a71bdSMitsuru IWASAKI
71d50a71bdSMitsuru IWASAKI# apmd
72d50a71bdSMitsuru IWASAKI
73d50a71bdSMitsuru IWASAKITo make a running apmd reload /etc/apmd.conf, send a SIGHUP signal to
74d50a71bdSMitsuru IWASAKIthe apmd(8) process.
75d50a71bdSMitsuru IWASAKI
76d50a71bdSMitsuru IWASAKI# kill -HUP [apmd pid]
77d50a71bdSMitsuru IWASAKIor
78d50a71bdSMitsuru IWASAKI# killall -HUP apmd
79d50a71bdSMitsuru IWASAKI
80d50a71bdSMitsuru IWASAKIapmd has some command line options.  For the details, please
81d50a71bdSMitsuru IWASAKIrefer to the manpage of apmd.
82d50a71bdSMitsuru IWASAKI
83d50a71bdSMitsuru IWASAKI4. Configuration file
84d50a71bdSMitsuru IWASAKI=====================
85d50a71bdSMitsuru IWASAKI
86d50a71bdSMitsuru IWASAKIThe structure of the apmd configuration file is quite simple.  For
87d50a71bdSMitsuru IWASAKIexample:
88d50a71bdSMitsuru IWASAKI
89d50a71bdSMitsuru IWASAKIapm_event SUSPENDREQ {
90d50a71bdSMitsuru IWASAKI	exec "sync && sync && sync";
91d50a71bdSMitsuru IWASAKI	exec "sleep 1";
92d50a71bdSMitsuru IWASAKI	exec "zzz";
93d50a71bdSMitsuru IWASAKI}
94d50a71bdSMitsuru IWASAKI
95*cd0788e1SUlrich SpörleinWill cause apmd to receive the APM event SUSPENDREQ (which may be
96d50a71bdSMitsuru IWASAKIposted by an LCD close), run the sync command 3 times and wait for a
97d50a71bdSMitsuru IWASAKIwhile, then execute zzz (apm -z) to put the system in the suspend
98d50a71bdSMitsuru IWASAKIstate.
99d50a71bdSMitsuru IWASAKI
100d50a71bdSMitsuru IWASAKI4.1 The apm_event keyword
101d50a71bdSMitsuru IWASAKI-------------------------
102d50a71bdSMitsuru IWASAKI`apm_event' is the keyword which indicates the start of configuration for
103d50a71bdSMitsuru IWASAKIeach events.
104d50a71bdSMitsuru IWASAKI
105d50a71bdSMitsuru IWASAKI4.2 APM events
106d50a71bdSMitsuru IWASAKI--------------
107d50a71bdSMitsuru IWASAKI
108d50a71bdSMitsuru IWASAKIIf you wish to execute the same commands for different events, the
109d50a71bdSMitsuru IWASAKIevent names should be delimited by a comma.  The following are valid
110d50a71bdSMitsuru IWASAKIevent names:
111d50a71bdSMitsuru IWASAKI
112d50a71bdSMitsuru IWASAKIo Events ignored by the kernel if apmd is running:
113d50a71bdSMitsuru IWASAKI
114d50a71bdSMitsuru IWASAKISTANDBYREQ
115d50a71bdSMitsuru IWASAKISUSPENDREQ
116d50a71bdSMitsuru IWASAKIUSERSUSPENDREQ
117d50a71bdSMitsuru IWASAKIBATTERYLOW
118d50a71bdSMitsuru IWASAKI
119d50a71bdSMitsuru IWASAKIo Events passed to apmd after kernel handling:
120d50a71bdSMitsuru IWASAKI
121d50a71bdSMitsuru IWASAKINORMRESUME
122d50a71bdSMitsuru IWASAKICRITRESUME
123d50a71bdSMitsuru IWASAKISTANDBYRESUME
124d50a71bdSMitsuru IWASAKIPOWERSTATECHANGE
125d50a71bdSMitsuru IWASAKIUPDATETIME
126d50a71bdSMitsuru IWASAKI
127d50a71bdSMitsuru IWASAKI
128d50a71bdSMitsuru IWASAKIOther events will not be sent to apmd.
129d50a71bdSMitsuru IWASAKI
130d50a71bdSMitsuru IWASAKI4.3 command line syntax
131d50a71bdSMitsuru IWASAKI-----------------------
132d50a71bdSMitsuru IWASAKI
133*cd0788e1SUlrich SpörleinIn the example above, the three lines beginning with `exec' are commands
134d50a71bdSMitsuru IWASAKIfor the event.  Each line should be terminated with a semicolon.  The
135d50a71bdSMitsuru IWASAKIcommand list for the event should be enclosed by `{' and `}'. apmd(8)
136d50a71bdSMitsuru IWASAKIuses /bin/sh for double-quotation enclosed command execution, just as
137d50a71bdSMitsuru IWASAKIwith system(3).  Each command is executed in order until the end of
138d50a71bdSMitsuru IWASAKIthe list is reached or a command finishes with a non-zero status code.
139d50a71bdSMitsuru IWASAKIapmd(8) will report any failed command's status code via syslog(3)
140d50a71bdSMitsuru IWASAKIand will then reject the request event posted by APM BIOS.
141d50a71bdSMitsuru IWASAKI
142d50a71bdSMitsuru IWASAKI4.4 Built-in functions
143d50a71bdSMitsuru IWASAKI----------------------
144d50a71bdSMitsuru IWASAKI
145d50a71bdSMitsuru IWASAKIYou can also specify apmd built-in functions instead of command lines.
146d50a71bdSMitsuru IWASAKIA built-in function name should be terminated with a semicolon, just as
147d50a71bdSMitsuru IWASAKIwith a command line.
148d50a71bdSMitsuru IWASAKIThe following built-in functions are currently supported:
149d50a71bdSMitsuru IWASAKI
150d50a71bdSMitsuru IWASAKIo reject;
151d50a71bdSMitsuru IWASAKI
152d50a71bdSMitsuru IWASAKI  Reject last request posted by the APM BIOS.  This can be used to reject a
153d50a71bdSMitsuru IWASAKI  SUSPEND request when the LCD is closed and put the system in a STANDBY
154d50a71bdSMitsuru IWASAKI  state instead.
155d50a71bdSMitsuru IWASAKI
156d50a71bdSMitsuru IWASAKI
157d50a71bdSMitsuru IWASAKI
158d50a71bdSMitsuru IWASAKI5. EXAMPLES
159d50a71bdSMitsuru IWASAKI===========
160d50a71bdSMitsuru IWASAKI
161d50a71bdSMitsuru IWASAKISample configuration commands include:
162d50a71bdSMitsuru IWASAKI
163d50a71bdSMitsuru IWASAKIapm_event SUSPENDREQ {
164d50a71bdSMitsuru IWASAKI	exec "/etc/rc.suspend";
165d50a71bdSMitsuru IWASAKI}
166d50a71bdSMitsuru IWASAKI
167d50a71bdSMitsuru IWASAKIapm_event USERSUSPENDREQ {
168d50a71bdSMitsuru IWASAKI	exec "sync && sync && sync";
169d50a71bdSMitsuru IWASAKI	exec "sleep 1";
170d50a71bdSMitsuru IWASAKI	exec "apm -z";
171d50a71bdSMitsuru IWASAKI}
172d50a71bdSMitsuru IWASAKI
173d50a71bdSMitsuru IWASAKIapm_event NORMRESUME, STANDBYRESUME {
174d50a71bdSMitsuru IWASAKI	exec "/etc/rc.resume";
175d50a71bdSMitsuru IWASAKI}
176d50a71bdSMitsuru IWASAKI
177d50a71bdSMitsuru IWASAKI# resume event configuration for serial mouse users by
178d50a71bdSMitsuru IWASAKI# reinitializing a moused(8) connected to a serial port.
179d50a71bdSMitsuru IWASAKI#
180d50a71bdSMitsuru IWASAKI#apm_event NORMRESUME {
181d50a71bdSMitsuru IWASAKI#	exec "kill -HUP `cat /var/run/moused.pid`";
182d50a71bdSMitsuru IWASAKI#}
183d50a71bdSMitsuru IWASAKI
184d50a71bdSMitsuru IWASAKI# suspend request event configuration for ATA HDD users:
185d50a71bdSMitsuru IWASAKI# execute standby instead of suspend.
186d50a71bdSMitsuru IWASAKI#
187d50a71bdSMitsuru IWASAKI#apm_event SUSPENDREQ {
188d50a71bdSMitsuru IWASAKI#	reject;
189d50a71bdSMitsuru IWASAKI#	exec "sync && sync && sync";
190d50a71bdSMitsuru IWASAKI#	exec "sleep 1";
191d50a71bdSMitsuru IWASAKI#	exec "apm -Z";
192d50a71bdSMitsuru IWASAKI#}
193d50a71bdSMitsuru IWASAKI
194d50a71bdSMitsuru IWASAKI
195d50a71bdSMitsuru IWASAKI6. Call for developers
196d50a71bdSMitsuru IWASAKI======================
197d50a71bdSMitsuru IWASAKI
198d50a71bdSMitsuru IWASAKIThe initial version of apmd(8) was implemented primarily to test the
199d50a71bdSMitsuru IWASAKIkernel support code and was ALPHA quality.  Based on that code, the
200d50a71bdSMitsuru IWASAKIcurrent version was developed by KOIE Hidetaka <hide@koie.org>.
201d50a71bdSMitsuru IWASAKIHowever, we're still looking around for interesting new features and
202d50a71bdSMitsuru IWASAKIideas, so if you have any thoughts, please let us know.
203d50a71bdSMitsuru IWASAKIDocumentation is also sparse, and the manpage have just written.
204d50a71bdSMitsuru IWASAKIIf you wish to collaborate on this work, please e-mail me:
205d50a71bdSMitsuru IWASAKIiwasaki@freebsd.org.
206d50a71bdSMitsuru IWASAKI
207d50a71bdSMitsuru IWASAKI
208d50a71bdSMitsuru IWASAKIJune 1, 1999
209d50a71bdSMitsuru IWASAKICreated by: iwasaki@FreeBSD.org
210d50a71bdSMitsuru IWASAKIEdited by: jkh@FreeBSD.org
211d50a71bdSMitsuru IWASAKI           nick@foobar.org
212