APC UPS

From ArchWiki
Revision as of 07:05, 8 August 2009 by Brucebertrand (talk | contribs) (→‎Configure APC UPS: - fixed typo)
Jump to navigation Jump to search

APC UPS Daemon Installation

This document describes how to install the APC UPS daemon. The main advantage of using an APC UPS (for me) is that it can communicate with your Linux box through either a RS-232 or USB serial connection. In the event of a prolonged power outage, should the APC UPS lose most of its battery capacity, it can tell the Linux box to perform a safe shutdown.

Install the Package

Make sure that you have uncommented the [community] repo in your Template:Filename file.

Install by using:

# pacman -Sy apcupsd

Configure APC UPS

The main configuration file for the APC UPS daemon can be found here: Template:Filename

In the following example, the lines of text are changed to support a USB style cable:

Before:

UPSCABLE smart

UPSTYPE smartups

DEVICE /dev/ttyS0

After:

UPSCABLE usb

UPSTYPE usb

DEVICE /dev/usb/hiddev[[0-15]]

Test

First, start the daemon:

# /etc/rc.d/apcupsd start

Next, wait about a minute and confirm the daemon is running and properly monitoring the battery:

# apcaccess status
APC      : 001,033,0819
DATE     : Sat Mar 05 SOMETIME 2005
HOSTNAME : somehostname
RELEASE  : 3.10.16
VERSION  : 3.10.16 (04 November 2004) unknown
UPSNAME  : somehostname
CABLE    : USB Cable
MODEL    : Back-UPS ES 725
UPSMODE  : Stand Alone
STARTTIME: Sat Mar SOMETIME 2005
STATUS   : ONLINE
LINEV    : 119.0 Volts
LOADPCT  :  23.0 Percent Load Capacity
BCHARGE  : 100.0 Percent
TIMELEFT :  30.5 Minutes
MBATTCHG : 5 Percent
MINTIMEL : 3 Minutes
MAXTIME  : 0 Seconds
LOTRANS  : 088.0 Volts
HITRANS  : 138.0 Volts
ALARMDEL : Always
BATTV    : 13.5 Volts
NUMXFERS : 0
TONBATT  : 0 seconds
CUMONBATT: 0 seconds
XOFFBATT : N/A
STATFLAG : 0x02000008 Status Flag
MANDATE  : 2002-12-02
SERIALNO : QB0249360043
BATTDATE : 2000-00-00
NOMBATTV :  12.0
FIRMWARE : 02.n2.D USB FW:n2
APCMODEL : Back-UPS ES 725
END APC  : Sat SOMETIME 2005

To fully test your setup:

  1. Change Template:Codeline form Template:Codeline to Template:Codeline in the Template:Filename file
  2. Remove wall power from the UPS
  3. Observe that your Linux box powers down, in short order
  4. Plug the UPS back into the wall
  5. Power on your Linux box
  6. Change Template:Codeline from Template:Codeline back to Template:Codeline in the Template:Filename file

Congratulations!

Now all that's left to do is add the "apcupsd" daemon to the Template:Codeline list in Template:Filename.

Hibernating instead of shutting down

You can make your system hibernate instead of shutting down. First, make sure the system hibernates cleanly. To set up hibernation, look here.

Create the hibernate script

Create this in Template:Filename as root:

#!/bin/bash
# Hibernate the system - designed to be called via symlink from /etc/apcupsd
# directory in case of apcupsd initiating a shutdown/reboot.  Can also be used
# interactively or from any script to cause a hibernate.

# Do the hibernate
/usr/sbin/pm-hibernate
# At this point system should be hibernated - when it comes back, we resume this script here

# On resume, tell controlling script (/etc/apcupsd/apccontrol) NOT to continue with default action (i.e. shutdown).
exit 99

Make it executable by running

$ sudo chmod +x /usr/local/bin/hibernate

Link the hibernate script for apcupsd to use it

Create symbolic links from the /etc/apcupsd directory to the script – the result is the apcupd's apccontrol script, in this directory, will call the hibernate script instead of doing the default shutdown action for these operations.

$ cd /etc/apcupsd
$ sudo ln -s /usr/local/bin/hibernate doreboot
$ sudo ln -s /usr/local/bin/hibernate doshutdown
$ sudo ln -s /usr/local/bin/hibernate emergency
$ sudo ln -s /usr/local/bin/hibernate remotedown
$ sudo ln -s /usr/local/bin/hibernate restartme

Now you can test your setup.

External Resources