Using an APC UPS with PBX in a Flash

Mark Berry March 30, 2009

Today a client had a power outage. Although the PBX in a Flash (PiaF) server was on an Uninterruptible Power Supply (UPS), the outage lasted long enough that the PiaF server crashed. Twice. Time to brave the waters of installing UPS monitoring software under Linux.

The version of PiaF that I’m using is based on CentOS 5.2, which is derived from Red Hat Enterprise Linux 5.2. APC PowerChute Business Edition supports Linux if you are using their higher-end SmartUPS line, but there is no support for BackUPS-type UPSs.

Google and open source to the rescue! It didn’t take long to find the APC UPS Daemon, also called apcupsd. What did take a while was figuring out which version I needed and how to get it installed and working. Fortunately there is an extensive and well-written manual. Here is a summary of the steps I took to get it running:

  1. Although I won’t be using SNMP, the pre-built “rpm” binary for apcupd requires that SNMP be installed. Log on to the PiaF box (I use Putty) and run this command to install it:
    yum install net-snmp
  2. Download the appropriate installation binary from SourceForge. I decided that I needed apcupsd-3.14.5-1.el5.i386.rpm, the version for x86 processors and Enterprise Linux 5. I used WinSCP to copy that to a new folder on my PiaF machine called /usr/src/apcupsd.
  3. On the PiaF box, run the following commands to install the apcupsd software:
    cd /usr/src/apcupsd
    rpm -ivh apcupsd-3.14.5-1.el5.i386.rpm
  4. Now edit the file /etc/apcupsd/apcupsd.conf and test your configuration. There are some instructions in the conf file itself, but you’ll probably want to refer to the manual, starting with the “After Installation” section. My local PBX is actually connected as a “dumb” slave to a SmartUPS, a fairly unusual arrangement. For that, I found the following configuration options seem to work (only showing the non-default entries):
    UPSCABLE 940-0020B # Cable number from the end of the gray, dumb signaling cable
    UPSTYPE dumb
    DEVICE /dev/ttyS1 # ttyS0 = COM1; ttyS1 = COM2
    TIMEOUT 900 # Needed for dumb signaling. I allow a fixed 15 minutes before shutdown.
    UPSCLASS shareslave # Because we are connected on the “dumb” side of a ShareUPS card.
    UPSMODE disable # The default. I think this would only  be “share” if we were a “sharemaster”

While testing this, I saw that apcupsd tried to shut down my UPS, which would have been bad since my Small Business Server is connected to the same UPS. The dumb signaling apparently prevented this level of control, so no UPS shutdown occurred, but to be safe, I followed the advice in the manual and commented out the lines added by apcupsd to /etc/rc.d/init.d/halt. They’re easy to spot–they all end in # ***apcupsd***.

Update September 16, 2011 Added to another PiaF box today. Current version is apcupsd-3.14.8-1.el5.i386.rpm. This time I’m using a USB cable on a BackUPS unit, so I was able to keep most of defaults in the apcupsd.conf file. The manual has helpful instructions for post-installation testing. Useful status/testing commands:

apcaccess – show current UPS status, battery percent remaining, etc.
service apcupsd stop – stop the daemon, required before apctest
apctest – menu of commands e.g. self-test, alarm mode, etc.
service apcupsd start – (re)start the daemon


Leave a Reply





Notify me of followup comments via e-mail. You can also subscribe without commenting.