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

FreeBSD Manual Pages

  
 
  

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

NAME
     clone  - Clone an UPS, treating its outlet as if it were an UPS (with shut-
     down INSTCMD support)

SYNOPSIS
     clone -h

     clone -a UPS_NAME [OPTIONS]

	 Note

	 This man page only documents the specific features of the clone 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 out-
     let of a device and deal with this output as if it were a normal UPS.

     Unlike  the clone-outlet(8) driver, this driver represents a manageable de-
     vice that can be used both for  monitoring  and  for  client  computer  and
     UPS/ePDU  outlet  shutdowns  (it supports sending relevant instant commands
     during run time).

     Unlike dummy-ups(8), 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 us-
     ing 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 re-
	 maining 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 config-
     ured for that driver) allowing the higher-priority devices (likely  includ-
     ing the NUT server) to enjoy a longer on-battery life.

     The  clone driver responsible for outlet power state changes would not nor-
     mally be monitored directly (e.g. to avoid unfortunate direct shutdown  re-
     quests 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 file (or Windows named pipe) for  connec-
	 tion to the "real" device driver.

     load.off=command
	 Recommended. Set the command on the "real" UPS driver that will be used
	 to  switch  off the outlet. You need both load.off and load.on in order
	 to power cycle the outlet. Otherwise, shutting down the clients powered
	 by an outlet is a one way street (see IMPORTANT).

     load.on=command
	 Recommended. Set the command on the "real" UPS driver that will be used
	 to switch on the outlet. You need both load.off and load.on in order to
	 power cycle the outlet. Otherwise, shutting down the clients powered by
	 an outlet is a one way street (see IMPORTANT).

     load.status=value
	 Recommended. Set the variable on the "real" UPS  driver  that	will  be
	 used to indicate the outlet status (i.e. on/off). If not specified, the
	 clone	driver will attempt to keep track of the outlet status, but this
	 is less reliable.

     offdelay=num
	 Set the timer (in seconds) before the outlet is turned  off  after  the
	 shutdown condition (OB LB) for this outlet is met or a command to shut-
	 down was issued. Defaults to 120 seconds.

     ondelay=num
	 Set  the  timer  (in  seconds)  for the outlet to switch on in case the
	 power returns after the outlet has been switched off.	Defaults  to  30
	 seconds.

     mincharge=value
	 Set the remaining battery level when the clone UPS switches to LB (per-
	 cent).

     minruntime=value
	 Set  the  remaining  battery  runtime when the clone UPS switches to LB
	 (seconds).

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 ex-
     ample:

	   [realups]
	      driver = usbhid-ups
	      port = auto

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

     This driver supports instant commands to initiate a forced shutdown for up-
     smon or similar clients which MONITOR this virtual UPS device, if the  out-
     let status is currently on and no other shutdown was initiated yet (setting
     the  virtual  UPS	shutdown  delay timer to offdelay and issuing an FSD via
     ups.status):

     *	 shutdown.return -- power the outlet back on after ondelay;

     *	 shutdown.stayoff -- keep the outlet off.

     Such commands are propagated to the "real" driver using the NUT socket pro-
     tocol (using command names specified in the  load.off  and  load.on  driver
     configuration  options), if the shutdown or start timers are set at the mo-
     ment, or if the "real" device is not "online" and its known battery  charge
     or runtime are below the configured "low" thresholds.

     The outlet status is determined using the name specified by the load.status
     driver option if set, or is just assumed by latest completed shutdown/start
     operation (using unknown outlet number).

     The  driver does not support a common NUT device shutdown operation as such
     (clone -k just prints an error and bails out).

     This driver also supports setting certain NUT variables at run-time:

     *	 battery.charge.low -- see mincharge in driver options;

     *	 battery.runtime.low -- see minruntime in driver options.

     Compared to the "real" driver's readings, this driver also adds  (or  over-
     rides)  the  following  data  points:  ups.delay.shutdown, ups.delay.start,
     ups.timer.shutdown and ups.timer.start. It keeps track of	"real"	driver's
     values  of  battery.charge and battery.runtime (actual current readings) to
     decide on automated outlet shutdown later on.

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)
     data  server  that  it  is OK to initiate the shutdown sequence, the server
     will latch the FSD status, and it will not be possible to restart the  sys-
     tems 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 itself, 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 UPS driver will immedi-
     ately 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, your clients will lose power without
     warning.

     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-outlet(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.5.	   08/04/2026				CLONE(8)

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

home | help