I recently installed and configured an APC Back-UPS RS 800VA, which is an UPS aimed to be a high performance battery backup and protection for business computers. As i run some machines at home (servers and workstations), this kind of protection became more than necessary.
The main point is to properly install and configure apcupsd. Using the
FreeBSD’s ports collection and a recent FreeBSD RELENG_6 system, all
will works out of box.
So, after plug in the USB cable for the very first time, you can see
this in your /var/log/messages file:
ugen0: American Power Conversion Back-UPS BR 800 FW:9.o2 .I USB FW:o2, rev 1.10/1.06, addr 2
Good. Just configure apcupsd to learn it about UPSCABLE and
UPSTYPE value:
# diff -u /usr/local/etc/apcupsd/apcupsd.conf.sample /usr/local/etc/apcupsd/apcupsd.conf
--- /usr/local/etc/apcupsd/apcupsd.conf.sample Thu Jun 29 20:42:09 2006
+++ /usr/local/etc/apcupsd/apcupsd.conf Tue Jul 4 21:58:32 2006
@@ -26,7 +26,8 @@
# 940-1524C, 940-0024G, 940-0095A, 940-0095B,
# 940-0095C, M-04-02-2000
#
-UPSCABLE smart
+#UPSCABLE smart
+UPSCABLE usb
# To get apcupsd to work, in addition to defining the cable
# above, you must also define a UPSTYPE, which corresponds to
@@ -63,8 +64,9 @@
# dumb /dev/tty** Old serial character device for use
# with simple-signaling UPSes.
#
-UPSTYPE apcsmart
-DEVICE /dev/usv
+#UPSTYPE apcsmart
+UPSTYPE usb
+#DEVICE /dev/usv
# LOCKFILE <path to lockfile>
Then, launch the daemon and get status information on the current UPS system state:
# grep apcupsd /etc/rc.conf
apcupsd_enable="YES"
# /usr/local/etc/rc.d/apcupsd start
# apcaccess status
APC : 001,040,1003
DATE : Fri Jul 07 20:48:14 CEST 2006
HOSTNAME : bento.thilelli.net
RELEASE : 3.12.3
VERSION : 3.12.3 (26 April 2006) freebsd
UPSNAME : bento.thilelli.net
CABLE : USB Cable
MODEL : Back-UPS BR 800
UPSMODE : Stand Alone
STARTTIME: Wed Jul 05 07:19:04 CEST 2006
STATUS : ONLINE
LINEV : 228.0 Volts
LOADPCT : 39.0 Percent Load Capacity
BCHARGE : 100.0 Percent
TIMELEFT : 20.6 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME : 0 Seconds
OUTPUTV : 230.0 Volts
DWAKE : 000 Seconds
DSHUTD : 000 Seconds
LOTRANS : 194.0 Volts
HITRANS : 264.0 Volts
RETPCT : 000.0 Percent
ITEMP : 29.2 C Internal
ALARMDEL : Always
BATTV : 27.4 Volts
LINEFREQ : 50.0 Hz
LASTXFER : Low line voltage
NUMXFERS : 0
TONBATT : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
SELFTEST : NO
STATFLAG : 0x07000008 Status Flag
SERIALNO : JB0604031535
BATTDATE : 2001-09-25
NOMBATTV : 24.0
FIRMWARE : .o2 .I USB FW:o2
APCMODEL : Back-UPS BR 800
END APC : Fri Jul 07 20:48:15 CEST 2006
It is always a good thing to test the behavior of your UPS equipment and
the correct interaction with your server, so follow carefully the well
documentation provided on that
subject by the apcupsd team,
particularly the Simulated Power Fail Test, System Shutdown Test and
Full Power Down Test suggestions.
Here are some logs obtained after encountering some real power problems:
# cat /var/log/apcupsd.events
[...] /* During a complete managed reboot after loosing power supply. */
Tue Jul 04 21:37:44 CEST 2006 Power failure.
Tue Jul 04 21:37:50 CEST 2006 Running on UPS batteries.
Tue Jul 04 21:38:21 CEST 2006 Reached run time limit on batteries.
Tue Jul 04 21:38:21 CEST 2006 Initiating system shutdown!
Tue Jul 04 21:38:21 CEST 2006 User logins prohibited
Tue Jul 04 21:38:21 CEST 2006 Attempting to kill the UPS power!
Tue Jul 04 21:38:31 CEST 2006 apcupsd exiting, signal 15
Tue Jul 04 21:38:31 CEST 2006 apcupsd shutdown succeeded
[...] /* The next day... what a bad night for power supply, but a very
good luck for all the servers! */
Tue Jul 04 23:57:58 CEST 2006 Power failure.
Tue Jul 04 23:58:01 CEST 2006 Power is back. UPS running on mains.
Wed Jul 05 00:16:07 CEST 2006 Power failure.
Wed Jul 05 00:16:09 CEST 2006 Power is back. UPS running on mains.
Wed Jul 05 00:18:58 CEST 2006 Power failure.
Wed Jul 05 00:19:01 CEST 2006 Power is back. UPS running on mains.
Wed Jul 05 00:27:10 CEST 2006 Power failure.
Wed Jul 05 00:27:13 CEST 2006 Power is back. UPS running on mains.
Wed Jul 05 02:45:08 CEST 2006 Power failure.
Wed Jul 05 02:45:11 CEST 2006 Power is back. UPS running on mains.
Wed Jul 05 03:29:29 CEST 2006 Power failure.
Wed Jul 05 03:29:32 CEST 2006 Power is back. UPS running on mains.
It may be worth mentioning that when the daemon encounter an event, an
email is sent to the root account. The subject says what it appended
(such as Power has returned or Power Failure !!!) and the body is
simply the ouput of the apcaccess program.
As a side note, the apctest sef-test program seems to fail with my
APC. Curiously, reading the result separately says… the opposite.
Which one to trust here, anyone?
# /usr/local/etc/rc.d/apcupsd stop
# apctest
2006-07-09 13:43:31 apctest 3.12.3 (26 April 2006) freebsd
Checking configuration ...
Attached to driver: usb
sharenet.type = DISABLE
cable.type = USB_CABLE
You are using a USB cable type, so I'm entering USB test mode
mode.type = USB_UPS
Setting up the port ...
Hello, this is the apcupsd Cable Test program.
This part of apctest is for testing USB UPSes.
Getting UPS capabilities...SUCCESS
Please select the function you want to perform.
1) Test kill UPS power
2) Perform self-test
3) Read last self-test result
4) Change battery date
5) View battery date
6) View manufacturing date
7) Set alarm behavior
8) Quit
Select function number: 2
This test instructs the UPS to perform a self-test
operation and reports the result when the test completes.
Clearing previous self test result...CLEARED
Initiating self test...INITIATED
Waiting for test to complete...TEST DID NOT COMPLETE
1) Test kill UPS power
2) Perform self-test
3) Read last self-test result
4) Change battery date
5) View battery date
6) View manufacturing date
7) Set alarm behavior
8) Quit
Select function number: 3
Result of last self test: PASSED
[...]
# /usr/local/etc/rc.d/apcupsd start
So, not too bad after all… at least, it seems.
For more information on that subject, go to the excellent Dan Langille’s FreeBSD Diary which has a very well documented entry on his settings.
