![]() |
![]()
| ![]() |
![]()
NAMEnutdrv_qx - Driver for Q* protocol serial and USB based UPS equipment SYNOPSISnutdrv_qx -h nutdrv_qx -a UPS_NAME [OPTIONS] Note This man page only documents the hardware-specific features of the nutdrv_qx driver. For information about the core driver, see nutupsdrv(8). SUPPORTED HARDWAREThe protocol originates from Mega System Technologies, Inc. in Taiwan and was used by numerous vendors, as well as evolved over time, growing both in features and nuance incompatibilities. NUT documentation usually refers to this large family of similar dialects as the Megatec Q* or Megatec Qx protocol family. The nutdrv_qx driver is known to work with various UPSes from Armac, Blazer, Energy Sistem, Fenton Technologies, General Electric, Gtec, Hunnox, Masterguard, Mustek, Powercool, Voltronic Power, SKE (rebranded by many, many — have I said many? — others... Long story short: if your UPS came with a software called Viewpower, chances are high that it works with this driver with one of the voltronic* protocols or with the mecer one), and many others. Note Due to historical reasons, two important tunables of this driver are somewhat inconveniently named protocol (for the Qx dialect) and subdriver (for USB to serial link conversion). Other multi-dialect drivers refer to their dialect modules as subdrivers, and actually the modular source code of nutdrv_qx also does. Note Due to the amount of supported Qx dialects, and the time it takes to query for relevant combinations of commands and wait for a reply or absence thereof, in order to detect hardware/firmware support of some particular way for the driver to communicate with the device, automatic nutdrv_qx driver initialization may take about a minute. It is recommended to store the detected and reported protocol and/or subdriver values into your ups.conf(5) file to speed up later driver start-ups and avoid possible service timeouts. 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 or reported back. All devices with a serial interface and many with a USB interface are supported. EXTRA ARGUMENTSYou 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 ups.conf(5)): ondelay = value Time to wait before switching on the UPS (seconds). This
value is truncated to units of 60 seconds.
Note that a value below 3 minutes, may cause earlier firmware versions to not switch on automatically, so it defaults to 3 minutes (i.e. 180 seconds). This option provides a default value for ups.delay.start that will then be used by the driver in the automatic shutdown sequence (i.e. calling the driver with the -k option, calling upsdrvctl(8) with the shutdown option or when the FSD flag is set and upsmon(8) enters its shutdown sequence): however you can change this value ‘on the fly’ for the actual session, only for the use with instant commands, setting ups.delay.start with upsrw(8). 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.
This option provides a default value for ups.delay.shutdown that will then be used by the driver in the automatic shutdown sequence (i.e. calling the driver with the -k option, calling upsdrvctl(8) with the shutdown option or when the FSD flag is set and upsmon(8) enters its shutdown sequence): however you can change this value "on the fly" for the actual session, only for the use with instant commands, setting ups.delay.shutdown with upsrw(8). stayoff If you set stayoff in ups.conf(5) when FSD arises
the UPS will call a shutdown.stayoff shutting down after
ups.delay.shutdown seconds and won’t return (see KNOWN
PROBLEMS), otherwise (standard behaviour) the UPS will call
shutdown.return shutting down after ups.delay.shutdown seconds
and then turn on after ups.delay.start seconds (if mains meanwhile
returned).
protocol = string Skip autodetection of the protocol to use and only use
the one specified. Supported values: bestups, gtec,
hunnox, innovart31, innovart33, masterguard,
mecer, megatec, megatec/old, mustek, q1,
q2, q6, voltronic, voltronic-qs,
voltronic-qs-hex and zinto.
Run the driver program with the --help option to see the exact list of protocol values it would currently recognize. Note that if you end up using the q1 protocol, you may want to give a try to the mecer, megatec and zinto ones setting the novendor/norating flags (only one, or both). pollfreq = num Set polling interval for full updates, in seconds, to
reduce the message traffic. Between two polling requests, the driver will do
quick polls dealing just with ups.status at an interval
specified by the pollinterval driver option (details in
ups.conf(5)). The default value is 30 (in seconds).
If your UPS doesn’t report either battery.charge or battery.runtime you may want to add the following ones in order to have guesstimated values: 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
GUESSTIMATION).
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
GUESSTIMATION).
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 "natively" report just a part of
the total battery voltage (see also battery_voltage_reports_one_pack
below).
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 number automatically, but if this fails somehow, you may want to override this value. Note that this is primarily useful for "guesstimation" of battery.charge and/or battery.runtime (with runtimecal setting), if those readings are not provided by the device directly. battery_voltage_reports_one_pack Some devices "natively" report just report a
part of the total battery voltage (see also override.battery.packs
above, if that value is not reported by the device or properly guessed by the
driver otherwise).
If this flag is set, most of the subdrivers (except those which know about more complicated device-specific nuances, currently: ablerex, masterguard and voltronic-qs-hex) adjust their ultimately reported battery.voltage value as a multiple of battery.packs and "native" battery.voltage). Note this is primarily useful for consistent diagnostics and graphing of the numbers, and should not impact the "guesstimation" of battery.charge and/or battery.runtime — so rather a cosmetic adjustment, than critical. 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.
BESTUPS, INNOVART31, INNOVART33, MECER, MEGATEC, MEGATEC/OLD, MUSTEK, Q1, Q2, Q6, VOLTRONIC-QS, VOLTRONIC-QS-HEX, ZINTO PROTOCOLSignoresab Some UPSes incorrectly report the ‘Shutdown
Active’ bit as always on, consequently making the driver believe the
UPS is nearing a shutdown (and, as a result, ups.status always contains FSD...
and you know what this means). Setting this flag will make the driver ignore
the ‘Shutdown Active’ bit.
MECER, MEGATEC, MEGATEC/OLD, MUSTEK, ZINTO PROTOCOLSondelay The acceptable range is 0..599940 seconds.
offdelay 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.
BESTUPS PROTOCOLondelay The acceptable range is 60..599940 seconds.
offdelay The acceptable range is 12..5940 seconds.
pins_shutdown_mode = value Set shutdown mode functionality of Pin 1 and Pin 7 on the
UPS DB9 communication port (Per Best Power’s EPS-0059) to value
[0..6].
MASTERGUARD PROTOCOLslave_addr = value Make the claim function verify it’s talking to the
specified slave address (ups.id). Safeguard against talking to
the wrong one of several identical UPSes on the same USB bus. Note that when
changing ups.id (through upsrw(8)) the driver will continue to
talk to the UPS with the new slave address, but won’t claim it
again on restart until the slave_addr parameter is adjusted.
INNOVART31, INNOVART33, Q1, Q2, Q6 PROTOCOLSondelay The acceptable range is 0..599940 seconds.
offdelay The acceptable range is 12..600 seconds.
Q2, Q6 PROTOCOLSnooutstats Some UPSes don’t support WA command which returns
output load stats. Using this flag will make the driver ignore these
requests.
VOLTRONIC-QS, VOLTRONIC-QS-HEX PROTOCOLSondelay The acceptable range is 60..599940 seconds.
offdelay The acceptable range is 12..540 seconds.
VOLTRONIC PROTOCOLThe following options are supported only by the voltronic protocol. Not all of them are available on all the UPSes supported by this protocol. ondelay The acceptable range is 0..599940 seconds.
offdelay The acceptable range is 12..5940 seconds.
battery_number = value Set number of batteries that make a pack to value
[1..9]. This setting will change the charge and runtime estimation reported by
the UPS.
output_phase_angle = value Changes output phase angle to the provided value [000,
120, 180, 240]°.
UPS CAPABILITY SETTINGS
reset_to_default Reset capability options and their voltage and frequency
limits to safe default values. (Doable only when the UPS is in Standby
Mode)
Note that setting this option will reset also ups.start.auto, battery.protection, battery.energysave, ups.start.battery, outlet.0.switchable, input.transfer.high, input.transfer.low, input.frequency.high and input.frequency.low. These UPSes can be fine-tuned to suit your needs enabling or disabling the following options (the driver should tell you which one the UPS is capable of on startup: the settable ones will be reported either are enabled or disabled in the logs): alarm_control = string Enable or disable alarm (BEEP!) [enabled/disabled].
Settable also ‘on the fly’ with beeper.enable and
beeper.disable instant commands.
bypass_alarm = string Enable or disable alarm (BEEP!) at Bypass Mode
[enabled/disabled].
battery_alarm = string Enable or disable alarm (BEEP!) at Battery Mode
[enabled/disabled].
bypass_when_off = string Enable or disable bypass when the UPS is Off
[enabled/disabled]. If enabled, AC will directly provide power to connected
devices when the UPS is off.
bypass_forbidding = string Enable or disable Bypass Forbidding [enabled/disabled].
If enabled, the UPS will not transfer to bypass mode under any
condition.
converter_mode = string Enable or disable Converter Mode [enabled/disabled]. When
input frequency is within 40 Hz to 70 Hz, the UPS can be set at a constant
output frequency, 50 Hz or 60 Hz. The UPS will still charge battery under this
mode.
eco_mode = string Enable or disable ECO Mode [enabled/disabled]. When input
voltage/frequency are within acceptable range, the UPS will bypass voltage to
output for energy saving. PFC and INVERTER are still active at this mode.
Settable also ‘on the fly’ with bypass.start and
bypass.stop instant commands.
advanced_eco_mode = string Enable or disable Advanced ECO Mode [enabled/disabled].
When input voltage/frequency are within acceptable range, the UPS will bypass
voltage to output for energy saving. PFC and INVERTER are off at this
mode.
battery_open_status_check = string Enable or disable Battery Open Status Check
[enabled/disabled]. If enabled, when the UPS is turned on, it will check if
the battery is connected or not.
site_fault_detection = string Enable or disable site fault detection
[enabled/disabled]. If enabled, the UPS will beep when the input neutral and
hot wires are reversed.
constant_phase_angle = string Enable or disable Constant Phase Angle Function (output
and input phase angles are not equal) [enabled/disabled].
limited_runtime_on_battery = string Enable or disable limited runtime on battery mode
[enabled/disabled].
BYPASS MODE VOLTAGE/FREQUENCY LIMITS
Variables to fine-tune voltage and frequency limits for Bypass mode. These limits are reset to safe default values by reset_to_default. If AC voltage and frequency are within acceptable range, Bypass mode will be used (If the UPS is capable of and it’s enabled). Since these values are device-specific, if your UPS support them, you will get their settable limits printed in the logs on startup. max_bypass_volt = value Maximum voltage for Bypass Mode (V).
min_bypass_volt = value Minimum voltage for Bypass Mode (V).
max_bypass_freq = value Maximum frequency for Bypass Mode (Hz).
min_bypass_freq = value Minimum frequency for Bypass Mode (Hz).
OPTIONS SPECIFIC FOR P31 UPSES
The following options are available only on P31 UPSes. work_range_type = string Device grid working range for P31 UPSes
[Appliance/UPS].
TESTING
This protocol comes with a couple of functions that are not enabled by default because of the lack of knowledge of some part of the communication protocol used by these UPSes by your friendly neighborhood developer. Since these functions are supposed to be queries to the UPS for some kind of information, they should not make your UPS go boom. So if you are brave enough to risk your UPS and attached devices' life to help the developers, this will be very appreciated. Do it at your own risk. testing If invoked the driver will exec also commands that still
need testing.
SERIAL INTERFACE ONLYcablepower = 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.
USB INTERFACE ONLYport = string Required option for all NUT drivers. Some value
must be set, typically auto for drivers that handle USB connections.
Note This could be a device filesystem path like /dev/usb/hiddev0 but current use of libusb API precludes knowing and matching by such identifiers. They may also be inherently unreliable (dependent on re-plugging and enumeration order). At this time the actual value is ignored, but syntactically some port configuration must still be there. It is possible to control multiple UPS units simultaneously by running several instances of this driver, provided they can be uniquely distinguished by setting some combination of the vendor, product, vendorid, productid, serial, bus and/or device options detailed below. For devices or operating systems that do not provide sufficient information, the allow_duplicates option can be of use (limited and risky!) 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) for more information on regular expressions), which must match
the UPS’s entire respective vendor/product/serial string values (minus
any surrounding whitespace), or the whole 4-digit hexadecimal code for
vendorid and productid.
Try lsusb(8) or running this NUT driver with -DD command-line argument for finding out the strings to match. Examples: •-x vendor="Foo.Corporation.*"
•-x vendorid="051d*" (APC)
•-x
product=".*(Smart|Back)-?UPS.*"
bus = regex OPTIONAL, NOT RECOMMENDED.
Select a UPS on a specific USB bus or group of buses. The argument is a regular expression that must match the bus name where the UPS is connected (e.g. bus="002" or bus="00[2-3]") as seen on Linux in /sys/bus/usb/devices or lsusb(8); including leading zeroes. Note Bus numbers are not guaranteed by the OS to be stable across re-boots, kernel driver reloads or device re-plugging (e.g. changing visible population of USB hubs). device = regex OPTIONAL, NOT RECOMMENDED.
Select a UPS on a specific USB device or group of devices. The argument is a regular expression that must match the device name where the UPS is connected (e.g. device="001" or device="00[1-2]") as seen on Linux in /sys/bus/usb/devices or lsusb(8); including leading zeroes. Note Device numbers are not guaranteed by the OS to be stable across re-boots or device re-plugging. busport = regex OPTIONAL, NOT RECOMMENDED.
If supported by the hardware, OS and libusb on the particular deployment, this option should allow to specify physical port numbers on an USB hub, rather than logical device enumeration values, and in turn — this should be less volatile across reboots or re-plugging. The value may be seen in the USB topology output of lsusb -tv on systems with that tool, for example. Note This option is not practically supported by some NUT builds (it should be ignored with a warning then), and not by all systems that NUT can run on. allow_duplicates OPTIONAL, NOT RECOMMENDED.
If you have several UPS devices which may not be uniquely identified by the options above (e.g. only VID:PID can be discovered there), this flag allows each driver instance where it is set to take the first match if available, or proceed to try another. Normally the driver initialization would abort at this point claiming "Resource busy" or similar error, assuming that the otherwise properly matched device is unique — and some other process already handles it. Warning This feature is inherently non-deterministic! The association of driver instance name to actual device may vary between runs! If you only care to know that at least one of your no-name UPSes is online, this option can help. If you must really know which one, it will not! usb_set_altinterface = bAlternateSetting Force redundant call to usb_set_altinterface(),
especially if needed for devices serving multiple USB roles where the UPS is
not represented by the interface number 0 (default).
usb_config_index, usb_hid_rep_index, usb_hid_desc_index, usb_hid_ep_in, usb_hid_ep_out Force use of specific interface, endpoint, descriptor
index etc. numbers, rather than defaulting to 0 (rarely other values in
certain drivers for some devices known to use non-zero numbers). Specified as
a hexadecimal number.
As a rule of thumb for usb_hid_desc_index discovery, you can see larger wDescriptorLength values (roughly 600+ bytes) in reports of lsusb or similar tools. LIBUSB_DEBUG = INTEGER Run-time troubleshooting of USB-capable NUT drivers can
involve not only raising the common NUT debug verbosity (e.g. using the
DEBUG_MIN setting in ups.conf(5) or protocol commands to change the
driver.debug value), but may also benefit from LibUSB specific debugging.
For the latter, you can set the LIBUSB_DEBUG driver option; alternatively you can classically export the environment variable LIBUSB_DEBUG before starting a NUT driver program (may be set and "exported" in driver init script or service method, perhaps via nut.conf(5)), to a numeric value such as 4 ("All messages are emitted"). For more details, including the currently supported values for your version of the library, see e.g.: •https://libusb.sourceforge.io/api-1.0/
•https://libusb.sourceforge.io/api-1.0/group__libusb__lib.html
subdriver = string Select a serial-over-USB subdriver to use. You have a
choice between ablerex, armac, cypress, fabula,
fuji, gtec, hunnox, ippon, krauler,
phoenix, phoenixtec, sgs and snr.
Run the driver program with the --help option to see the exact list of subdriver values it would currently recognize. Note When using this option, it is mandatory to also specify the vendorid and productid matching parameters. 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 provide value (0x409 or 0x4095), according to your
device entry in NUT hardware compatibility list (HCL).
noscanlangid If this flag is set, don’t autoscan valid range
for langid.
IMPLEMENTATION NOTES
armac subdriver The Armac communication subdriver reproduces a
communication protocol used by an old release of "PowerManagerII"
software, which doesn’t seem to be Armac specific: its banner is
"2004 Richcomm Technologies, Inc. Dec 27 2005 ver 1.1." Maybe other
Richcomm UPSes would work with this — maybe better than with the older
standalone richcomm_usb driver.
fabula subdriver This subdriver, meant to be used with the megatec
protocol, does not support the various test.battery commands.
Plus, the shutdown.return command ignores the values set in
ups.delay.start/ondelay and makes the UPS turn on the load as
soon as power is back.
gtec subdriver Currently, the Gtec specific support is only known to
work with USB devices (tested with a Gtec ZP120N), and was not seen with
Serial port.
This mode is not automatically detected, and should be enabled manually in your ups.conf, e.g.: [gtec-ups] Other subdrivers and protocol implementations (including blazer_usb(8)) sort of work, but both have two problems: •They use the simple "Q1" query, which
doesn’t report the result of the latest battery test.
•For some reason the UPS reports normal battery
voltage even when the battery is completely disconnected. So you won’t
know the battery is dead until a power failure.
•This driver sends the more advanced
"Q4" request instead. Here the answer includes status letters with
more information than the Q1 binary flags, including battery status.
•USB reply is read in 8-byte chunks, which causes
the UPS to disconnect from USB. The UPS reconnects in a second, but it still
breaks the initialization of nutdrv_qx, where the query is sent twice in a
short time (unlike blazer_usb).
•The solution is simple: read the whole reply at
once.
hunnox subdriver This protocol subdriver is closely related to
fabula one, with a few tweaks for devices not directly supported by
that driver.
fuji subdriver This subdriver, meant to be used with the megatec
protocol, does not support the shutdown.stayoff and
load.off commands. Plus, the shutdown.return command ignores the
values set in ups.delay.start/ondelay and makes the UPS turn on
the load as soon as power is back.
krauler subdriver This subdriver, meant to be used with the megatec
protocol, does not support the shutdown commands, i.e.:
shutdown.return, shutdown.stayoff and load.off.
snr subdriver This subdriver, meant to be used with the megatec
protocol, does not support the shutdown commands, i.e.:
shutdown.return, shutdown.stayoff and load.off.
UPS COMMANDSThis driver supports some instant commands (see upscmd(8)): beeper.toggle Toggle the UPS beeper. (Not available on some
hardware)
load.on Turn on the load immediately. (Not available on some
hardware)
load.off Turn off the load immediately (see KNOWN PROBLEMS).
shutdown.return Turn off the load and return when power is back. Uses the
timers defined by ups.delay.start and ups.delay.shutdown.
shutdown.stayoff Turn off the load and remain off (see KNOWN PROBLEMS).
Uses the timer defined by ups.delay.shutdown.
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 quick (10 second) battery test.
test.battery.stop Stop a running battery test. (Not available on some
hardware)
BESTUPS, INNOVART31, INNOVART33, MECER, MEGATEC, MEGATEC/OLD, MUSTEK, Q1, Q2, Q6, ZINTO PROTOCOLStest.battery.start value Perform a battery test for the duration of value
seconds (truncated to 60 seconds) [60..5940].
MASTERGUARD PROTOCOLbeeper.enable Enable the UPS beeper.
beeper.disable Disable the UPS beeper.
test.battery.start value Perform a battery test for the duration of value
seconds (truncated to 60 seconds) [0..5940]. This value is truncated to units
of 6 seconds (less than 60 seconds) or 60 seconds (more than 60
seconds).
bypass.start Put the UPS in bypass mode
bypass.stop Take the UPS in normal mode
VOLTRONIC POWER P98 UNITS (WITH MECER PROTOCOL)
test.battery.start value Perform a battery test for the duration of value
seconds (truncated to 60 seconds) [12..5940]. This value is truncated to units
of 6 seconds (less than 60 seconds) or 60 seconds (more than 60
seconds).
VOLTRONIC PROTOCOLThe following instant commands are available for the voltronic protocol. Not all of them are available on all the UPSes supported by this protocol. beeper.enable Enable the UPS beeper.
beeper.disable Disable the UPS beeper.
test.battery.start value Perform a battery test for the duration of value
seconds [12..5940]. This value is truncated to units of 6 seconds (less than
60 seconds) or 60 seconds (more than 60 seconds).
outlet.1.load.off Turn off outlet 1 load immediately.
outlet.1.load.on Turn on outlet 1 load immediately.
outlet.2.load.off Turn off outlet 2 load immediately.
outlet.2.load.on Turn on outlet 2 load immediately.
outlet.3.load.off Turn off outlet 3 load immediately.
outlet.3.load.on Turn on outlet 3 load immediately.
outlet.4.load.off Turn off outlet 4 load immediately.
outlet.4.load.on Turn on outlet 4 load immediately.
bypass.start Put the UPS in ECO Mode.
bypass.stop Take the UPS out of ECO Mode.
BATTERY CHARGE GUESSTIMATIONDue to popular demand, this driver will report a guesstimated battery.charge and optionally battery.runtime, provided you specified a couple of the EXTRA ARGUMENTS listed above. If you specify both battery.voltage.high and battery.voltage.low in 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.
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 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 DRIVERSThe nutdrv_qx driver having replaced the megatec ones, some configuration changes may be required by users switching to nutdrv_qx. Part of this, the following megatec options, in ups.conf(5), 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.
NOTES FOR THE PREVIOUS USER OF BLAZER DRIVERSThe nutdrv_qx driver having replaced the blazer ones, some configuration changes may be required by users switching to nutdrv_qx. Part of this, the following blazer options, in ups.conf(5), have to be changed: ondelay While the previous blazer drivers expected minutes, the
new nutdrv_qx driver wants seconds.
The following instant command has also been changed: test.battery.start value While the old blazer drivers expected a value in
minutes, the nutdrv_qx driver wants a value in seconds.
NOTES FOR THE PREVIOUS USER OF BESTUPS DRIVERThe nutdrv_qx driver having replaced the bestups one, some configuration changes may be required by users switching to nutdrv_qx. Part of this, the following bestups options, in ups.conf(5), are no longer supported by this driver: nombattvolt, battvoltmult See BATTERY CHARGE GUESSTIMATION.
ID Discarded.
NOTES FOR THE PREVIOUS USER OF VOLTRONIC DRIVERSThe nutdrv_qx driver having replaced the voltronic ones, some configuration changes may be required by users switching to nutdrv_qx. Part of this, the following voltronic options, in ups.conf(5), have to be changed: ondelay While the previous voltronic drivers expected minutes,
the new nutdrv_qx driver wants seconds. It no longer defaults to 0
minutes but to 3 minutes (i.e. 180 seconds) for compatibility with the users
switching from the old blazer drivers.
battnumb This option has been renamed to
battery_number.
The following options are no longer supported by this driver, you can now change them more conveniently "on the fly" calling upsrw(8) with the appropriate NUT variable — provided that your UPS supports them.
KNOWN PROBLEMSSome 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. MASTERGUARD UNITSThe driver is supposed to support both "new" A series (A700/1000/2000/3000 and their -19 cousins) and E series (E60/100/200) but was tested only on A due to lack of E hardware. VOLTRONIC-QS UNITSBoth load.off and shutdown.stayoff instant commands are known to work as expected (i.e. turn the load off indefinitely) only if mains is present, otherwise, as soon as mains returns the load will be powered. After issuing a shutdown.return instant command, the UPS won’t wait ondelay before powering on the load, provided the following conditions are met: •if the load has been previously (no matter how
long before) powered off through load.off/shutdown.stayoff
and powered on through load.on/shutdown.stop
and
•if AC wasn’t cut after issuing the
load.off/shutdown.stayoff (i.e. the UPS didn’t turn
itself off) and
•if there’s a power outage after issuing
the shutdown.return command
In this case, as soon as mains returns the load will be powered. VOLTRONIC-QS-HEX UNITSshutdown.return, load.off, and shutdown.stayoff instant commands are known to work as expected only if mains is present, otherwise, as soon as mains returns the load will be powered. UPS WARNINGS (VOLTRONIC PROTOCOL)The UPSes supported by voltronic protocol report warnings through a 64bit flag (bit1bit2...bit63bit64) where 1 means that a warning arose, while 0 means no warning. Since more than one warning at a time can be signaled, and because of the limited space in the ups.alarm variable, if the length of the warnings exceeds that of ups.alarms variable, they will be reported as bits. If you want to know the explanation of that bit you can either watch the log or see the next table (unlisted bits equal to unknown warnings). Table 1. UPS Warnings for voltronic UPSes
AUTHORS•
Daniele Pezzini <hyouko@gmail.com> •Arnaud Quette
<arnaud.quette@gmail.com>
•John Stamp <kinsayder@hotmail.com>
•Peter Selinger
<selinger@users.sourceforge.net>
•Arjen de Korte
<adkorte-guest@alioth.debian.org>
•Alexander Gordeev
<lasaine@lvk.cs.msu.su>
•Edgar Fuß
<ef@math.uni-bonn.de>
SEE ALSOblazer_ser(8), blazer_usb(8), nutupsdrv(8), ups.conf(5), upsc(8), upscmd(8), upsdrvctl(8), upsmon(8), upsrw(8) Internet Resources:•The NUT (Network UPS Tools) home page:
https://www.networkupstools.org/
•The NUT HCL:
https://www.networkupstools.org/stable-hcl.html
|