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

FreeBSD Manual Pages

  
 
  

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

NAME
     apcsmart  -  Driver for American Power Conversion Smart Protocol UPS equip-
     ment

SYNOPSIS
     apcsmart -h

     apcsmart -a UPS_NAME [-x option=value ...]

	 Note

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

SUPPORTED HARDWARE
     The apcsmart driver should recognize (or at the very least, work with)  the
     majority  of  Smart-UPS  models -- which includes Smart-UPS, Matrix-UPS and
     Back-UPS lineups, among few other ones.

     Currently, we can roughly divide APC hardware into four groups  (note  that
     the  division  isn't strict by any means, and the borders between those are
     pretty fuzzy):

     [very] "old" models
	 These models usually have old APC logo, white color and no programmable
	 EEPROM; you won't find them listed anywhere on APC's site  either.  The
	 support  for  those will be usually based on driver's compatibility ta-
	 bles, or if the model (firmware) is not listed in those --  the  driver
	 will  try to follow the very basic subset of features, while still try-
	 ing to remain useful. Despite "smart" tagname, they often tend  to  be-
	 have  in  pretty  dumb way (see the section below about shutdown behav-
	 iour).

	 Example models:

	 *   Smart-UPS 2000I

	 *   Smart-UPS 900I

     "new" models
	 These models usually come from late 1990s / pre-2009  times.  They  are
	 often	referred to as "3rd. gen". For the most part, they have program-
	 mable EEPROM, report supported commands and  capabilities,  and  should
	 work just fine with the apcsmart driver.

     "microlink" models
	 WARNING:  These  are  not natively supported by apcsmart (or as of this
	 writing by apcupsd, for that matter, if you're wondering). Around 2007,
	 APC (now APC Schneider) decided to go back to	its  proprietary  roots,
	 and  all the new models (SMT, SMX, SURTD) use completely different pro-
	 tocol and cables. If you purchased a new APC UPS  --  that  uses  cable
	 with  RJ45  on the one end, and DB-9 on the other -- then you have such
	 model. Your only option to support it through	NUT  is  to  purchase  a
	 "legacy  communications  card" --  part #AP9620 (google AP9620 for more
	 details). Or if that's not an option, rely on official software.

	 UPDATE:. Later releases of apcupsd claimed support for new  APC  proto-
	 cols,	so it is worth checking if apcupsd software would work with your
	 device, and apcupsd-ups NUT driver would handle it as part of	NUT-man-
	 aged ecosystem.

     Microsol models
	 Several  Microsol  serial  models sold in Brazil have been rebranded as
	 APC Back-UPS, and the model numbers tend to start  with  "BZ".  If  you
	 have one of these "Nobreaks", they will not work with the apcsmart dri-
	 ver -- please see the solis(8) driver instead.

	 Example models:

	 *   Back-UPS BZ1200-BR

	 *   Back-UPS BZ2200BI-BR

     Another  thing  to  remember is that Smart protocol is not USB protocol. If
     you have UPS with both USB and serial ports, then depending on how you con-
     nect it, you will need either apcsmart or usbhid-ups driver.

CABLING
     This driver expects to see a 940-0024C cable or a clone by default. You can
     switch to the 940-0095B dual-mode cable support with the cable=  definition
     described below.

     If  your  940-xx24X cable is broken or missing, use this diagram to build a
     clone:

     https://www.networkupstools.org/cables.html#_940_0024c_clone

	 Note

	 The "xx" is either "00" for a short cable, or the number of feet  of  a
	 longer  cable.  The  "X" is a letter representing the minor revision of
	 the physical cable and its connectors ("C" and "E" are  commonly  found
	 revisions).  All  minor  revisions  should  use  the  same pin-outs and
	 wiring.

     You can specify alternate cable in ups.conf(5):

	 *cable*=940-0095B

     Alternatively, you can also provide it on the command line using:

	 -x *cable*=940-0095B

TTY MODES
     By default the driver works in canonical mode, but it proved to be a  prob-
     lem  in  Windows systems. Furthermore there's a possibility of some obscure
     serial cards or serial-USB converters that could cause  problems  as  well.
     You   can	 use  ttymode=	option	to  force  non-canonical  discipline  in
     ups.conf(5):

	 *ttymode*=raw

     Alternatively, you can also provide it on the command line using:

	 -x *ttymode*=raw

	 Note

	 Any other value will make the driver work in the canonical mode.

