Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
NUTDRV_QX(8)			   NUT Manual			    NUTDRV_QX(8)

NAME
     nutdrv_qx - Driver for Q* protocol serial and USB based UPS equipment

SYNOPSIS
     nutdrv_qx -h

     nutdrv_qx -a UPS_NAME [OPTIONS]

	 Note

	 This man page only documents the hardware-specific features of the nut-
	 drv_qx driver. For information about the core driver, see nutupsdrv(8).

SUPPORTED HARDWARE
     The  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 pro-
     tocol 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 sub-
	 driver (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 ab-
	 sence 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 recom-
	 mended 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  sup-
     ported.

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
     ups.conf(5)):

     ondelay = value
	 Time to wait before switching on the UPS (seconds). This value is trun-
	 cated 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  ac-
	 tual  session,  only for the use with instant commands, setting ups.de-
	 lay.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  mean-
	 while returned).

     protocol = string
	 Skip  autodetection  of the protocol to use and only use the one speci-
	 fied. Supported values: bestups, gtec, hunnox, innovart31,  innovart33,
	 innovatae,  masterguard,  mecer,  megatec, megatec/old, mustek, q1, q2,
	 q6, voltronic,  voltronic-axpert,  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  mes-
	 sage  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 bat-
	 tery.charge, you need to specify this (see  BATTERY  CHARGE  GUESSTIMA-
	 TION).

     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 bat-
	 tery.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  bat-
	 tery.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 bat-
	 tery.voltage  value  as  a  multiple of battery.packs and "native" bat-
	 tery.voltage).

	 Note this is primarily useful for consistent diagnostics  and	graphing
	 of  the  numbers,  and  should  not  impact the "guesstimation" of bat-
	 tery.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 pos-
	 sible. Just don't get too close to no load (prediction of  runtime  de-
	 pends more on idle load for the battery then).

     chargetime = value
	 The  time  needed  to fully recharge the battery after being fully dis-
	 charged. 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,  INNOVATAE,  MECER,  MEGATEC,  MEGATEC/OLD,
     MUSTEK, Q1, Q2, Q6, VOLTRONIC-QS, VOLTRONIC-QS-HEX, ZINTO PROTOCOLS
     ignoresab
	 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  `Shut-
	 down Active' bit.

   MECER, MEGATEC, MEGATEC/OLD, MUSTEK, ZINTO PROTOCOLS
     ondelay
	 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 PROTOCOL
     ondelay
	 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 com-
	 munication port (Per Best Power's EPS-0059) to value [0..6].

   MASTERGUARD PROTOCOL
     slave_addr = value
	 Make the claim function verify it's talking to the specified slave  ad-
	 dress	(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, INNOVATAE, Q1, Q2, Q6 PROTOCOLS
     ondelay
	 The acceptable range is 0..599940 seconds.

     offdelay
	 The acceptable range is 12..600 seconds.

   Q2, Q6 PROTOCOLS
     nooutstats
	 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 PROTOCOLS
     ondelay
	 The acceptable range is 60..599940 seconds.

     offdelay
	 The acceptable range is 12..540 seconds.

   VOLTRONIC-AXPERT PROTOCOL
	 Note

	 This  protocol  is currently largely experimental, many features may be
	 only exposed in specially configured builds of the NUT driver program.

     reset_to_default
	 Reset capability options and their limits to safe default values

     bypass_alarm
	 Alarm (BEEP!) at Bypass Mode [enabled/disabled]

     battery_alarm
	 Alarm (BEEP!) at Battery Mode [enabled/disabled]

   VOLTRONIC PROTOCOL
     The 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]<degree>.

     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, bat-
	     tery.protection,	battery.energysave,   ups.start.battery,    out-
	     let.0.switchable,	 input.transfer.high,	input.transfer.low,  in-
	     put.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  com-
	     mands.

	 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 con-
	     stant 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 volt-
	     age/frequency are within acceptable  range,  the  UPS  will  bypass
	     voltage to output for energy saving. PFC and INVERTER are still ac-
	     tive 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 en-
	     abled, 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/dis-
	     abled].

     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 communica-
	 tion  protocol used by these UPSes by your friendly neighborhood devel-
	 oper. 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 test-
	     ing.

   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 unre-
	 liable, 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 ONLY
     port = 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 sev-
     eral 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,  ser-
     ial = 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 ven-
	 dorid 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 con-
	 nected  (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.  chang-
	     ing 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  deploy-
	 ment,	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. num-
	 bers, rather than defaulting to 0 (rarely other values in certain  dri-
	 vers  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;	alterna-
	 tively you can classically export the environment variable LIBUSB_DEBUG
	 before starting a NUT driver program (may be set and "exported" in dri-
	 ver  init  script or service method, perhaps via nut.conf(5)), to a nu-
	 meric 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  ven-
	     dorid 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 proto-
	     col  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  shut-
	     down.return command ignores the values set in ups.delay.start/onde-
	     lay 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 man-
	     ually in your ups.conf, e.g.:

		 [gtec-ups]
		     driver = "nutdrv_qx"
		     port = "auto"
		     subdriver = "gtec"
		     protocol = "gtec"

	     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 informa-
		     tion 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.de-
	     lay.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, shut-
	     down.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, shut-
	     down.stayoff and load.off.

UPS COMMANDS
     This 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  de-
	 fined 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,  INNOVATAE,  MECER,  MEGATEC,  MEGATEC/OLD,
     MUSTEK, Q1, Q2, Q6, ZINTO PROTOCOLS
     test.battery.start value
	 Perform  a battery test for the duration of value seconds (truncated to
	 60 seconds) [60..5940].

   MASTERGUARD PROTOCOL
     clear.fault.record
	 Clear fault/error record

     beeper.enable
	 Enable the UPS beeper.

     beeper.disable
	 Disable the UPS beeper.

     test.battery.start.low
	 Perform a battery test until the battery charge is low.

	 The difference between the "battery test until battery low"  and  "deep
	 battery test" is that the latter is actually a battery calibration test
	 and  needs  some preconditions to be met, i.e. the load must be between
	 30% and 100% and the starting battery capacity is greater than 99%.

	 The "Battery test until battery low" can be started anytime.

	 Feature was tested on Masterguard A1000 and A2000 units.

     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 sec-
	     onds).

   VOLTRONIC PROTOCOL
     The 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 GUESSTIMATION
     Due to  popular  demand,  this  driver  will  report  a  guesstimated  bat-
     tery.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.

			      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 calcula-
     tions  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 some-
     thing 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 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.volt-
	 age.low

     dtr and rts
	 You need to use cablepower

     ignoreoff
	 This  parameter  can  simply  be discarded, since it was a wrong under-
	 standing of the specification.

NOTES FOR THE PREVIOUS USER OF BLAZER DRIVERS
     The 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 DRIVER
     The  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 DRIVERS
     The 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  nut-
	 drv_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 appro-
     priate NUT variable -- provided that your UPS supports them.

     battpacks		  a battery.packs

			  Set number of battery packs
			  in  parallel	[1..99]. This
			  setting  will  change   the
			  charge  and runtime estima-
			  tion reported by the UPS.

     battlow		  a battery.voltage.low

			  Set minimum battery voltage
			  just before the  UPS	auto-
			  matically  shuts down. This
			  setting  will  change   the
			  charge  and runtime estima-
			  tion reported by the UPS.

     auto_reboot	  a ups.start.auto

			  Enable or disable auto  re-
			  boot [enabled/disabled]. If
			  enabled,  the UPS will auto
			  recover when AC  power  re-
			  turns.

     battery_protection   a battery.protection

			  Enable  or  disable battery
			  deep	discharge  protection
			  [enabled/disabled].

     energy_saving	  a battery.energysave

			  Enable   or  disable	Green
			  power     function	 [en-
			  abled/disabled].   If   en-
			  abled, for  energy  saving,
			  the  UPS will auto off when
			  there is no load.

     cold_start 	  a ups.start.battery

			  Enable  or   disable	 Cold
			  Start   [enabled/disabled].
			  If enabled, the UPS can  be
			  turned on also if AC is not
			  connected to the UPS.

     outlet_control	  a outlet.0.switchable

			  Enable  or disable program-
			  mable  outlets  control  at
			  battery  mode [enabled/dis-
			  abled]. If enabled, the UPS
			  will cut  off  programmable
			  outlets  after  backup time
			  (set	    through	 out-
			  let.{1,2,3,4}.delay.shut-
			  down) arrives. If disabled,
			  the  UPS  will provide con-
			  tinuous power to programma-
			  ble outlets until the  bat-
			  tery is running out.

     max_eco_volt	  a input.transfer.high

			  Maximum   voltage  for  ECO
			  Mode (V). If AC voltage  is
			  within   acceptable  range,
			  ECO mode will be  used  (If
			  the  UPS  is capable of and
			  it's enabled).

     min_eco_volt	  a input.transfer.low

			  Minimum  voltage  for   ECO
			  Mode	(V). If AC voltage is
			  within  acceptable   range,
			  ECO  mode  will be used (If
			  the UPS is capable  of  and
			  it's enabled).

     max_eco_freq	  a input.frequency.high

			  Maximum  frequency  for ECO
			  Mode (Hz). If AC  frequency
			  is within acceptable range,
			  ECO  mode  will be used (If
			  the UPS is capable  of  and
			  it's enabled).

     min_eco_freq	  a input.frequency.low

			  Minimum  frequency  for ECO
			  Mode (Hz). If AC  frequency
			  is within acceptable range,
			  ECO  mode  will be used (If
			  the UPS is capable  of  and
			  it's enabled).

     outlet1_delay	  a outlet.1.delay.shutdown

			  Delay  time before program-
			  mable outlet 1  shuts  down
			  the  load  when  on battery
			  mode [0..59940] (seconds).

     outlet2_delay	  a outlet.2.delay.shutdown

			  Delay time before  program-
			  mable  outlet  2 shuts down
			  the load  when  on  battery
			  mode [0..59940] (seconds).

     outlet3_delay	  a outlet.3.delay.shutdown

			  Delay  time before program-
			  mable outlet 3  shuts  down
			  the  load  when  on battery
			  mode [0..59940] (seconds).

     outlet4_delay	  a outlet.4.delay.shutdown

			  Delay time before  program-
			  mable  outlet  4 shuts down
			  the load  when  on  battery
			  mode [0..59940] (seconds).

     batt_type		  a battery.type

			  Battery type (for P31 UPSes
			  only) [Li/Flooded/AGM].

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 un-
     supported	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  en-
     abled or disabled). So, the beeper.toggle command may appear to have no ef-
     fect  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 UNITS
     The 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-AXPERT UNITS
     This protocol supports Voltronic Power Axpert inverters, based on P30  pro-
     tocol  (used  e.g.  in  photovoltaic  equipment,  often  paired with an UPS
     charged by the solar panels).

     The code is currently largely experimental, with  data  point  and  command
     names  not  aligned  with concepts that are part of NUT standard vocabulary
     (this many of them are prefixed with  experimental.  namespace).  In  fact,
     many features may be only exposed in specially configured builds of the NUT
     driver program.

   VOLTRONIC-QS UNITS
     Both  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/shut-
	 down.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 UNITS
     shutdown.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 warn-
     ings).

     Table 1. UPS Warnings for voltronic UPSes
     +----+-----------------------------+
     | #  | Corresponding Warning	|
     +----+-----------------------------+
     |	  |				|
     | 1  | Battery disconnected	|
     +----+-----------------------------+
     |	  |				|
     | 2  | Neutral not connected	|
     +----+-----------------------------+
     |	  |				|
     | 3  | Site fault			|
     +----+-----------------------------+
     |	  |				|
     | 4  | Phase sequence incorrect	|
     +----+-----------------------------+
     |	  |				|
     | 5  | Phase sequence incorrect in |
     |	  | bypass			|
     +----+-----------------------------+
     |	  |				|
     | 6  | Input frequency unstable in |
     |	  | bypass			|
     +----+-----------------------------+
     |	  |				|
     | 7  | Battery overcharged 	|
     +----+-----------------------------+
     |	  |				|
     | 8  | Low battery 		|
     +----+-----------------------------+
     |	  |				|
     | 9  | Overload alarm		|
     +----+-----------------------------+
     |	  |				|
     | 10 | Fan alarm			|
     +----+-----------------------------+
     |	  |				|
     | 11 | EPO enabled 		|
     +----+-----------------------------+
     |	  |				|
     | 12 | Unable to turn on UPS	|
     +----+-----------------------------+
     |	  |				|
     | 13 | Over temperature alarm	|
     +----+-----------------------------+
     |	  |				|
     | 14 | Charger alarm		|
     +----+-----------------------------+
     |	  |				|
     | 15 | Remote auto shutdown	|
     +----+-----------------------------+
     |	  |				|
     | 16 | L1 input fuse not working	|
     +----+-----------------------------+
     |	  |				|
     | 17 | L2 input fuse not working	|
     +----+-----------------------------+
     |	  |				|
     | 18 | L3 input fuse not working	|
     +----+-----------------------------+
     |	  |				|
     | 19 | Positive PFC abnormal in L1 |
     +----+-----------------------------+
     |	  |				|
     | 20 | Negative PFC abnormal in L1 |
     +----+-----------------------------+
     |	  |				|
     | 21 | Positive PFC abnormal in L2 |
     +----+-----------------------------+
     |	  |				|
     | 22 | Negative PFC abnormal in L2 |
     +----+-----------------------------+
     |	  |				|
     | 23 | Positive PFC abnormal in L3 |
     +----+-----------------------------+
     |	  |				|
     | 24 | Negative PFC abnormal in L3 |
     +----+-----------------------------+
     |	  |				|
     | 25 | Abnormal in CAN-bus  commu- |
     |	  | nication			|
     +----+-----------------------------+
     |	  |				|
     | 26 | Abnormal   in   synchronous |
     |	  | signal circuit		|
     +----+-----------------------------+
     |	  |				|
     | 27 | Abnormal   in   synchronous |
     |	  | pulse signal circuit	|
     +----+-----------------------------+
     |	  |				|
     | 28 | Abnormal   in  host  signal |
     |	  | circuit			|
     +----+-----------------------------+
     |	  |				|
     | 29 | Male connector of  parallel |
     |	  | cable not connected well	|
     +----+-----------------------------+
     |	  |				|
     | 30 | Female  connector of paral- |
     |	  | lel  cable	not   connected |
     |	  | well			|
     +----+-----------------------------+
     |	  |				|
     | 31 | Parallel   cable  not  con- |
     |	  | nected well 		|
     +----+-----------------------------+
     |	  |				|
     | 32 | Battery connection not con- |
     |	  | sistent in parallel systems |
     +----+-----------------------------+
     |	  |				|
     | 33 | AC connection  not	consis- |
     |	  | tent in parallel systems	|
     +----+-----------------------------+
     |	  |				|
     | 34 | Bypass  connection not con- |
     |	  | sistent in parallel systems |
     +----+-----------------------------+
     |	  |				|
     | 35 | UPS model types not consis- |
     |	  | tent in parallel systems	|
     +----+-----------------------------+
     |	  |				|
     | 36 | Capacity of UPSs  not  con- |
     |	  | sistent in parallel systems |
     +----+-----------------------------+
     |	  |				|
     | 37 | Auto  restart  setting  not |
     |	  | consistent in parallel sys- |
     |	  | tems			|
     +----+-----------------------------+
     |	  |				|
     | 38 | Battery cell over charge	|
     +----+-----------------------------+
     |	  |				|
     | 39 | Battery protection	setting |
     |	  | not  consistent in parallel |
     |	  | systems			|
     +----+-----------------------------+
     |	  |				|
     | 40 | Battery  detection	setting |
     |	  | not  consistent in parallel |
     |	  | systems			|
     +----+-----------------------------+
     |	  |				|
     | 41 | Bypass not allowed	setting |
     |	  | not  consistent in parallel |
     |	  | systems			|
     +----+-----------------------------+
     |	  |				|
     | 42 | Converter setting not  con- |
     |	  | sistent in parallel systems |
     +----+-----------------------------+
     |	  |				|
     | 43 | High  loss	point  for fre- |
     |	  | quency in bypass  mode  not |
     |	  | consistent in parallel sys- |
     |	  | tems			|
     +----+-----------------------------+
     |	  |				|
     | 44 | Low  loss  point  for  fre- |
     |	  | quency in bypass  mode  not |
     |	  | consistent in parallel sys- |
     |	  | tems			|
     +----+-----------------------------+
     |	  |				|
     | 45 | High loss point for voltage |
     |	  | in	bypass mode not consis- |
     |	  | tent in parallel systems	|
     +----+-----------------------------+
     |	  |				|
     | 46 | Low loss point for	voltage |
     |	  | in	bypass mode not consis- |
     |	  | tent in parallel systems	|
     +----+-----------------------------+
     |	  |				|
     | 47 | High loss  point  for  fre- |
     |	  | quency  in AC mode not con- |
     |	  | sistent in parallel systems |
     +----+-----------------------------+
     |	  |				|
     | 48 | Low  loss  point  for  fre- |
     |	  | quency  in AC mode not con- |
     |	  | sistent in parallel systems |
     +----+-----------------------------+
     |	  |				|
     | 49 | High loss point for voltage |
     |	  | in AC mode	not  consistent |
     |	  | in parallel systems 	|
     +----+-----------------------------+
     |	  |				|
     | 50 | Low  loss point for voltage |
     |	  | in AC mode	not  consistent |
     |	  | in parallel systems 	|
     +----+-----------------------------+
     |	  |				|
     | 51 | Warning  for locking in by- |
     |	  | pass mode after 3  consecu- |
     |	  | tive  overloads  within  30 |
     |	  | min 			|
     +----+-----------------------------+
     |	  |				|
     | 52 | Warning for three-phase  AC |
     |	  | input current unbalance	|
     +----+-----------------------------+
     |	  |				|
     | 53 | Warning  for  a three-phase |
     |	  | input current unbalance de- |
     |	  | tected in battery mode	|
     +----+-----------------------------+
     |	  |				|
     | 54 | Warning  for  Inverter  in- |
     |	  | ter-current unbalance	|
     +----+-----------------------------+
     |	  |				|
     | 55 | Programmable   outlets  cut |
     |	  | off pre-alarm		|
     +----+-----------------------------+
     |	  |				|
     | 56 | Warning for Battery replace |
     +----+-----------------------------+
     |	  |				|
     | 57 | Abnormal warning  on  input |
     |	  | phase angle 		|
     +----+-----------------------------+
     |	  |				|
     | 58 | Warning!! Cover of maintain |
     |	  | switch is open		|
     +----+-----------------------------+
     |	  |				|
     | 62 | EEPROM operation error	|
     +----+-----------------------------+

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 FuA <ef@math.uni-bonn.de>

SEE ALSO
     blazer_ser(8),   blazer_usb(8),  nutupsdrv(8),  ups.conf(5),  upsc(8),  up-
     scmd(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

Network UPS Tools 2.8.5.	   08/04/2026			    NUTDRV_QX(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=nutdrv_qx&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help