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

FreeBSD Manual Pages

  
 
  

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

NAME
       blazer_usb - Driver for Megatec/Q1 protocol USB based UPS equipment

SYNOPSIS
       blazer_usb -h

       blazer_usb -a UPS_NAME [OPTIONS]

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

NOTE
       Please note that	this driver is deprecated and will not receive new
       development. If it works	for managing your devices -- fine, but if you
       are running it to try setting up	a new device, please consider the
       newer nutdrv_qx(8) instead, which should	handle all Q* protocol
       variants	for NUT.

       Please do also report if	your device works with this driver, but
       nutdrv_qx(8) would not actually support it with any subdriver!

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 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
	   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	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 are 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.

   USB INTERFACE ONLY
       port = string
	   Some	value must be set, typically auto.

	       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
	   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.

       device =	regex
	   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
	   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
	   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 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).

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.

       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 ondelay and offdelay.

       shutdown.stayoff
	   Turn	off the	load and remain	off (see 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 GUESSTIMATION
       Due to popular demand, this driver will report a	guesstimated
       battery.charge value 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
       calculations are	giving you incorrect readings, remember	that you are
       the one who put in the values in	ups.conf(5), so	don't complain to the
       author. If you need something better, consider buy an 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
       blazer_ser(8), nutupsdrv(8), upsc(8), upscmd(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.2.	  04/17/2025			 BLAZER_USB(8)

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

home | help