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

FreeBSD Manual Pages

  
 
  

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

NAME
     richcomm_usb - Driver UPS equipment using Richcomm dry-contact to USB solu-
     tion

SYNOPSIS
     richcomm_usb -h

     richcomm_usb -a UPS_NAME [OPTIONS]

	 Note

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

SUPPORTED HARDWARE
     The Richcomm dry-contact to USB solution is a  generic  interface	that  is
     used  to upgrade an existing (RS-232) contact closure UPS interface to USB.
     As such, all the limitations of the underlying  contact  closure  interface
     apply.  This means that you will only get the essentials in ups.status: OL,
     OB, and LB. See also genericups(8).

EXTRA ARGUMENTS
     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

BUGS
     Most contact-closure UPSes will not power down the load if the  line  power
     is  present. This can create a race when using secondary upsmon(8) systems.
     See the upsmon(8) man page for more information.

     The solution to both of these problems is to upgrade to  a  smart	protocol
     UPS of some kind that allows detection and proper load cycling on command.

AUTHORS
     *	 Peter van Valderen <p.v.valderen at probu.nl>

     *	 Dirk Teurlings <dirk at upexia.nl>

SEE ALSO
   The core driver:
     nutupsdrv(8)

   The generic serial driver:
     genericups(8)

   Internet resources:
     The NUT (Network UPS Tools) home page: https://www.networkupstools.org/

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

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

home | help