EXPLANATION OF SHUTDOWN METHODS SUPPORTED BY APC UPSES
     APC hardware supports a lot of shutdown methods, that themselves can differ
     in behaviour quite a bit, depending on the model.

     S (soft hibernate)
	 This is most basic command present in probably all APC models. It  will
	 hibernate  the  UPS,  and subsequently wake it up when the mains supply
	 returns.  The command doesn't work if the UPS is running on mains.

	 "old" models:
	     The behaviour here is unfortunately pretty  primitive  -  when  the
	     power  returns,  the  UPS	just wakes up. No grace periods, no min.
	     battery charge condition, etc. This is probably not what you want.

	 "new" models:
	     The behaviour here is as expected -- the power is cut off after the
	     EEPROM defined grace period. The UPS will wake up	when  the  power
	     returns,  after  the EEPROM defined delay AND if the EEPROM defined
	     min. battery charge level is met. The delay  is  counted  from  the
	     power's return.

     CS (aka "force OB hack")
	 This  is  a trick to make UPS power down even if it's running on mains.
	 Immediately before issuing S, "simulate power failure" is  issued.  The
	 remaining behaviour is as in S case.

	 There's  a  delay  between "simulate power failure" and S -- by default
	 set to 3.5s. You can control it through cshdelay option (allowed values
	 are from 0 to 9.9).

	 The name came from APC CS models, where such trick was  used  to  power
	 down  UPSes in consistent fashion using only S. It's better to use @nnn
	 command if your UPS supports it (and is not too old, see below).

     @nnn (hard hibernate)
	 This is basic command used to hibernate UPS regardless if it's  running
	 on  batteries or on mains. The option takes 3 digits argument which can
	 be used to specify additional wake-up delay (in 6 minute units).

	 "old" models:
	     The behaviour is -- unfortunately -- similarly primitive to S.  The
	     UPS  unconditionally  wakes up after nnn*6 minutes: it doesn't care
	     if the power returned !

		 Note
		 If nnn = 000, then UPS will do precisely nothing. On those mod-
		 els you should better specify nnn > 0, if you can estimate  the
		 kind of power problems that might be happening in your environ-
		 ment.
	     Another  thing  to consider with "old" models -- you might lose the
	     connection with the UPS, until it wakes up (with S, the serial con-
	     nection is kept alive).

	 "new" models:
	     All the usual variables defined in EEPROM are  respected  (see  S).
	     Additionally, if nnn > 0, the nnn*6 minutes are added to EEPROM de-
	     fined  delay.  UPS  will not power up if it's running on batteries,
	     contrary to what "old" models used to do -- the combined  delay  is
	     counted from the moment of power return.

	 Supposedly  there exist models that take 2 digits instead of 3. Just in
	 case, NUT also supports such variation. You have to provide  exactly  2
	 digits  to  trigger it (awd option, or argument to one of the supported
	 instant commands).

     K (delayed poweroff)
	 This is permanent poweroff -- the UPS will not wake  up  automatically.
	 On newer units, it will respect applicable EEPROM variables.

     Z (instant poweroff)
	 This  is  also permanent poweroff -- the UPS will not wake up automati-
	 cally. The poweroff is executed immediately.

SHUTDOWN CONTROL BY NUT
     There are three options used to control the shutdown behaviour.

     sdtype=[0-5]
	 This option takes a single digit (0-5) as an argument.  See  below  for
	 details.

     advorder=no|[0-4]+
	 This  option  takes string of digits as an argument. Methods listed are
	 tried in turn until one of them succeeds. Note that the meaning of dig-
	 its is different from sdtype. See below for details.

     awd=[0-9]{1,3}
	 This option lets you specify additional wake-up delay used by @. If you
	 provide exactly 2 digits, the driver will try 2 digits  variation  (see
	 previous  section for more info). Otherwise standard 3 digits variation
	 is used.  Note: the time unit is 6 minutes !

     Keep in mind that sdtype and advorder are mutually exclusive.  If	advorder
     is  provided,  sdtype  is ignored. If advorder is set to no, sdtype is used
     instead.

     If nothing is provided, NUT will assume sdtype=0 -- which is generally fine
     for anything not too ancient or not too quirky.

   SDTYPE
     The values permitted are from 0 to 5. Only one can be  specified.	Anything
     else will cause apcsmart to exit.

     0
	 issue	soft hibernate (S) if the UPS is running on batteries, otherwise
	 issue hard hibernate (@)

     1
	 issue soft hibernate (S) (if on batteries), and  if  it  fails  (or  on
	 mains) -- try hard hibernate (@)

     2
	 issue instant poweroff (Z)

     3
	 issue delayed poweroff (K)

     4
	 issue "force OB hack" (CS)

     5
	 issue hard hibernate (@)

	 Note

	 Hard hibernate's additional wake-up delay can be provided by awd.

   ADVORDER
     The  argument  is	either	a  word no, or a string of 1..5 digits in [0..4]
     range. Each digit maps to the one of shutdown methods supported by APC  UP-
     Ses.  Methods listed in this way are tried in order, until one of them suc-
     ceeds.

     If advorder is undefined or set to no, sdtype is used instead.

     The mapping is as follows:

     0	 soft hibernate (S)

     1	 hard hibernate (@)

     2	 delayed poweroff (K)

     3	 instant poweroff (Z)

     4	 "force OB hack" (CS)

	 Note

	 Hard hibernate's additional wake-up delay can be provided by awd.

