2011-01-26 09:35:08 +00:00
|
|
|
BELKINUNV(8)
|
|
|
|
============
|
|
|
|
|
|
|
|
NAME
|
|
|
|
----
|
|
|
|
|
|
|
|
belkinunv - Driver for Belkin "Universal UPS" and compatible
|
|
|
|
|
|
|
|
NOTE
|
|
|
|
----
|
2022-06-29 10:37:36 +00:00
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
This man page only documents the hardware-specific features of the
|
2022-06-29 10:37:36 +00:00
|
|
|
belkin driver. For information about the core driver, see
|
2011-01-26 09:35:08 +00:00
|
|
|
linkman:nutupsdrv[8].
|
|
|
|
|
2022-06-29 10:37:36 +00:00
|
|
|
This driver only supports serial connections. If your UPS has a USB port,
|
|
|
|
please consult the Hardware Compatibility List (HCL) to see which of the USB
|
|
|
|
drivers you should use.
|
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
SUPPORTED HARDWARE
|
|
|
|
------------------
|
2022-06-29 10:37:36 +00:00
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
The belkinunv driver is known to work with the Belkin Universal UPS
|
|
|
|
models F6C800-UNV and F6C120-UNV, and is expected to work with other
|
|
|
|
Belkin Universal UPS models. The driver only supports serial
|
|
|
|
communication, not USB.
|
|
|
|
|
|
|
|
The Trust UPS and older Belkin units are not supported by this driver,
|
|
|
|
and neither are the Belkin Home Office models (F6H500-SER and so
|
|
|
|
forth). However, some Belkin models, such as the Regulator Pro, are
|
|
|
|
supported by the linkman:belkin[8] driver, and the Home Office models
|
|
|
|
are supported using the linkman:genericups[8] driver with
|
|
|
|
`upstype=7`.
|
|
|
|
|
|
|
|
SOFT SHUTDOWN WORKAROUND
|
|
|
|
------------------------
|
2022-06-29 10:37:36 +00:00
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
One problem with the Belkin Universal UPS is that it cannot enter a
|
|
|
|
soft shutdown (shut down the load until AC power returns) unless the
|
|
|
|
batteries are completely depleted. Thus, one cannot just shut off the
|
|
|
|
UPS after operating system shutdown; it will not come back on when the
|
|
|
|
power comes back on. Therefore, the belkinunv driver should never be
|
|
|
|
used with the *-k* option. Instead, the *-x wait* option is
|
|
|
|
provided as a workaround.
|
|
|
|
|
|
|
|
When called with the *-x wait* option, *belkinunv* behaves as
|
|
|
|
a standalone program (i.e., it does not fork into the background). It
|
|
|
|
performs one simple task: it connects to the UPS, waits for AC power
|
|
|
|
to return, and then exits with status 0.
|
|
|
|
|
|
|
|
This is meant to be used in a shutdown script as follows: during a
|
|
|
|
shutdown, after all filesystems have been remounted read-only, and
|
|
|
|
just before the system would normally be halted: check /etc/killpower
|
|
|
|
(or similar) to see if this shutdown was caused by linkman:upsmon[8],
|
|
|
|
and if yes, call *belkinunv -x wait*. If AC power comes back on,
|
|
|
|
*belkinunv* exits, and things should be arranged so that the
|
|
|
|
system reboots in this case. If AC power does not come back on, the
|
|
|
|
UPS will eventually run out of batteries, kill the computer's power
|
|
|
|
supply, and go into soft shutdown mode, which means everything will
|
|
|
|
reboot properly when the power returns. In either case, a deadlock is
|
2022-06-29 10:37:36 +00:00
|
|
|
avoided.
|
2011-01-26 09:35:08 +00:00
|
|
|
|
|
|
|
In addition, if an optional integer argument is given to the *-x wait*
|
|
|
|
option, this causes *belkinunv* to wait not only for AC power to be present,
|
|
|
|
but also for the battery charge to reach the given level. I use this as part of
|
|
|
|
my startup scripts, to ensure that the batteries are sufficiently charged
|
|
|
|
before the computer continues booting. This should be put very early in the
|
|
|
|
startup script, before any filesystems are mounted read/write, and before any
|
|
|
|
filesystem checks are performed.
|
|
|
|
|
|
|
|
Several other *-x* options are provided to fine-tune this
|
|
|
|
behavior. See the <<_options,options>> below for detailed descriptions. See the
|
|
|
|
<<_examples,examples>>
|
|
|
|
below for examples of how to use *belkinunv* in shutdown and
|
|
|
|
startup scripts.
|
|
|
|
|
|
|
|
OPTIONS
|
|
|
|
-------
|
2022-06-29 10:37:36 +00:00
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
See also linkman:nutupsdrv[8] for generic options. Never use the
|
|
|
|
*-k* option with this driver; it does not work properly.
|
|
|
|
|
|
|
|
*-x wait*[='level']::
|
|
|
|
When this option is used, *belkinunv* does not fork into the
|
|
|
|
background, but behaves as a standalone program. It connects to the UPS and
|
|
|
|
waits until AC power is present. If 'level' is specified, it also
|
|
|
|
waits until the battery charge reaches at least the given level in
|
|
|
|
percent. Then, and only then, *belkinunv* exits. In addition,
|
|
|
|
while *belkinunv* runs in this mode, it displays a status line
|
|
|
|
with information on the UPS status and battery level. This is intended
|
|
|
|
for use in the computer's shutdown and startup scripts, as described
|
|
|
|
under <<_soft_shutdown_workaround,Soft Shutdown Workaround>> above.
|
|
|
|
|
|
|
|
*-x nohang*::
|
|
|
|
This option only has an effect when used in conjunction with the *-x wait*
|
|
|
|
option. It causes *belkinunv* to exit if a connection with
|
|
|
|
the UPS cannot be established or is lost, instead of retrying forever,
|
|
|
|
which is the default behavior. The *-x nohang* option should be
|
|
|
|
used in a startup
|
|
|
|
script, to ensure the computer remains bootable even if the UPS has
|
|
|
|
been disconnected during the power failure (for instance, you attached
|
|
|
|
your computer to a generator, carried it to a neighbor's house, or
|
2022-06-29 10:37:36 +00:00
|
|
|
whatever).
|
2011-01-26 09:35:08 +00:00
|
|
|
|
|
|
|
*-x flash*::
|
|
|
|
This option only has an effect when used in conjunction with the *-x wait*
|
|
|
|
option. It causes the UPS load to be shut off for a short time
|
|
|
|
("flashed") just after the AC power has returned and the requested
|
|
|
|
battery level (if any) has been attained. This is useful if slaves are
|
|
|
|
attached to this UPS; the flash will cause all of them to reboot. Note
|
|
|
|
that, due to the design of the Belkin UPS hardware, the load shutdown lasts
|
|
|
|
ca. 1--2 minutes; a shorter flash cannot be performed reliably. Also,
|
|
|
|
the computers will reboot at the scheduled time, on battery power if
|
|
|
|
necessary, even if AC power fails again in the meantime. This should
|
|
|
|
not be a problem, as your startup scripts can catch this situation.
|
|
|
|
|
|
|
|
*-x silent*::
|
|
|
|
This option only has an effect when used in conjunction with the *-x wait*
|
|
|
|
option. It suppresses the status line which *belkinunv*
|
|
|
|
would normally print.
|
|
|
|
|
|
|
|
*-x dumbterm*::
|
|
|
|
This option only has an effect when used in conjunction with the *-x wait*
|
|
|
|
option. It changes the way in which *belkinunv* prints its
|
|
|
|
status line. Normally, terminal control sequences are used to
|
|
|
|
overwrite the same line with new status information, each time the
|
|
|
|
status is updated. This may not work on all terminals. If the *-x dumbterm*
|
|
|
|
option is given, each status update is written on a new
|
|
|
|
line.
|
|
|
|
|
|
|
|
VARIABLES
|
|
|
|
---------
|
2022-06-29 10:37:36 +00:00
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
*battery.charge*::
|
|
|
|
|
|
|
|
*battery.runtime*::
|
|
|
|
not supported by all hardware.
|
|
|
|
|
|
|
|
*battery.voltage*::
|
|
|
|
|
|
|
|
*battery.voltage.nominal*::
|
|
|
|
|
|
|
|
*input.frequency*::
|
|
|
|
|
|
|
|
*input.frequency.nominal*::
|
|
|
|
e.g. 60 for 60Hz
|
|
|
|
|
|
|
|
*input.sensitivity*::
|
|
|
|
writable: normal/medium/low
|
|
|
|
|
|
|
|
*input.transfer.high*::
|
|
|
|
writable: high transfer voltage point in V
|
|
|
|
|
|
|
|
*input.transfer.low*::
|
|
|
|
writable: low transfer voltage point in V
|
|
|
|
|
|
|
|
*input.voltage*::
|
|
|
|
|
|
|
|
*input.voltage.maximum*::
|
|
|
|
|
|
|
|
*input.voltage.minimum*::
|
|
|
|
|
|
|
|
*input.voltage.nominal*::
|
|
|
|
|
|
|
|
*output.frequency*::
|
|
|
|
|
|
|
|
*output.voltage*::
|
|
|
|
|
|
|
|
*ups.beeper.status*::
|
|
|
|
writable. Values: enabled/disabled/muted. This variable controls the
|
|
|
|
state of the panel beeper. Enabled means sound when the alarm is
|
|
|
|
present, disabled means never sound, and muted means the sound is
|
|
|
|
temporarily disabled until the alarm would normally stop sounding. In
|
|
|
|
the muted state, the beeper is automatically turned back on at the
|
|
|
|
next event (AC failure, battery test, etc). Also, the beeper can't be
|
|
|
|
turned off during a critical event (low battery). Note that not all
|
|
|
|
UPS models support the "disabled" state.
|
|
|
|
|
|
|
|
*ups.firmware*::
|
|
|
|
|
|
|
|
*ups.load*::
|
|
|
|
|
|
|
|
*ups.model*::
|
|
|
|
|
|
|
|
*ups.power.nominal*::
|
|
|
|
e.g. 800 for an 800VA system
|
|
|
|
|
|
|
|
*ups.status*::
|
|
|
|
a list of flags; see the <<_status_flags,status flags>> below.
|
|
|
|
|
|
|
|
*ups.temperature*::
|
|
|
|
not supported by all hardware.
|
|
|
|
|
|
|
|
*ups.test.result*::
|
|
|
|
|
|
|
|
*ups.delay.restart*::
|
|
|
|
time to restart (read only)
|
|
|
|
|
|
|
|
*ups.delay.shutdown*::
|
|
|
|
time to shutdown (read only). This is always a multiple of 60 seconds.
|
|
|
|
|
|
|
|
*ups.type*::
|
|
|
|
ONLINE/OFFLINE/LINEINT. This describes the basic layout of this UPS
|
|
|
|
(for GUI clients which want to draw an animated picture of power
|
|
|
|
flow). An offline UPS has a direct connection from AC input to AC
|
|
|
|
output, and also a connection from AC input to the battery, and from
|
|
|
|
the battery to AC output. An online UPS lacks the direct connection
|
|
|
|
from AC input to AC output, whereas a line interactive UPS lacks the
|
|
|
|
connection from AC input to the battery.
|
|
|
|
|
|
|
|
|
|
|
|
COMMANDS
|
|
|
|
--------
|
|
|
|
|
|
|
|
*beeper.enable, beeper.disable, beeper.mute*::
|
|
|
|
Enable, disable or mute the panel beeper. Note that if the beeper is
|
|
|
|
muted, it is automatically turned back on at the next event (AC failure,
|
|
|
|
battery test, etc). Also, the beeper can't be turned muted during a
|
|
|
|
critical event (low battery).
|
|
|
|
|
|
|
|
*reset.input.minmax*::
|
|
|
|
Reset the variables *input.voltage.minimum* and
|
|
|
|
*input.voltage.maximum*.
|
|
|
|
|
|
|
|
*shutdown.reboot*::
|
|
|
|
Shut down load immediately for about 1--2 minutes.
|
|
|
|
|
|
|
|
*shutdown.reboot.graceful*::
|
|
|
|
After 40 second delay, shut down load for about 1--2 minutes.
|
|
|
|
|
|
|
|
*shutdown.stayoff*::
|
|
|
|
Shut down load immediately and stay off. The only way it can be turned
|
|
|
|
back on is by manually pressing the front panel button.
|
|
|
|
|
|
|
|
*test.battery.start, test.battery.stop*::
|
|
|
|
Start/stop 10 second battery test.
|
|
|
|
|
|
|
|
*test.failure.start, test.failure.stop*::
|
|
|
|
Start/stop "deep" battery test.
|
|
|
|
|
|
|
|
|
|
|
|
STATUS FLAGS
|
|
|
|
------------
|
|
|
|
|
|
|
|
*OB*::
|
|
|
|
load is on battery, including during tests
|
|
|
|
|
|
|
|
*OFF*::
|
|
|
|
load is off
|
|
|
|
|
|
|
|
*OL*::
|
|
|
|
load is online
|
|
|
|
|
|
|
|
*ACFAIL*::
|
|
|
|
AC failure. Note that this refers to the AC input, and thus it is not
|
|
|
|
the same as "OB". An AC failure can occur at any time, for instance,
|
2022-06-29 10:37:36 +00:00
|
|
|
during a battery test, or when the UPS load is off.
|
2011-01-26 09:35:08 +00:00
|
|
|
|
|
|
|
*OVER*::
|
|
|
|
overload
|
|
|
|
|
|
|
|
*OVERHEAT*::
|
|
|
|
overheat
|
|
|
|
|
|
|
|
*COMMFAULT*::
|
|
|
|
UPS fault
|
|
|
|
|
|
|
|
*LB*::
|
|
|
|
low battery
|
|
|
|
|
|
|
|
*CHRG*::
|
|
|
|
charging
|
|
|
|
|
|
|
|
*DEPLETED*::
|
|
|
|
the battery is depleted. When the UPS raises this flag, it
|
2022-06-29 10:37:36 +00:00
|
|
|
simultaneously switches off the load.
|
2011-01-26 09:35:08 +00:00
|
|
|
|
|
|
|
*RB*::
|
|
|
|
replace battery
|
|
|
|
|
|
|
|
EXAMPLES
|
|
|
|
--------
|
|
|
|
|
|
|
|
Here is an example for how *belkinunv* should be used in a
|
|
|
|
computer's shutdown script. These commands should go in the very last
|
|
|
|
part of the shutdown script, after all file systems have been mounted
|
|
|
|
read-only, and just before the computer halts. Note that
|
|
|
|
*belkinunv* must be installed in a directory which is still
|
|
|
|
readable at that point.
|
|
|
|
|
|
|
|
|
|
|
|
# NEAR END OF SHUTDOWN SCRIPT:
|
|
|
|
# if shutdown was caused by UPS, perform Belkin UPS workaround.
|
|
|
|
if [ -f /etc/killpower ] ; then
|
|
|
|
echo "Waiting for AC power, or for UPS batteries to run out..."
|
|
|
|
/usr/bin/belkinunv -x wait /dev/ttyS1
|
|
|
|
|
|
|
|
# we get here if the power came back on. Reboot.
|
|
|
|
echo "Power is back. Rebooting..."
|
|
|
|
reboot
|
|
|
|
fi
|
|
|
|
|
|
|
|
And here is an example of how to use *belkinunv* in the startup
|
|
|
|
script. These commands should go near the beginning of the startup
|
|
|
|
script, before any file systems are mounted read/write, and before any
|
|
|
|
file system integrity checks are done.
|
|
|
|
|
|
|
|
|
|
|
|
# NEAR BEGINNING OF STARTUP SCRIPT:
|
|
|
|
# if we are recovering from a power failure, wait for the UPS to
|
|
|
|
# charge to a comfortable level before writing anything to disk
|
|
|
|
if [ -f /etc/killpower ] ; then
|
|
|
|
echo "Waiting for UPS battery charge to reach 60%..."
|
|
|
|
/usr/bin/belkinunv -x wait=60 -x nohang /dev/ttyS1
|
|
|
|
fi
|
|
|
|
|
|
|
|
EXIT STATUS
|
|
|
|
-----------
|
|
|
|
|
|
|
|
When used normally, *belkinunv* forks into the background and its
|
|
|
|
diagnostics are the same as for all NUT drivers, see
|
|
|
|
linkman:nutupsdrv[8].
|
|
|
|
|
|
|
|
When used with the *-x wait* option, the exit status is normally
|
|
|
|
*0*. If the *-x nohang* option has also been specified, an exit
|
|
|
|
status of *1* indicates that communication with the UPS was lost. If the
|
|
|
|
*-x flash* option has been specified, an exit status of *2*
|
|
|
|
indicates that the timed shutdown has failed.
|
|
|
|
|
|
|
|
EXTRA ARGUMENTS
|
|
|
|
---------------
|
|
|
|
|
|
|
|
This driver does not support any extra settings in linkman:ups.conf[5].
|
|
|
|
|
2022-06-29 10:37:36 +00:00
|
|
|
AUTHOR
|
|
|
|
------
|
|
|
|
|
|
|
|
Peter Selinger <selinger@users.sourceforge.net>
|
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
SEE ALSO
|
|
|
|
--------
|
|
|
|
|
|
|
|
The core driver:
|
|
|
|
~~~~~~~~~~~~~~~~
|
2022-06-29 10:37:36 +00:00
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
linkman:nutupsdrv[8]
|
|
|
|
|
2022-06-29 10:37:36 +00:00
|
|
|
Other Belkin drivers:
|
|
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
|
|
|
linkman:belkinunv[8],
|
|
|
|
linkman:blazer_ser[8],
|
|
|
|
linkman:blazer_usb[8],
|
|
|
|
linkman:usbhid-ups[8]
|
|
|
|
|
2011-01-26 09:35:08 +00:00
|
|
|
Internet resources:
|
|
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
|
2022-06-29 10:37:36 +00:00
|
|
|
* The NUT (Network UPS Tools) home page: http://www.networkupstools.org/
|
|
|
|
* The documentation for the protocol used by this UPS:
|
|
|
|
link:http://www.mscs.dal.ca/~selinger/ups/belkin-universal-ups.html[belkin-universal-ups.html]
|
|
|
|
(link:https://networkupstools.org/protocols/belkin-universal.html[replica
|
|
|
|
on NUT site])
|