Linux and the Belkin Universal UPS

1. Introduction

Please note that the information on this web page applies to the Belkin F6C*-UNV models ("Universal UPS"), and not to the F6H*-SER models ("Home Office"). The latter models are cheaper, but they use a different communication protocol.

I recently bought a Belkin "Universal UPS" (model number F6C800-UNV). Like millions of other people, I decided to buy a UPS ("Uninterruptible Power Supply") after the major power outages which occurred in the U.S. and Ontario in August 2003. I had read that the Belkin UPS supported Linux, and it was widely available in stores near me (Radio Shack, Target, Office Depot, etc.). The price was not bad, and so I decided to try it.

On the surface, Belkin seems Linux-friendly, because they provide a Linux version of their "Bulldog Plus" UPS management software. This software is not included on the CD Rom which ships with the UPS, but one can download it from Belkin's website.

But unfortunately, the Bulldog Plus software is not as useful as it should be. It has many bugs (see Bugs in Bulldog), and it cannot be configured to allow an unsupervised recovery (the user must press the front panel button to restart the UPS after a power failure).

Since the specifications of the protocol were not available, I decided to do some detective work and to decipher the protocol myself. The results are described on a separate web page, the Protocol Description Page. The information reported there is necessarily incomplete, but it seems that I have covered the most important aspects of the protocol.

Unfortunately, there is one serious problem with the "Universal UPS" firmware: there is no command which causes the UPS to go into "soft shutdown" mode, which means, to shut off the load until AC power returns. This makes unsupervised recovery from power failures tricky and awkward (see Soft Shutdown Workaround on the protocol description page for a suggested solution).

On balance, the Belkin UPS works fine, but the lack of a "soft shutdown" command is annoying. If you are thinking about buying a UPS, I think currently APC is a better choice than Belkin at approximately the same price (see e.g. Linux and the APC Back-UPS ES). Maybe Belkin will come up with an improved version of their firmware in the future.

2. Protocol description

The following link points to my unofficial description of the serial communication protocol of the Belkin Universal UPS.

3. The NUT Belkin Universal UPS driver

I have written a driver for the Belkin Universal UPS for the popular NUT (Network UPS Tools) package. The driver has been integrated into NUT since release 1.5.9, and it is named "belkinunv". To get the driver, just download the newest NUT release from the above-mentioned web page.

NOTE: The belkinunv NUT driver requires a modification to the system's startup/shutdown scripts to enable an unsupervised shutdown/recovery. The necessary changes are described in the section Soft Shutdown Workaround on the protocol description page.

NOTE FreeBSD Users: Ryan Winland has reported that the "standalone" mode of the "belkinunv" NUT driver does not work properly in FreeBSD. The problem seems to be that FreeBSD uses a non-portable mechanism for locking its serial ports. Ryan sent me a modified version belkinunv.c that is supposed to work in FreeBSD. I have not personally tested this, but I am posting it here in the hope that it might be useful to others.

4. The Belkin "Bulldog Plus" driver

This section is for users who want to use the "Belkin Bulldog Plus" software. I don't recommend it, because the NUT driver is better. But anyway, if you must use Bulldog, read on.

News. In November 2003, Belkin has released version 3.01.16 of this software (see the Bulldog Download Site). Some bugs have been fixed, while many others remain. One useful new feature of version 3.01.16 is that they provide a new "configure" command-line program which allows you to configure shutdowns etc, rather than using the X-windows "monitor" program. This is useful for systems that don't have X-Windows installed.

Bugs in Bulldog 3.01.16

Bugs in Bulldog 3.01.12 (These have been fixed in 3.01.16).

Improved System V-type startup scripts (provided by Dean K. Gibson).

For those Linux users who use RedHat or a similar System V-type daemon start/stop mechanism, Dean Gibson has created a working "ups-belkin" script that can be copied to /etc/init.d and then activated via "chkconfig --add ups-belkin". Note that the script runs the daemon under the username of "ups" rather than "root" (helpful for security reasons). This requires that the "/usr/local/bulldog/Command.Shutdown" file be changed to:

  /usr/bin/sudo   /sbin/shutdown -h now
And that /etc/sudoers include a line like the following, in order for the non-root "ups" user to do a shutdown.
  ups     ALL = NOPASSWD: /sbin/shutdown
One should also remove Belkin's own startup script, by removing the symbolic links /etc/rc.d/rc*.d/S99bulldog.

5. Some useful utilities

This section contains some programs for analyzing or interacting with the Belkin Universal UPS.

Back to Peter Selinger's UPS page.
Back to Peter Selinger's Homepage: [home]
Peter Selinger / Department of Mathematics and Statistics / Dalhousie University
selinger@mathstat.dal.ca / PGP key