322 lines
11 KiB
Plaintext
322 lines
11 KiB
Plaintext
NOTE
|
|
----
|
|
This man page only documents the hardware-specific features of the
|
|
blazer driver. For information about the core driver, see
|
|
linkman:nutupsdrv[8].
|
|
|
|
|
|
SUPPORTED HARDWARE
|
|
------------------
|
|
|
|
The blazer driver is known to work with various UPSes from Blazer, Energy
|
|
Sistem, Fenton Technologies, General Electric, Mustek and many others.
|
|
The NUT compatibility table lists all the known supported models. Keep
|
|
in mind, however, that other models not listed there may also be supported,
|
|
but haven't been tested.
|
|
|
|
All devices with a serial interface (use the *blazer_ser* driver) and
|
|
many with a USB interface (use the *blazer_usb* driver) are supported.
|
|
|
|
|
|
EXTRA ARGUMENTS
|
|
---------------
|
|
|
|
You may need to override or provide defaults for some values, depending on
|
|
the make and model of your UPS. The following are the ones that most likely
|
|
will need changing (see linkman:ups.conf[5]):
|
|
|
|
*default.battery.voltage.high =* 'value'::
|
|
|
|
Maximum battery voltage that is reached after about 12 to 24 hours charging.
|
|
If you want the driver to report a guesstimated *battery.charge*, you need
|
|
to specify this (see <<_battery_charge,BATTERY CHARGE>>).
|
|
|
|
*default.battery.voltage.low =* 'value'::
|
|
|
|
Minimum battery voltage just before the UPS automatically shuts down.
|
|
If you want the driver to report a guesstimated *battery.charge*, you need
|
|
to specify this (see <<_battery_charge,BATTERY CHARGE>>).
|
|
|
|
*default.battery.voltage.nominal =* 'value'::
|
|
*override.battery.voltage.nominal =* 'value'::
|
|
|
|
Some devices show a wrong nominal battery voltage (or none at all), so you may
|
|
need to override or set a default value.
|
|
|
|
*override.battery.packs =* 'value'::
|
|
|
|
Some devices report a part of the total battery voltage. For instance, if
|
|
*battery.voltage.nominal* is 24 V, but it reports a *battery.voltage*
|
|
of around 2 V, the number of *battery.packs* to correct this reading would
|
|
be 12. The driver will attempt to detect this automatically, but if this fails
|
|
somehow, you may want to override this value.
|
|
|
|
*ondelay =* 'value'::
|
|
|
|
Time to wait before switching on the UPS (minutes). Note that a value below 3
|
|
minutes, may cause earlier firmware versions to not switch on automatically,
|
|
so it defaults to 3 minutes. The acceptable range is +0..9999+ minutes.
|
|
|
|
*offdelay =* 'value'::
|
|
|
|
Time to wait before shutting down the UPS (seconds). This value is truncated
|
|
to units of 6 seconds (less than 60 seconds) or 60 seconds (more than 60
|
|
seconds). Defaults to 30 seconds. The acceptable range is +12..600+ seconds.
|
|
|
|
*norating*::
|
|
|
|
Some UPSes will lock up if you attempt to read rating information from them.
|
|
Setting this flag will make the driver skip this step.
|
|
|
|
*novendor*::
|
|
|
|
Some UPSes will lock up if you attempt to read vendor information from them.
|
|
Setting this flag will make the driver skip this step.
|
|
|
|
*protocol =* 'string'::
|
|
|
|
Skip autodetection of the protocol to use and only use the one specified.
|
|
Supported values 'megatec', 'megatec/old', 'mustek' and 'zinto'.
|
|
|
|
*runtimecal =* 'value,value,value,value'::
|
|
|
|
Parameter used in the (optional) runtime estimation. This takes two runtimes
|
|
at different loads. Typically, this uses the runtime at full load and the
|
|
runtime at half load. For instance, if your UPS has a rated runtime of 240
|
|
seconds at full load and 720 seconds at half load, you would enter
|
|
+
|
|
runtimecal = 240,100,720,50
|
|
+
|
|
The first load should always be higher than the second. If you have values
|
|
available for loads other than 100 and 50 % respectively, you can use those
|
|
too, but keep them spaced apart as far as reasonably possible. Just don't
|
|
get too close to no load (prediction of runtime depends more on idle load for
|
|
the battery then).
|
|
|
|
*chargetime =* 'value'::
|
|
|
|
The time needed to fully recharge the battery after being fully discharged. If
|
|
not specified, the driver defaults to 43200 seconds (12 hours). Only used if
|
|
*runtimecal* is also specified.
|
|
|
|
*idleload =* 'value'::
|
|
|
|
Minimum battery load used by the driver to estimate the runtime. If not
|
|
specified, the driver defaults to 10%. Only used if *runtimecal* is also
|
|
specified.
|
|
|
|
|
|
ifndef::blazer_usb[]
|
|
SERIAL INTERFACE ONLY
|
|
~~~~~~~~~~~~~~~~~~~~~
|
|
|
|
*cablepower =* 'string'::
|
|
|
|
By default the driver will set DTR and clear RTS ('normal'). If you find that
|
|
your UPS isn't detected or the communication with the UPS is unreliable, you may
|
|
try if clear DTR and set RTS ('reverse'), set DTR and RTS ('both') or
|
|
clear DTR and RTS ('none') improves this situation.
|
|
endif::blazer_usb[]
|
|
|
|
|
|
ifdef::blazer_usb[]
|
|
USB INTERFACE ONLY
|
|
~~~~~~~~~~~~~~~~~~
|
|
|
|
*vendorid =* 'regex'::
|
|
*productid =* 'regex'::
|
|
*vendor =* 'regex'::
|
|
*product =* 'regex'::
|
|
*serial =* 'regex'::
|
|
|
|
Select a specific UPS, in case there is more than one connected via
|
|
USB. Each option specifies an extended regular expression (see
|
|
*regex(7)*) that must match the UPS's entire vendor/product/serial
|
|
string (minus any surrounding whitespace), or the whole 4-digit
|
|
hexadecimal code for vendorid and productid. Try *-DD* for
|
|
finding out the strings to match.
|
|
+
|
|
Examples:
|
|
|
|
- `-x vendor="Foo.Corporation.*"`
|
|
- `-x vendorid=051d*` (APC)
|
|
- `-x product=".*(Smart|Back)-?UPS.*"`
|
|
|
|
*bus =* 'regex'::
|
|
|
|
Select a UPS on a specific USB bus or group of busses. The argument is
|
|
a regular expression that must match the bus name where the UPS is
|
|
connected (e.g. bus="002", bus="00[2-3]").
|
|
|
|
*subdriver =* 'string'::
|
|
|
|
Select a serial-over-USB subdriver to use. You have a choice between *phoenix*,
|
|
*ippon*, *cypress*, and *krauler*. When using this option, it is mandatory to also
|
|
specify the *vendorid* and *productid*.
|
|
|
|
*langid_fix =* 'value'::
|
|
|
|
Apply the language ID workaround to the krauler subdriver. This is mandatory
|
|
for some devices to work (LDLC, Dynamix and others). You must to provide
|
|
*value* (0x409 or 0x4095), according to your device entry in NUT hardware
|
|
compatibility list (HCL).
|
|
endif::blazer_usb[]
|
|
|
|
|
|
UPS COMMANDS
|
|
------------
|
|
|
|
This driver supports some instant commands (see linkman:upscmd[8]):
|
|
|
|
*beeper.toggle*::
|
|
|
|
Toggle the UPS beeper. (Not available on some hardware.)
|
|
|
|
*load.on*::
|
|
|
|
Turn on the load immediately.
|
|
|
|
*load.off*::
|
|
|
|
Turn off the load immediately (see <<_known_problems,KNOWN PROBLEMS>>).
|
|
|
|
*shutdown.return*::
|
|
|
|
Turn off the load and return when power is back. Uses the timers defined by
|
|
*ondelay* and *offdelay*.
|
|
|
|
*shutdown.stayoff*::
|
|
|
|
Turn off the load and remain off (see <<_known_problems,KNOWN PROBLEMS>>). Uses
|
|
the timer defined by *offdelay*.
|
|
|
|
*shutdown.stop*::
|
|
|
|
Stop a shutdown in progress.
|
|
|
|
*test.battery.start.deep*::
|
|
|
|
Perform a long battery test (Not available on some hardware.)
|
|
|
|
*test.battery.start.quick*::
|
|
|
|
Perform a (10 second) battery test.
|
|
|
|
*test.battery.start* 'value'::
|
|
|
|
Perform a battery test for the duration of 'value' minutes.
|
|
|
|
*test.battery.stop*::
|
|
|
|
Stop a running battery test (not available on some hardware.)
|
|
|
|
|
|
BATTERY CHARGE
|
|
--------------
|
|
|
|
Due to popular demand, this driver will report a guesstimated *battery.charge*
|
|
and optionally *battery.runtime*, provided you specified a couple of the
|
|
<<_extra_arguments,EXTRA ARGUMENTS>> listed above.
|
|
|
|
If you specify both *battery.voltage.high* and *battery.voltage.low* in
|
|
linkman:ups.conf[5], but don't enter *runtimecal*, it will guesstimate the state
|
|
of charge by looking at the battery voltage alone. This is not reliable under load,
|
|
as this only gives reasonably accurate readings if you disconnect the load, let the
|
|
battery rest for a couple of minutes and then measure the open cell voltage. This
|
|
just isn't practical if the power went out and the UPS is providing power for your
|
|
systems.
|
|
|
|
battery.voltage - battery.voltage.low
|
|
battery.charge = ------------------------------------------ x 100 %
|
|
battery.voltage.high - battery.voltage.low
|
|
|
|
There is a way to get better readings without disconnecting the load but this
|
|
requires one to keep track on how much (and how fast) current is going in- and
|
|
out of the battery. If you specified the *runtimecal*, the driver will attempt
|
|
to do this. Note however, that this heavily relies on the values you enter and
|
|
that the UPS must be able to report the load as well. There are quite a couple
|
|
of devices that report 0 % (or any other fixed value) at all times, in which
|
|
case this obviously doesn't work.
|
|
|
|
The driver also has no way of determining the degradation of the battery capacity
|
|
over time, so you'll have to deal with this yourself (by adjusting the values
|
|
in *runtimecal*). Also note that the driver guesses the initial state of charge
|
|
based on the battery voltage, so this may be less than 100 %, even when you are
|
|
certain that they are full. There is just no way to reliably measure this between
|
|
0 and 100 % full charge.
|
|
|
|
This is better than nothing (but not by much). If any of the above calculations is
|
|
giving you incorrect readings, you are the one that put in the values in
|
|
linkman:ups.conf[5], so don't complain with the author. If you need something better,
|
|
buy a UPS that reports *battery.charge* and *battery.runtime* all by itself
|
|
without the help of a NUT driver.
|
|
|
|
|
|
NOTES FOR THE PREVIOUS USER OF MEGATEC DRIVERS
|
|
----------------------------------------------
|
|
|
|
The blazer drivers having replaced the megatec ones, some configuration
|
|
changes may be required by users switching to blazer.
|
|
|
|
Part of this, the following megatec options, in ups.conf, have to be changed:
|
|
|
|
*battvolts*::
|
|
|
|
You need to use 'default.battery.voltage.high' and 'default.battery.voltage.low'
|
|
|
|
*dtr and rts*::
|
|
|
|
You need to use 'cablepower'
|
|
|
|
*ignoreoff*::
|
|
|
|
This parameter can simply be discarded, since it was a wrong understanding
|
|
of the specification.
|
|
|
|
|
|
KNOWN PROBLEMS
|
|
--------------
|
|
|
|
Some UPS commands aren't supported by all models. In most cases, the driver
|
|
will send a message to the system log when the user tries to execute an
|
|
unsupported command. Unfortunately, some models don't even provide a way for
|
|
the driver to check for this, so the unsupported commands will silently
|
|
fail.
|
|
|
|
Both the *load.off* and *shutdown.stayoff* instant commands are meant to
|
|
turn the load off indefinitely. However, some UPS models don't allow this.
|
|
|
|
Some models report a bogus value for the beeper status (will always be 'enabled'
|
|
or 'disabled'). So, the *beeper.toggle* command may appear to have no effect
|
|
in the status reported by the driver when, in fact, it is working fine.
|
|
|
|
The temperature and load value is known to be bogus in some models.
|
|
|
|
|
|
AUTHORS
|
|
-------
|
|
|
|
Arjen de Korte <adkorte-guest at alioth.debian.org>,
|
|
Alexander Gordeev <lasaine at lvk.cs.msu.su>
|
|
|
|
|
|
SEE ALSO
|
|
--------
|
|
|
|
ifdef::blazer_usb[]
|
|
linkman:blazer_ser[8],
|
|
endif::blazer_usb[]
|
|
ifndef::blazer_usb[]
|
|
linkman:blazer_usb[8],
|
|
endif::blazer_usb[]
|
|
linkman:nutupsdrv[8], linkman:upsc[8], linkman:upscmd[8], linkman:upsrw[8]
|
|
|
|
|
|
Internet Resources:
|
|
~~~~~~~~~~~~~~~~~~~
|
|
|
|
The NUT (Network UPS Tools) home page: http://www.networkupstools.org/
|
|
|
|
The NUT HCL: http://www.networkupstools.org/stable-hcl.html
|
|
|