IGNORING LB STATE
     APC units -- even if they report LB mode -- will not go into shutdown auto-
     matically. This gives us even more control with reference to "when to actu-
     ally shutdown PSU". Since version 2.6.2, NUT supports  ignorelb  option  in
     driver's  section	of  ups.conf(5). When such option is in effect, the core
     driver will ignore LB state as reported by specific driver and start  shut-
     down basing the decision only on two conditions:

	 battery.charge < battery.charge.low

     OR

	 battery.runtime < battery.runtime.low

     Of  course  --  if  any of the variables are not available, the appropriate
     condition is not checked. If you want to explicitly disable one of the con-
     ditions, simply override the right hand variable causing the  condition  to
     always evaluate to false (you can even provide negative numbers).

     APC  UPSes  don't	have battery.charge.low -- you will have to define it if
     you want to use such condition (prefix the variable with override.  or  de-
     fault.).

     "New"  units  have  battery.runtime.low,  but depending on battery quality,
     firmware version, calibration and UPS load -- this variable can be underes-
     timated quite a bit -- especially right after going into OB state. This  in
     turn  can cause LB to be asserted, which under normal conditions will cause
     NUT to initiate the shutdown. You might want to disable this condition  en-
     tirely, when relying on ignorelb option (this was actually the main motiva-
     tion behind introduction of such feature).

     Simple example:

	 [apc]
	     ignorelb
	     override.battery.charge.low = 15
	     override.battery.runtime.low = -1

     This  would  cause  apcsmart  to  go into shutdown only if detected battery
     charge < 15%. Runtime condition is always false in this example.

     You could ask -- why bother? Well, the reason is already hinted above.  APC
     units  can be very picky about the batteries, and their firmware can under-
     estimate the remaining  runtime  (especially  right  after  going	into  OB
     state).  ignorelb	option	and  override.* let you remain in control of the
     UPS, not UPS in control of you.

     Furthermore, this allows to specify conditions similarly to how  it's  done
     in apcupsd daemon, so it should be welcome by people used to that software.

SUPPORTED INSTANT COMMANDS
     The apcsmart driver exposes following instant commands:

     shutdown.return
	 executes soft hibernate

     shutdown.return cs
	 executes "force OB hack"

     shutdown.return at:<nbr>
	 executes "hard hibernate" with <nbr>*6 minutes additional wake-up delay
	 (<nbr> format is the same as of awd option)

     shutdown.stayoff
	 executes "delayed poweroff"

     load.off
	 executes "instant poweroff"

     All  the above commands must be issued 2nd time to have any effect (no less
     than 3 seconds, and no more than 15 seconds after the initial call).  Those
     commands  are  mostly  useful  for manual testing, when your machine is not
     powered by the UPS you're testing.

     Other supported commands:

     *	 load.on

     *	 test.panel.start

     *	 test.failure.start

     *	 test.battery.start

     *	 test.battery.stop

     *	 bypass.start

     *	 bypass.stop

     *	 calibrate.start

     *	 calibrate.stop

PREVIOUS DRIVER VERSION
     Previous driver is still available as apcsmart-old,  should  there  be  any
     need  to  use earlier version (bugs, incompatibilities with new functional-
     ity, etc.). In due time, apcsmart-old will be phased  out	completely,  but
     this won't happen until the new version gets solid exposure with no pending
     issues.

BUGS
     Some older APC UPS models return bogus data in the status register during a
     front  panel  test.  This is usually detected and discarded, but some other
     unexpected values have occasionally slipped through.

     APC UPS models with both USB and serial ports require a  power  cycle  when
     switching from USB communication to serial, and perhaps vice versa.

AUTHORS AND HISTORY
     Nigel Metheringham <Nigel.Metheringham@Intechnology.co.uk> (drawing heavily
     on  the  original	apcsmart  driver by Russell Kroll) wrote a driver called
     newapc for a time, which was renamed in the 1.5 series.

     In 2.6.2 that driver was renamed finally to apcsmart-old, being  superseded
     by  this  updated version with new features which currently holds the apcs-
     mart name, and is maintained by Michal Soltys <soltys@ziu.info>.

SEE ALSO
     nutupsdrv(8), ups.conf(5), usbhid-ups(8), solis(8)

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

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

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

home | help