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

FreeBSD Manual Pages

  
 
  

home | help
CLONE-OUTLET(8)			  NUT Manual		       CLONE-OUTLET(8)

NAME
       clone-outlet - Clone an UPS, treating its outlet	as if it were an UPS
       (monitoring only)

SYNOPSIS
       clone-outlet -h

       clone-outlet -a UPS_NAME	[OPTIONS]

	   Note

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

DESCRIPTION
       This driver, which sits on top of another driver's local	UNIX socket
       file (or	Windows	named pipe), allows users to group clients to a
       particular outlet of a device and deal with this	output as if it	were a
       normal UPS.

       Unlike the clone(8) driver or dummy-ups(8) driver running in repeater
       mode, this driver represents a read-only	device for monitoring and
       shutdowns (it does not accept setting any values	or sending instant
       commands	during run time).

       Unlike dummy-ups(8) generally, this driver does not require a running
       upsd data server	nor use	the networked NUT protocol to talk to the
       "real" driver (which may	be remote in case of dummy-ups repeater	mode).

       This driver does	not create a completely	new virtual device, but
       replaces	or extends some	of the original	readings reported by the
       "real" driver using information from the	specified outlet, and relays
       all other readings as they were.

       Remote clients like upsmon can MONITOR the device entry presented by
       the data	server with this driver	(and the "real"	driver)	running	and
       published.

       A larger	deployment with	one or more lower-priority devices collected
       on a manageable outlet of an UPS	or ePDU	would likely see several
       drivers set up on the system actually capable of	interactions with the
       UPS and running the NUT data server upsd(8) (and	likely powered by
       another outlet):

          a "real" driver talking to the UPS;

          a clone driver talking to the "real"	driver and issuing outlet
	   power-off (or power-cycle) based on relatively high thresholds for
	   remaining battery charge and/or runtime of the actual UPS (or
	   explicit instant commands), with such operations first setting the
	   respective timers for the outlet on the "real" driver, and the
	   "FSD" flag among states of the virtual UPS status;

          possibly a clone-outlet driver which	is read-only and interprets
	   the outlet timer values as triggers for "FSD" or "OFF" flags
	   reported among states of the	virtual	UPS status.

       With this approach, the lower-priority systems collected	on such	outlet
       would run the NUT upsmon(8) client to MONITOR the virtual UPS presented
       by the read-only	clone-outlet driver and	shut down as soon as the "FSD"
       flag is raised (fairly early, based on charge and/or runtime thresholds
       configured for that driver) allowing the	higher-priority	devices
       (likely including the NUT server) to enjoy a longer on-battery life.

       The clone driver	responsible for	outlet power state changes would not
       normally	be monitored directly (e.g. to avoid unfortunate direct
       shutdown	requests from those clients), although it can be (instead of
       clone-outlet) in	sufficiently trusted networks.

EXTRA ARGUMENTS
       This driver supports the	following settings:

       port=drivername-devicename
	   Required. The standard NUT driver port setting, here	it provides
	   the name of the local Unix socket (or named Windows pipe) for
	   connection to the "real" driver.

       prefix=outlet.N
	   Required. Specify the outlet	prefix as known	on the original
	   driver. The subset of data points reported by the "real" UPS	driver
	   for the actual device on this prefix	would be reported as data
	   points of the virtual UPS maintained	by this	driver.

IMPLEMENTATION
       The port	specification in the ups.conf(5) should	reference the local
       driver socket (or Windows named pipe) that the "real" UPS driver	is
       using. For example:

	     [realups]
		driver = usbhid-ups
		port = auto

	     [clone-outlet-1]
		driver = clone-outlet
		port = usbhid-ups-realups
		prefix = outlet.1
		desc = "Outlet 1 of the	Real UPS"
		[...]

       The driver internally interprets	"real" driver's	information about
       shutdown	delay and shutdown timer, whole	UPS status and this outlet's
       status, and relays other	data points as they were.

       If the outlet supports and reports a delayed power-off, the virtual UPS
       would issue an FSD via ups.status for its clients to shut down safely.

       In more detail:

       Given the (required) prefix value such as outlet.1, the driver would
       specifically keep track of <prefix>.status, <prefix>.delay.shutdown,
       and <prefix>.timer.shutdown data	points reported	by the "real" driver.
       Numeric values of the *.shutdown	readings would be noted	by this
       driver, and the boolean outlet status ("off" or otherwise) will be
       remembered. These values	will also be re-published by this driver "as
       is".

       The ups.status from the "real" driver would be remembered, but not
       re-published by this driver immediately.	Instead, it would be published
       during regular "update info" loop cycles	either:

          with	the "OFF" state	added (if <prefix>.status indicates the	outlet
	   is "off"),

          or with the "FSD" state prepended (if <prefix>.timer.shutdown is
	   non-negative	and does not exceed the	<prefix>.delay.shutdown
	   value),

          or "as is" if the outlet power state	is "not	critical".

IMPORTANT
       Unlike a	real UPS, you should not configure a upsmon primary mode for
       this driver. When a upsmon(8) primary sees the OB LB flags and tells
       the upsd(8) server it is	OK to initiate the shutdown sequence, the
       server will latch the FSD status, and it	will not be possible to
       restart the systems connected without restarting	the upsd server.

       This will be a problem if the power returns after the clone UPS
       initiated the shutdown sequence on its outlet, but returns before the
       real UPS	begins shutting	down. The solution is in the clone driver,
       that will insert	the FSD	flag if	needed without the help	of an upsmon
       primary.

CAVEATS
       The clone UPS will follow the status on the real	UPS driver. You	can
       only make the clone UPS shutdown	earlier	than the real UPS driver, not
       later. If the real UPS driver initiates a shutdown, the clone-outlet
       UPS driver will immediately follow.

       Be aware	that the commands to shutdown/restart an outlet	on the real
       UPS drivers are not affected, so	if you tell the	real UPS driver	to
       shutdown	the outlet of the clone	UPS driver immediately,	your clients
       will lose power without warning.	A delayed outlet power-off should
       propagate as FSD, and the delay should be sufficiently long to allow
       for client shutdowns.

       If you use service management frameworks	like systemd or	SMF to manage
       the dependencies	between	driver instances and other units, then you may
       have to set up special dependencies (e.g. with systemd "drop-in"
       snippet files) to queue your clone drivers to start after the "real"
       device drivers.

AUTHOR
       Arjen de	Korte <adkorte-guest@alioth.debian.org>

SEE ALSO
       upscmd(8), upsrw(8), ups.conf(5), clone(8), nutupsdrv(8)

   Dummy driver:
       The "repeater" mode of dummy-ups	driver is in some ways similar to the
       clone and clone-outlet drivers, by relaying information from a locally
       or remotely running "real" device driver	(and NUT data server).

       dummy-ups(8)

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

Network	UPS Tools 2.8.4.	  11/02/2025		       CLONE-OUTLET(8)

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

home | help