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  devel-
     opment.  If it works for managing your devices -- fine, but if you are run-
     ning it to try setting up a new device,  please  consider	the  newer  nut-
     drv_qx(8) instead, which should handle all Q* protocol variants for NUT.

     Please  do  also  report  if  your  device works with this driver, but nut-
     drv_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  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 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 speci-
	 fied. 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 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.

   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
	 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 de-
	 fined 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 bat-
     tery.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 val-
     ues 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  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.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.

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.

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.5.	   08/04/2026			   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+15.1.quarterly>

home | help