Network Working Group                                    J. Case, Editor
Request for Comments: 1628                   SNMP Research, Incorporated
Category: Standards Track                                       May 1994


                   UPS Management Information Base

Status of this Memo

  This document specifies an Internet standards track protocol for the
  Internet community, and requests discussion and suggestions for
  improvements.  Please refer to the current edition of the "Internet
  Official Protocol Standards" (STD 1) for the standardization state
  and status of this protocol.  Distribution of this memo is unlimited.

Table of Contents

  1. Introduction ..............................................    1
  2. The SNMPv2 Network Management Framework ...................    2
  2.1 Object Definitions .......................................    2
  3. Overview ..................................................    2
  4. Definitions ...............................................    3
  4.1 The Device Identification Group...........................    4
  4.2 The Battery Group ........................................    5
  4.3 The Input Group ..........................................    7
  4.4 The Output Group .........................................    9
  4.5 The Bypass Group .........................................   12
  4.6 The Alarm Group ..........................................   13
  4.7 The Test Group ...........................................   19
  4.8 The Control Group ........................................   23
  4.9 The Configuration Group ..................................   26
  5. Acknowledgements ..........................................   43
  6. References ................................................   44
  7. Security Considerations ...................................   45
  8. Author's Address ..........................................   45

1.  Introduction

  This memo defines a portion of the Management Information Base (MIB)
  for use with network management protocols in the Internet community.
  In particular, it defines objects for managing uninterruptible power
  supply (UPS) systems.









Case                                                            [Page 1]

RFC 1628                        UPS MIB                         May 1994


2.  The SNMPv2 Network Management Framework

  The SNMPv2 Network Management Framework consists of four major
  components.  They are:

     o    RFC 1442 which defines the SMI, the mechanisms used for
          describing and naming objects for the purpose of management.

     o    STD 17, RFC 1213 defines MIB-II, the core set of managed
          objects for the Internet suite of protocols.

     o    RFC 1445 which defines the administrative and other
          architectural aspects of the framework.

     o    RFC 1448 which defines the protocol used for network access
          to managed objects.

  The Framework permits new objects to be defined for the purpose of
  experimentation and evaluation.

2.1.  Object Definitions

  Managed objects are accessed via a virtual information store, termed
  the Management Information Base or MIB.  Objects in the MIB are
  defined using the subset of Abstract Syntax Notation One (ASN.1)
  defined in the SMI.  In particular, each object type is named by an
  OBJECT IDENTIFIER, an administratively assigned name.  The object
  type together with an object instance serves to uniquely identify a
  specific instantiation of the object.  For human convenience, we
  often use a textual string, termed the descriptor, to refer to the
  object type.

3.  Overview

  This document defines the managed objects for Uninterruptible Power
  Supplies which are to be manageable via the Simple Network Management
  Protocol (SNMP).














Case                                                            [Page 2]

RFC 1628                        UPS MIB                         May 1994


4.  Definitions

  UPS-MIB DEFINITIONS ::= BEGIN

  IMPORTS
      MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE,
      OBJECT-IDENTITY, Counter32, Gauge32, Integer32
          FROM SNMPv2-SMI
      DisplayString, TimeStamp, TimeInterval, TestAndIncr,
        AutonomousType
          FROM SNMPv2-TC
      MODULE-COMPLIANCE, OBJECT-GROUP
          FROM SNMPv2-CONF;


  upsMIB MODULE-IDENTITY
      LAST-UPDATED "9402230000Z"
      ORGANIZATION "IETF UPS MIB Working Group"
      CONTACT-INFO
             "        Jeffrey D. Case

               Postal: SNMP Research, Incorporated
                       3001 Kimberlin Heights Road
                       Knoxville, TN  37920
                       US

                  Tel: +1 615 573 1434
                  Fax: +1 615 573 9197

               E-mail: [email protected]"
      DESCRIPTION
              "The MIB module to describe Uninterruptible Power
              Supplies."
      ::= { mib-2 33 }

  PositiveInteger ::= TEXTUAL-CONVENTION
      DISPLAY-HINT "d"
      STATUS       current
      DESCRIPTION
              "This data type is a non-zero and non-negative value."
      SYNTAX       INTEGER (1..2147483647)

  NonNegativeInteger ::= TEXTUAL-CONVENTION
      DISPLAY-HINT "d"
      STATUS       current
      DESCRIPTION
              "This data type is a non-negative value."
      SYNTAX       INTEGER (0..2147483647)



Case                                                            [Page 3]

RFC 1628                        UPS MIB                         May 1994


  upsObjects            OBJECT IDENTIFIER ::= { upsMIB 1 }


  --
  -- The Device Identification group.
  --      All objects in this group except for upsIdentName and
  --      upsIdentAttachedDevices are set at device initialization
  --      and remain static.
  --

  upsIdent              OBJECT IDENTIFIER ::= { upsObjects 1 }

  upsIdentManufacturer OBJECT-TYPE
      SYNTAX     DisplayString (SIZE (0..31))
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The name of the UPS manufacturer."
      ::= { upsIdent 1 }

  upsIdentModel OBJECT-TYPE
      SYNTAX     DisplayString (SIZE (0..63))
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The UPS Model designation."
      ::= { upsIdent 2 }

  upsIdentUPSSoftwareVersion OBJECT-TYPE
      SYNTAX     DisplayString (SIZE (0..63))
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The UPS firmware/software version(s).  This variable
              may or may not have the same value as
              upsIdentAgentSoftwareVersion in some implementations."
      ::= { upsIdent 3 }

  upsIdentAgentSoftwareVersion OBJECT-TYPE
      SYNTAX     DisplayString (SIZE (0..63))
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The UPS agent software version.  This variable may or
              may not have the same value as
              upsIdentUPSSoftwareVersion in some implementations."
      ::= { upsIdent 4 }




Case                                                            [Page 4]

RFC 1628                        UPS MIB                         May 1994


  upsIdentName OBJECT-TYPE
      SYNTAX     DisplayString (SIZE(0..63))
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "A string identifying the UPS.  This object should be
              set by the administrator."
      ::= { upsIdent 5 }

  upsIdentAttachedDevices OBJECT-TYPE
      SYNTAX     DisplayString (SIZE(0..63))
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "A string identifying the devices attached to the
              output(s) of the UPS.  This object should be set by
              the administrator."
      ::= { upsIdent 6 }


  --
  -- Battery Group
  --

  upsBattery            OBJECT IDENTIFIER ::= { upsObjects 2 }

  upsBatteryStatus OBJECT-TYPE
      SYNTAX     INTEGER {
          unknown(1),
          batteryNormal(2),
          batteryLow(3),
          batteryDepleted(4)
      }
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The indication of the capacity remaining in the UPS
              system's batteries.   A value of batteryNormal
              indicates that the remaining run-time is greater than
              upsConfigLowBattTime.  A value of batteryLow indicates
              that the remaining battery run-time is less than or
              equal to upsConfigLowBattTime.  A value of
              batteryDepleted indicates that the UPS will be unable
              to sustain the present load when and if the utility
              power is lost (including the possibility that the
              utility power is currently absent and the UPS is
              unable to sustain the output)."
      ::= { upsBattery 1 }



Case                                                            [Page 5]

RFC 1628                        UPS MIB                         May 1994


  upsSecondsOnBattery OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "seconds"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "If the unit is on battery power, the elapsed time
              since the UPS last switched to battery power, or the
              time since the network management subsystem was last
              restarted, whichever is less.  Zero shall be returned
              if the unit is not on battery power."
      ::= { upsBattery 2 }

  upsEstimatedMinutesRemaining OBJECT-TYPE
      SYNTAX     PositiveInteger
      UNITS      "minutes"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "An estimate of the time to battery charge depletion
              under the present load conditions if the utility power
              is off and remains off, or if it were to be lost and
              remain off."
      ::= { upsBattery 3 }

  upsEstimatedChargeRemaining OBJECT-TYPE
      SYNTAX     INTEGER (0..100)
      UNITS      "percent"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "An estimate of the battery charge remaining expressed
              as a percent of full charge."
      ::= { upsBattery 4 }

  upsBatteryVoltage OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 Volt DC"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The magnitude of the present battery voltage."
      ::= { upsBattery 5 }

  upsBatteryCurrent OBJECT-TYPE
      SYNTAX     Integer32
      UNITS      "0.1 Amp DC"
      MAX-ACCESS read-only



Case                                                            [Page 6]

RFC 1628                        UPS MIB                         May 1994


      STATUS     current
      DESCRIPTION
              "The present battery current."
      ::= { upsBattery 6 }

  upsBatteryTemperature OBJECT-TYPE
      SYNTAX     Integer32
      UNITS      "degrees Centigrade"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The ambient temperature at or near the UPS Battery
              casing."
      ::= { upsBattery 7 }


  --
  -- Input Group
  --

  upsInput              OBJECT IDENTIFIER ::= { upsObjects 3 }

  upsInputLineBads OBJECT-TYPE
      SYNTAX     Counter32
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "A count of the number of times the input entered an
              out-of-tolerance condition as defined by the
              manufacturer.  This count is incremented by one each
              time the input transitions from zero out-of-tolerance
              lines to one or more input lines out-of-tolerance."
      ::= { upsInput 1 }


  upsInputNumLines OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The number of input lines utilized in this device.
              This variable indicates the number of rows in the
              input table."
      ::= { upsInput 2 }

  upsInputTable OBJECT-TYPE
      SYNTAX     SEQUENCE OF UpsInputEntry
      MAX-ACCESS not-accessible



Case                                                            [Page 7]

RFC 1628                        UPS MIB                         May 1994


      STATUS     current
      DESCRIPTION
              "A list of input table entries.  The number of entries
              is given by the value of upsInputNumLines."
      ::= { upsInput 3 }

  upsInputEntry OBJECT-TYPE
      SYNTAX     UpsInputEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "An entry containing information applicable to a
              particular input line."
      INDEX { upsInputLineIndex }
      ::= { upsInputTable 1 }

  UpsInputEntry ::= SEQUENCE {
      upsInputLineIndex   PositiveInteger,
      upsInputFrequency   NonNegativeInteger,
      upsInputVoltage     NonNegativeInteger,
      upsInputCurrent     NonNegativeInteger,
      upsInputTruePower   NonNegativeInteger
  }

  upsInputLineIndex OBJECT-TYPE
      SYNTAX     PositiveInteger
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "The input line identifier."
      ::= { upsInputEntry 1 }

  upsInputFrequency OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 Hertz"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present input frequency."
      ::= { upsInputEntry 2 }

  upsInputVoltage OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The magnitude of the present input voltage."



Case                                                            [Page 8]

RFC 1628                        UPS MIB                         May 1994


      ::= { upsInputEntry 3 }

  upsInputCurrent OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 RMS Amp"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The magnitude of the present input current."
      ::= { upsInputEntry 4 }

  upsInputTruePower OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "Watts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The magnitude of the present input true power."
      ::= { upsInputEntry 5 }


  --
  -- The Output group.
  --

  upsOutput             OBJECT IDENTIFIER ::= { upsObjects 4 }

  upsOutputSource OBJECT-TYPE
      SYNTAX     INTEGER {
          other(1),
          none(2),
          normal(3),
          bypass(4),
          battery(5),
          booster(6),
          reducer(7)
      }
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present source of output power.  The enumeration
              none(2) indicates that there is no source of output
              power (and therefore no output power), for example,
              the system has opened the output breaker."
      ::= { upsOutput 1 }

  upsOutputFrequency OBJECT-TYPE
      SYNTAX     NonNegativeInteger



Case                                                            [Page 9]

RFC 1628                        UPS MIB                         May 1994


      UNITS      "0.1 Hertz"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present output frequency."
      ::= { upsOutput 2 }

  upsOutputNumLines OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The number of output lines utilized in this device.
              This variable indicates the number of rows in the
              output table."
      ::= { upsOutput 3 }

  upsOutputTable OBJECT-TYPE
      SYNTAX     SEQUENCE OF UpsOutputEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "A list of output table entries.  The number of
              entries is given by the value of upsOutputNumLines."
      ::= { upsOutput 4 }

  upsOutputEntry OBJECT-TYPE
      SYNTAX     UpsOutputEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "An entry containing information applicable to a
              particular output line."
      INDEX { upsOutputLineIndex }
      ::= { upsOutputTable 1 }

  UpsOutputEntry ::= SEQUENCE {
      upsOutputLineIndex   PositiveInteger,
      upsOutputVoltage     NonNegativeInteger,
      upsOutputCurrent     NonNegativeInteger,
      upsOutputPower       NonNegativeInteger,
      upsOutputPercentLoad INTEGER
  }

  upsOutputLineIndex OBJECT-TYPE
      SYNTAX     PositiveInteger
      MAX-ACCESS not-accessible
      STATUS     current



Case                                                           [Page 10]

RFC 1628                        UPS MIB                         May 1994


      DESCRIPTION
              "The output line identifier."
      ::= { upsOutputEntry 1 }

  upsOutputVoltage OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present output voltage."
      ::= { upsOutputEntry 2 }

  upsOutputCurrent OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 RMS Amp"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present output current."
      ::= { upsOutputEntry 3 }

  upsOutputPower OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "Watts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present output true power."
      ::= { upsOutputEntry 4 }

  upsOutputPercentLoad OBJECT-TYPE
      SYNTAX     INTEGER (0..200)
      UNITS      "percent"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The percentage of the UPS power capacity presently
              being used on this output line, i.e., the greater of
              the percent load of true power capacity and the
              percent load of VA."
      ::= { upsOutputEntry 5 }









Case                                                           [Page 11]

RFC 1628                        UPS MIB                         May 1994


  --
  -- The Bypass group.
  --

  upsBypass             OBJECT IDENTIFIER ::= { upsObjects 5 }

  upsBypassFrequency OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 Hertz"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present bypass frequency."
      ::= { upsBypass 1 }

  upsBypassNumLines OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The number of bypass lines utilized in this device.
              This entry indicates the number of rows in the bypass
              table."
      ::= { upsBypass 2 }

  upsBypassTable OBJECT-TYPE
      SYNTAX     SEQUENCE OF UpsBypassEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "A list of bypass table entries.  The number of
              entries is given by the value of upsBypassNumLines."
      ::= { upsBypass 3 }

  upsBypassEntry OBJECT-TYPE
      SYNTAX     UpsBypassEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "An entry containing information applicable to a
              particular bypass input."
      INDEX { upsBypassLineIndex }
      ::= { upsBypassTable 1 }

  UpsBypassEntry ::= SEQUENCE {
      upsBypassLineIndex  PositiveInteger,
      upsBypassVoltage    NonNegativeInteger,
      upsBypassCurrent    NonNegativeInteger,



Case                                                           [Page 12]

RFC 1628                        UPS MIB                         May 1994


      upsBypassPower      NonNegativeInteger
  }

  upsBypassLineIndex OBJECT-TYPE
      SYNTAX     PositiveInteger
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "The bypass line identifier."
      ::= { upsBypassEntry 1 }

  upsBypassVoltage OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present bypass voltage."
      ::= { upsBypassEntry 2 }

  upsBypassCurrent OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 RMS Amp"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present bypass current."
      ::= { upsBypassEntry 3 }

  upsBypassPower OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "Watts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The present true power conveyed by the bypass."
      ::= { upsBypassEntry 4 }


  --
  -- The Alarm group.
  --

  upsAlarm              OBJECT IDENTIFIER ::= { upsObjects 6 }

  upsAlarmsPresent OBJECT-TYPE
      SYNTAX     Gauge32
      MAX-ACCESS read-only



Case                                                           [Page 13]

RFC 1628                        UPS MIB                         May 1994


      STATUS     current
      DESCRIPTION
              "The present number of active alarm conditions."
      ::= { upsAlarm 1 }

  upsAlarmTable OBJECT-TYPE
      SYNTAX     SEQUENCE OF UpsAlarmEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "A list of alarm table entries.  The table contains
              zero, one, or many rows at any moment, depending upon
              the number of alarm conditions in effect.  The table
              is initially empty at agent startup.  The agent
              creates a row in the table each time a condition is
              detected and deletes that row when that condition no
              longer pertains.  The agent creates the first row with
              upsAlarmId equal to 1, and increments the value of
              upsAlarmId each time a new row is created, wrapping to
              the first free value greater than or equal to 1 when
              the maximum value of upsAlarmId would otherwise be
              exceeded.  Consequently, after multiple operations,
              the table may become sparse, e.g., containing entries
              for rows 95, 100, 101, and 203 and the entries should
              not be assumed to be in chronological order because
              upsAlarmId might have wrapped.

              Alarms are named by an AutonomousType (OBJECT
              IDENTIFIER), upsAlarmDescr, to allow a single table to
              reflect well known alarms plus alarms defined by a
              particular implementation, i.e., as documented in the
              private enterprise MIB definition for the device.  No
              two rows will have the same value of upsAlarmDescr,
              since alarms define conditions.  In order to meet this
              requirement, care should be taken in the definition of
              alarm conditions to insure that a system cannot enter
              the same condition multiple times simultaneously.

              The number of rows in the table at any given time is
              reflected by the value of upsAlarmsPresent."
      ::= { upsAlarm 2 }

  upsAlarmEntry OBJECT-TYPE
      SYNTAX     UpsAlarmEntry
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "An entry containing information applicable to a



Case                                                           [Page 14]

RFC 1628                        UPS MIB                         May 1994


              particular alarm."
      INDEX { upsAlarmId }
      ::= { upsAlarmTable 1 }

  UpsAlarmEntry ::= SEQUENCE {
      upsAlarmId          PositiveInteger,
      upsAlarmDescr       AutonomousType,
      upsAlarmTime        TimeStamp
  }

  upsAlarmId OBJECT-TYPE
      SYNTAX     PositiveInteger
      MAX-ACCESS not-accessible
      STATUS     current
      DESCRIPTION
              "A unique identifier for an alarm condition.  This
              value must remain constant."
      ::= { upsAlarmEntry 1 }

  upsAlarmDescr OBJECT-TYPE
      SYNTAX     AutonomousType
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "A reference to an alarm description object.  The
              object referenced should not be accessible, but rather
              be used to provide a unique description of the alarm
              condition."
      ::= { upsAlarmEntry 2 }

  upsAlarmTime OBJECT-TYPE
      SYNTAX     TimeStamp
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The value of sysUpTime when the alarm condition was
              detected.  If the alarm condition was detected at the
              time of agent startup and presumably existed before
              agent startup, the value of upsAlarmTime shall equal
              0."
      ::= { upsAlarmEntry 3 }


  --
  -- Well known alarm conditions.
  --

  upsWellKnownAlarms    OBJECT IDENTIFIER ::= { upsAlarm 3 }



Case                                                           [Page 15]

RFC 1628                        UPS MIB                         May 1994


  upsAlarmBatteryBad OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "One or more batteries have been determined to require
              replacement."
      ::= { upsWellKnownAlarms  1 }

  upsAlarmOnBattery OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The UPS is drawing power from the batteries."
      ::= { upsWellKnownAlarms  2 }

  upsAlarmLowBattery OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The remaining battery run-time is less than or equal
              to upsConfigLowBattTime."
      ::= { upsWellKnownAlarms  3 }


  upsAlarmDepletedBattery OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The UPS will be unable to sustain the present load
              when and if the utility power is lost."
      ::= { upsWellKnownAlarms  4 }

  upsAlarmTempBad OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "A temperature is out of tolerance."
      ::= { upsWellKnownAlarms  5 }

  upsAlarmInputBad OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "An input condition is out of tolerance."
      ::= { upsWellKnownAlarms  6 }

  upsAlarmOutputBad OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "An output condition (other than OutputOverload) is
              out of tolerance."
      ::= { upsWellKnownAlarms  7 }

  upsAlarmOutputOverload OBJECT-IDENTITY



Case                                                           [Page 16]

RFC 1628                        UPS MIB                         May 1994


      STATUS     current
      DESCRIPTION
              "The output load exceeds the UPS output capacity."
      ::= { upsWellKnownAlarms  8 }

  upsAlarmOnBypass OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The Bypass is presently engaged on the UPS."
      ::= { upsWellKnownAlarms  9 }

  upsAlarmBypassBad OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The Bypass is out of tolerance."
      ::= { upsWellKnownAlarms 10 }

  upsAlarmOutputOffAsRequested OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The UPS has shutdown as requested, i.e., the output
              is off."
      ::= { upsWellKnownAlarms 11 }

  upsAlarmUpsOffAsRequested OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The entire UPS has shutdown as commanded."
      ::= { upsWellKnownAlarms 12 }

  upsAlarmChargerFailed OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "An uncorrected problem has been detected within the
              UPS charger subsystem."
      ::= { upsWellKnownAlarms 13 }

  upsAlarmUpsOutputOff OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The output of the UPS is in the off state."
      ::= { upsWellKnownAlarms 14 }

  upsAlarmUpsSystemOff OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The UPS system is in the off state."
      ::= { upsWellKnownAlarms 15 }



Case                                                           [Page 17]

RFC 1628                        UPS MIB                         May 1994


  upsAlarmFanFailure OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The failure of one or more fans in the UPS has been
              detected."
      ::= { upsWellKnownAlarms 16 }

  upsAlarmFuseFailure OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The failure of one or more fuses has been detected."
      ::= { upsWellKnownAlarms 17 }

  upsAlarmGeneralFault OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "A general fault in the UPS has been detected."
      ::= { upsWellKnownAlarms 18 }

  upsAlarmDiagnosticTestFailed OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The result of the last diagnostic test indicates a
              failure."
      ::= { upsWellKnownAlarms 19 }

  upsAlarmCommunicationsLost OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "A problem has been encountered in the communications
              between the agent and the UPS."
      ::= { upsWellKnownAlarms 20 }

  upsAlarmAwaitingPower OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The UPS output is off and the UPS is awaiting the
              return of input power."
      ::= { upsWellKnownAlarms 21 }

  upsAlarmShutdownPending OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "A upsShutdownAfterDelay countdown is underway."
      ::= { upsWellKnownAlarms 22 }

  upsAlarmShutdownImminent OBJECT-IDENTITY
      STATUS     current



Case                                                           [Page 18]

RFC 1628                        UPS MIB                         May 1994


      DESCRIPTION
              "The UPS will turn off power to the load in less than
              5 seconds; this may be either a timed shutdown or a
              low battery shutdown."
      ::= { upsWellKnownAlarms 23 }

  upsAlarmTestInProgress OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "A test is in progress, as initiated and indicated by
              the Test Group.  Tests initiated via other
              implementation-specific mechanisms can indicate the
              presence of the testing in the alarm table, if
              desired, via a OBJECT-IDENTITY macro in the MIB
              document specific to that implementation and are
              outside the scope of this OBJECT-IDENTITY."
      ::= { upsWellKnownAlarms 24 }


  --
  -- The Test Group
  --

  upsTest               OBJECT IDENTIFIER ::= { upsObjects 7 }

  upsTestId OBJECT-TYPE
      SYNTAX     OBJECT IDENTIFIER
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The test is named by an OBJECT IDENTIFIER which
              allows a standard mechanism for the initiation of
              tests, including the well known tests identified in
              this document as well as those introduced by a
              particular implementation, i.e., as documented in the
              private enterprise MIB definition for the device.

              Setting this variable initiates the named test. Sets
              to this variable require the presence of
              upsTestSpinLock in the same SNMP message.

              The set request will be rejected with an appropriate
              error message if the requested test cannot be
              performed, including attempts to start a test when
              another test is already in progress.  The status of
              the current or last test is maintained in
              upsTestResultsSummary. Tests in progress may be
              aborted by setting the upsTestId variable to



Case                                                           [Page 19]

RFC 1628                        UPS MIB                         May 1994


              upsTestAbortTestInProgress.

              Read operations return the value of the name of the
              test in progress if a test is in progress or the name
              of the last test performed if no test is in progress,
              unless no test has been run, in which case the well
              known value upsTestNoTestsInitiated is returned."
      ::= { upsTest 1 }

  -- see [6] for more information on the semantics of objects with
  -- syntax of TestAndIncr

  upsTestSpinLock OBJECT-TYPE
      SYNTAX     TestAndIncr
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "A spin lock on the test subsystem.  The spinlock is
              used as follows.

              Before starting a test, a manager-station should make
              sure that a test is not in progress as follows:

                  try_again:
                    get (upsTestSpinLock)
                    while (upsTestResultsSummary == inProgress) {
                      /* loop while a test is running for another
              manager */
                      short delay
                      get (upsTestSpinLock)
                    }
                    lock_value = upsTestSpinLock
                    /* no test in progress, start the test */
                    set (upsTestSpinLock = lock_value, upsTestId =
              requested_test)
                    if (error_index == 1) { /* (upsTestSpinLock
              failed) */
                      /* if problem is not access control, then
                          some other manager slipped in ahead of us
              */
                      goto try_again
                    }
                    if (error_index == 2) { /* (upsTestId) */
                      /* cannot perform the test */
                      give up
                    }
                    /* test started ok */
                    /* wait for test completion by polling



Case                                                           [Page 20]

RFC 1628                        UPS MIB                         May 1994


              upsTestResultsSummary */
                    get (upsTestSpinLock, upsTestResultsSummary,
              upsTestResultsDetail)
                    while (upsTestResultsSummary == inProgress) {
                      short delay
                      get (upsTestSpinLock, upsTestResultsSummary,
              upsTestResultsDetail)
                    }
                    /* when test completes, retrieve any additional
              test results */
                    /* if upsTestSpinLock == lock_value + 1, then
              these are our test */
                    /* results (as opposed to another manager's */
                    The initial value of upsTestSpinLock at agent
              initialization shall
                    be 1."
      ::= { upsTest 2 }

  upsTestResultsSummary OBJECT-TYPE
      SYNTAX     INTEGER {
          donePass(1),
          doneWarning(2),
          doneError(3),
          aborted(4),
          inProgress(5),
          noTestsInitiated(6)
      }
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The results of the current or last UPS diagnostics
              test performed.  The values for donePass(1),
              doneWarning(2), and doneError(3) indicate that the
              test completed either successfully, with a warning, or
              with an error, respectively.  The value aborted(4) is
              returned for tests which are aborted by setting the
              value of upsTestId to upsTestAbortTestInProgress.
              Tests which have not yet concluded are indicated by
              inProgress(5).  The value noTestsInitiated(6)
              indicates that no previous test results are available,
              such as is the case when no tests have been run since
              the last reinitialization of the network management
              subsystem and the system has no provision for non-
              volatile storage of test results."
      ::= { upsTest 3 }

  upsTestResultsDetail OBJECT-TYPE
      SYNTAX     DisplayString (SIZE (0..255))



Case                                                           [Page 21]

RFC 1628                        UPS MIB                         May 1994


      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "Additional information about upsTestResultsSummary.
              If no additional information available, a zero length
              string is returned."
      ::= { upsTest 4 }

  upsTestStartTime OBJECT-TYPE
      SYNTAX     TimeStamp
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The value of sysUpTime at the time the test in
              progress was initiated, or, if no test is in progress,
              the time the previous test was initiated.  If the
              value of upsTestResultsSummary is noTestsInitiated(6),
              upsTestStartTime has the value 0."
      ::= { upsTest 5 }

  upsTestElapsedTime OBJECT-TYPE
      SYNTAX     TimeInterval
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The amount of time, in TimeTicks, since the test in
              progress was initiated, or, if no test is in progress,
              the previous test took to complete.  If the value of
              upsTestResultsSummary is noTestsInitiated(6),
              upsTestElapsedTime has the value 0."
      ::= { upsTest 6 }

  --
  -- Well known tests.
  --

  upsWellKnownTests     OBJECT IDENTIFIER ::= { upsTest 7 }


  upsTestNoTestsInitiated OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "No tests have been initiated and no test is in
              progress."
      ::= { upsWellKnownTests  1 }

  upsTestAbortTestInProgress OBJECT-IDENTITY
      STATUS     current



Case                                                           [Page 22]

RFC 1628                        UPS MIB                         May 1994


      DESCRIPTION
              "The test in progress is to be aborted / the test in
              progress was aborted."
      ::= { upsWellKnownTests  2 }

  upsTestGeneralSystemsTest OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The manufacturer's standard test of UPS device
              systems."
      ::= { upsWellKnownTests  3 }

  upsTestQuickBatteryTest OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "A test that is sufficient to determine if the battery
              needs replacement."
      ::= { upsWellKnownTests  4 }

  upsTestDeepBatteryCalibration OBJECT-IDENTITY
      STATUS     current
      DESCRIPTION
              "The system is placed on battery to a discharge level,
              set by the manufacturer, sufficient to determine
              battery replacement and battery run-time with a high
              degree of confidence.  WARNING:  this test will leave
              the battery in a low charge state and will require
              time for recharging to a level sufficient to provide
              normal battery duration for the protected load."
      ::= { upsWellKnownTests  5 }


  --
  -- The Control group.
  --

  upsControl            OBJECT IDENTIFIER ::= { upsObjects 8 }

  upsShutdownType OBJECT-TYPE
      SYNTAX     INTEGER {
          output(1),
          system(2)
      }
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "This object determines the nature of the action to be
              taken at the time when the countdown of the



Case                                                           [Page 23]

RFC 1628                        UPS MIB                         May 1994


              upsShutdownAfterDelay and upsRebootWithDuration
              objects reaches zero.

              Setting this object to output(1) indicates that
              shutdown requests should cause only the output of the
              UPS to turn off.  Setting this object to system(2)
              indicates that shutdown requests will cause the entire
              UPS system to turn off."
      ::= { upsControl 1 }

  upsShutdownAfterDelay OBJECT-TYPE
      SYNTAX     INTEGER (-1..2147483648)
      UNITS      "seconds"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "Setting this object will shutdown (i.e., turn off)
              either the UPS output or the UPS system (as determined
              by the value of upsShutdownType at the time of
              shutdown) after the indicated number of seconds, or
              less if the UPS batteries become depleted. Setting
              this object to 0 will cause the shutdown to occur
              immediately.  Setting this object to -1 will abort the
              countdown.  If the system is already in the desired
              state at the time the countdown reaches 0, then
              nothing will happen.  That is, there is no additional
              action at that time if upsShutdownType = system and
              the system is already off.  Similarly, there is no
              additional action at that time if upsShutdownType =
              output and the output is already off.  When read,
              upsShutdownAfterDelay will return the number of
              seconds remaining until shutdown, or -1 if no shutdown
              countdown is in effect.  On some systems, if the agent
              is restarted while a shutdown countdown is in effect,
              the countdown may be aborted.  Sets to this object
              override any upsShutdownAfterDelay already in effect."
      ::= { upsControl 2 }

  upsStartupAfterDelay OBJECT-TYPE
      SYNTAX     INTEGER (-1..2147483648)
      UNITS      "seconds"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "Setting this object will start the output after the
              indicated number of seconds, including starting the
              UPS, if necessary.  Setting this object to 0 will
              cause the startup to occur immediately.  Setting this



Case                                                           [Page 24]

RFC 1628                        UPS MIB                         May 1994


              object to -1 will abort the countdown.  If the output
              is already on at the time the countdown reaches 0,
              then nothing will happen.  Sets to this object
              override the effect of any upsStartupAfterDelay
              countdown or upsRebootWithDuration countdown in
              progress.  When read, upsStartupAfterDelay will return
              the number of seconds until startup, or -1 if no
              startup countdown is in effect.  If the countdown
              expires during a utility failure, the startup shall
              not occur until the utility power is restored.  On
              some systems, if the agent is restarted while a
              startup countdown is in effect, the countdown is
              aborted."
      ::= { upsControl 3 }

  upsRebootWithDuration OBJECT-TYPE
      SYNTAX     INTEGER (-1..300)
      UNITS      "seconds"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "Setting this object will immediately shutdown (i.e.,
              turn off) either the UPS output or the UPS system (as
              determined by the value of upsShutdownType at the time
              of shutdown) for a period equal to the indicated
              number of seconds, after which time the output will be
              started, including starting the UPS, if necessary.  If
              the number of seconds required to perform the request
              is greater than the requested duration, then the
              requested shutdown and startup cycle shall be
              performed in the minimum time possible, but in no case
              shall this require more than the requested duration
              plus 60 seconds.  When read, upsRebootWithDuration
              shall return the number of seconds remaining in the
              countdown, or -1 if no countdown is in progress.  If
              the startup should occur during a utility failure, the
              startup shall not occur until the utility power is
              restored."
      ::= { upsControl 4 }

  upsAutoRestart OBJECT-TYPE
      SYNTAX     INTEGER {
          on(1),
          off(2)
      }
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION



Case                                                           [Page 25]

RFC 1628                        UPS MIB                         May 1994


              "Setting this object to 'on' will cause the UPS system
              to restart after a shutdown if the shutdown occurred
              during a power loss as a result of either a
              upsShutdownAfterDelay or an internal battery depleted
              condition.  Setting this object to 'off' will prevent
              the UPS system from restarting after a shutdown until
              an operator manually or remotely explicitly restarts
              it.  If the UPS is in a startup or reboot countdown,
              then the UPS will not restart until that delay has
              been satisfied."
      ::= { upsControl 5 }


  --
  -- The Configuration group.
  --

  upsConfig             OBJECT IDENTIFIER ::= { upsObjects 9 }

  upsConfigInputVoltage OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The magnitude of the nominal input voltage.  On those
              systems which support read-write access to this
              object, if there is an attempt to set this variable to
              a value that is not supported, the request must be
              rejected and the agent shall respond with an
              appropriate error message, i.e., badValue for SNMPv1,
              or inconsistentValue for SNMPv2."
      ::= { upsConfig 1 }

  upsConfigInputFreq OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 Hertz"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The nominal input frequency.  On those systems which
              support read-write access to this object, if there is
              an attempt to set this variable to a value that is not
              supported, the request must be rejected and the agent
              shall respond with an appropriate error message, i.e.,
              badValue for SNMPv1, or inconsistentValue for SNMPv2."
      ::= { upsConfig 2 }




Case                                                           [Page 26]

RFC 1628                        UPS MIB                         May 1994


  upsConfigOutputVoltage OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The magnitude of the nominal output voltage.  On
              those systems which support read-write access to this
              object, if there is an attempt to set this variable to
              a value that is not supported, the request must be
              rejected and the agent shall respond with an
              appropriate error message, i.e., badValue for SNMPv1,
              or inconsistentValue for SNMPv2."
      ::= { upsConfig 3 }

  upsConfigOutputFreq OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "0.1 Hertz"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The nominal output frequency.  On those systems which
              support read-write access to this object, if there is
              an attempt to set this variable to a value that is not
              supported, the request must be rejected and the agent
              shall respond with an appropriate error message, i.e.,
              badValue for SNMPv1, or inconsistentValue for SNMPv2."
      ::= { upsConfig 4 }

  upsConfigOutputVA OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "Volt-Amps"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The magnitude of the nominal Volt-Amp rating."
      ::= { upsConfig 5 }

  upsConfigOutputPower OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "Watts"
      MAX-ACCESS read-only
      STATUS     current
      DESCRIPTION
              "The magnitude of the nominal true power rating."
      ::= { upsConfig 6 }

  upsConfigLowBattTime OBJECT-TYPE



Case                                                           [Page 27]

RFC 1628                        UPS MIB                         May 1994


      SYNTAX     NonNegativeInteger
      UNITS      "minutes"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The value of upsEstimatedMinutesRemaining at which a
              lowBattery condition is declared.  For agents which
              support only discrete (discontinuous) values, then the
              agent shall round up to the next supported value.  If
              the requested value is larger than the largest
              supported value, then the largest supported value
              shall be selected."
      ::= { upsConfig 7 }

  upsConfigAudibleStatus OBJECT-TYPE
      SYNTAX     INTEGER {
          disabled(1),
          enabled(2),
          muted(3)
      }
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The requested state of the audible alarm.  When in
              the disabled state, the audible alarm should never
              sound.  The enabled state is self-describing.  Setting
              this object to muted(3) when the audible alarm is
              sounding shall temporarily silence the alarm.  It will
              remain muted until it would normally stop sounding and
              the value returned for read operations during this
              period shall equal muted(3).  At the end of this
              period, the value shall revert to enabled(2).  Writes
              of the value muted(3) when the audible alarm is not
              sounding shall be accepted but otherwise shall have no
              effect."
      ::= { upsConfig 8 }

  upsConfigLowVoltageTransferPoint OBJECT-TYPE
      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The minimum input line voltage allowed before the UPS
              system transfers to battery backup."
      ::= { upsConfig 9 }

  upsConfigHighVoltageTransferPoint OBJECT-TYPE



Case                                                           [Page 28]

RFC 1628                        UPS MIB                         May 1994


      SYNTAX     NonNegativeInteger
      UNITS      "RMS Volts"
      MAX-ACCESS read-write
      STATUS     current
      DESCRIPTION
              "The maximum line voltage allowed before the UPS
              system transfers to battery backup."
      ::= { upsConfig 10 }


  --
  -- notifications, i.e., traps
  --
  upsTraps              OBJECT IDENTIFIER ::= { upsMIB 2 }

  -- This section defines the well-known notifications sent by
  -- UPS agents.
  -- Care must be taken to insure that no particular notification
  -- is sent to a single receiving entity more often than once
  -- every five seconds.

  upsTrapOnBattery NOTIFICATION-TYPE
      OBJECTS { upsEstimatedMinutesRemaining, upsSecondsOnBattery,
                upsConfigLowBattTime }
      STATUS  current
      DESCRIPTION
              "The UPS is operating on battery power.  This trap is
              persistent and is resent at one minute intervals until
              the UPS either turns off or is no longer running on
              battery."
    ::= { upsTraps 1 }

  upsTrapTestCompleted NOTIFICATION-TYPE
      OBJECTS { upsTestId, upsTestSpinLock,
                upsTestResultsSummary, upsTestResultsDetail,
                upsTestStartTime, upsTestElapsedTime }
      STATUS  current
      DESCRIPTION
              "This trap is sent upon completion of a UPS diagnostic
              test."
    ::= { upsTraps 2 }

  upsTrapAlarmEntryAdded NOTIFICATION-TYPE
      OBJECTS { upsAlarmId, upsAlarmDescr }
      STATUS  current
      DESCRIPTION
              "This trap is sent each time an alarm is inserted into
              to the alarm table.  It is sent on the insertion of



Case                                                           [Page 29]

RFC 1628                        UPS MIB                         May 1994


              all alarms except for upsAlarmOnBattery and
              upsAlarmTestInProgress."
    ::= { upsTraps 3 }

  upsTrapAlarmEntryRemoved NOTIFICATION-TYPE
      OBJECTS { upsAlarmId, upsAlarmDescr }
      STATUS  current
      DESCRIPTION
              "This trap is sent each time an alarm is removed from
              the alarm table.  It is sent on the removal of all
              alarms except for upsAlarmTestInProgress."
    ::= { upsTraps 4 }


  --
  -- conformance information
  --
  upsConformance        OBJECT IDENTIFIER ::= { upsMIB 3 }

  upsCompliances        OBJECT IDENTIFIER ::= { upsConformance 1 }


  --
  -- compliance statements
  --

  upsSubsetCompliance MODULE-COMPLIANCE
      STATUS     current
      DESCRIPTION

              "The compliance statement for UPSs that only support
              the two-contact communication protocol."
      MODULE -- this module
          MANDATORY-GROUPS  { upsSubsetIdentGroup,
                    upsSubsetBatteryGroup, upsSubsetInputGroup,
                    upsSubsetOutputGroup, upsSubsetAlarmGroup,
                    upsSubsetControlGroup, upsSubsetConfigGroup }

      OBJECT     upsBatteryStatus
      SYNTAX     INTEGER {
          batteryNormal(2),
          batteryLow(3)
      }
      DESCRIPTION
              "Support of the values unknown(1) and
              batteryDepleted(4) is not required."

      OBJECT     upsAlarmDescr



Case                                                           [Page 30]

RFC 1628                        UPS MIB                         May 1994


      DESCRIPTION
              "Support of all `well known' alarm types is not
              required.  The well known alarm types which must be
              supported are: upsAlarmOnBattery, upsAlarmLowBattery,
              upsAlarmInputBad, upsAlarmUpsOutputOff,
              upsAlarmUpsSystemOff, and upsAlarmTestInProgress."

      OBJECT     upsOutputSource
      SYNTAX     INTEGER {
          normal(2),
          battery(4)
      }
      DESCRIPTION
              "Support of the values other(1), none(2), bypass(4),
              booster(6) and reducer(7) is not required."

      OBJECT     upsShutdownType
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required, i.e., compliant
              systems need not support more than one shutdown type."

      OBJECT     upsAutoRestart
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required, i.e., compliant
              systems need not support more than one restart type."

      OBJECT     upsConfigInputVoltage
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigInputFreq
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigOutputVoltage
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigOutputFreq
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."




Case                                                           [Page 31]

RFC 1628                        UPS MIB                         May 1994


      ::= { upsCompliances 1 }

  upsBasicCompliance MODULE-COMPLIANCE
      STATUS     current
      DESCRIPTION

              "The compliance statement for UPSs that support
              full-featured functions, such as control."
      MODULE -- this module
          MANDATORY-GROUPS { upsBasicIdentGroup,
                    upsBasicBatteryGroup, upsBasicInputGroup,
                    upsBasicOutputGroup, upsBasicAlarmGroup,
                    upsBasicTestGroup, upsBasicControlGroup,
                    upsBasicConfigGroup }


      OBJECT     upsAlarmDescr
      DESCRIPTION
              "Support of all `well known' alarm types is not
              required.  The well known alarm types which must be
              supported are: upsAlarmOnBattery, upsAlarmLowBattery,
              upsAlarmDepletedBattery, upsAlarmTempBad,
              upsAlarmInputBad, upsAlarmOutputOverload,
              upsAlarmOnBypass, upsAlarmBypassBad,
              upsAlarmOutputOffAsRequested,
              upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff,
              upsAlarmUpsSystemOff, upsAlarmGeneralFault,
              upsAlarmDiagnosticTestFailed,
              upsAlarmCommunicationsLost, upsAlarmShutdownPending,
              and upsAlarmTestInProgress."

      OBJECT     upsTestId
      DESCRIPTION
              "Support of all `well known' test types is not
              required.  If no tests are supported, then the only
              well known test type which must be supported is
              upsTestNoTestsInitiated."

      OBJECT     upsOutputSource
      SYNTAX     INTEGER {
          normal(2),
          battery(4)
      }
      DESCRIPTION
              "Support of the values other(1), none(2), bypass(4),
              booster(6) and reducer(7) is not required."

          GROUP upsBasicBypassGroup



Case                                                           [Page 32]

RFC 1628                        UPS MIB                         May 1994


          DESCRIPTION
              "The upsBasicBypassGroup is only required for UPSs
              that have a Bypass present."
      OBJECT     upsShutdownType
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required, i.e., compliant
              systems need not support more than one shutdown type."

      OBJECT     upsAutoRestart
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required, i.e., compliant
              systems need not support more than one restart type."

      OBJECT     upsConfigInputVoltage
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigInputFreq
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigOutputVoltage
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigOutputFreq
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigLowBattTime
      DESCRIPTION
              "Implementation of all possible values may be onerous
              for some systems.  Consequently, not all possible
              values must be supported.  However, at least two
              different manufacturer-selected values must be
              supported."

      ::= { upsCompliances 2 }

  upsFullCompliance MODULE-COMPLIANCE
      STATUS     current
      DESCRIPTION



Case                                                           [Page 33]

RFC 1628                        UPS MIB                         May 1994


              "The compliance statement for UPSs that support
              advanced full-featured functions."
      MODULE -- this module
          MANDATORY-GROUPS { upsFullIdentGroup, upsFullBatteryGroup,
                    upsFullInputGroup, upsFullOutputGroup,
                    upsFullAlarmGroup, upsFullTestGroup,
                    upsFullControlGroup, upsFullConfigGroup }

      OBJECT     upsAlarmDescr
      DESCRIPTION
              "Support of all `well known' alarm types is not
              required.  The well known alarm types which must be
              supported are: upsAlarmBatteryBad, upsAlarmOnBattery,
              upsAlarmLowBattery, upsAlarmDepletedBattery,
              upsAlarmTempBad, upsAlarmInputBad, upsAlarmOnBypass,
              upsAlarmBypassBad, upsAlarmOutputOffAsRequested,
              upsAlarmUpsOffAsRequested, upsAlarmUpsOutputOff,
              upsAlarmUpsSystemOff, upsAlarmGeneralFault,
              upsAlarmDiagnosticTestFailed,
              upsAlarmCommunicationsLost, upsAlarmShutdownPending,
              and upsAlarmTestInProgress."

      OBJECT     upsTestId
      DESCRIPTION
              "Support of all `well known' test types is not
              required.  The well known test types which must be
              supported are: upsTestNoTestsInitiated,
              upsTestGeneralSystemsTest, and
              upsTestQuickBatteryTest."

      OBJECT     upsOutputSource
      SYNTAX     INTEGER {
          normal(2),
          battery(4)
      }
      DESCRIPTION
              "Support of the values other(1), none(2), bypass(4),
              booster(6) and reducer(7) is not required."

          GROUP upsFullBypassGroup
          DESCRIPTION
              "The upsFullBypassGroup is only required for UPSs that
              have a Bypass present."

      OBJECT     upsShutdownType
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required, i.e., compliant



Case                                                           [Page 34]

RFC 1628                        UPS MIB                         May 1994


              systems need not support more than one shutdown type."

      OBJECT     upsAutoRestart
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required, i.e., compliant
              systems need not support more than one restart type."

      OBJECT     upsConfigInputVoltage
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigInputFreq
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigOutputVoltage
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigOutputFreq
      MIN-ACCESS read-only
      DESCRIPTION
              "Read-write access is not required."

      OBJECT     upsConfigLowBattTime
      DESCRIPTION
              "Implementation of all possible values may be onerous
              for some systems.  Consequently, not all possible
              values must be supported.  However, at least two
              different manufacturer-selected values must be
              supported."

      ::= { upsCompliances 3 }


  --
  -- units of conformance
  --

  -- summary at a glance:

  --                                      subset  basic   adv
  --upsIdentManufacturer                  x       x       x
  --upsIdentModel                         x       x       x



Case                                                           [Page 35]

RFC 1628                        UPS MIB                         May 1994


  --upsIdentUPSSoftwareVersion                    x       x
  --upsIdentAgentSoftwareVersion          x       x       x
  --upsIdentName                          x       x       x
  --upsIdentAttachedDevices               x               x
  --
  --upsBatteryStatus                      x       x       x  notes
  --upsSecondsOnBattery                   x       x       x
  --upsEstimatedMinutesRemaining                          x
  --upsEstimatedChargeRemaining                           x
  --upsBatteryVoltage
  --upsBatteryCurrent
  --upsBatteryTemperature
  --
  --upsInputLineBads                      x       x       x
  --upsInputNumLines                              x       x
  --upsInputFrequency                             x       x
  --upsInputVoltage                               x       x
  --upsInputCurrent
  --upsInputTruePower
  --
  --upsOutputSource                       x       x       x  notes
  --upsOutputFrequency                            x       x
  --upsOutputNumLines                             x       x
  --upsOutputVoltage                              x       x
  --upsOutputCurrent                                      x
  --upsOutputPower                                        x
  --upsOutputPercentLoad                                  x
  --
  --
  --upsBypassFrequency                            x       x  notes
  --upsBypassNumLines                             x       x
  --upsBypassVoltage                              x       x
  --upsBypassCurrent
  --upsBypassPower
  --
  --
  --upsAlarmsPresent                      x       x       x
  --upsAlarmDescr                         x       x       x  notes
  --upsAlarmTime                          x       x       x
  --
  --upsTestId                                     x       x  notes
  --upsTestSpinLock                               x       x
  --upsTestResultsSummary                         x       x
  --upsTestResultsDetail                          x       x
  --upsTestStartTime                              x       x
  --upsTestElapsedTime                            x       x
  --
  --upsShutdownType                       x       x       x  notes



Case                                                           [Page 36]

RFC 1628                        UPS MIB                         May 1994


  --upsShutdownAfterDelay                 x       x       x
  --upsStartupAfterDelay                          x       x
  --upsRebootWithDuration                         x       x
  --upsAutoRestart                        x       x       x  notes
  --
  --upsConfigInputVoltage                 x       x       x  notes
  --upsConfigInputFreq                    x       x       x  notes
  --upsConfigOutputVoltage                x       x       x  notes
  --upsConfigOutputFreq                   x       x       x  notes
  --upsConfigOutputVA                     x       x       x
  --upsConfigOutputPower                  x       x       x
  --upsConfigLowBattTime                          x       x  notes
  --upsConfigAudibleStatus                        x       x
  --upsConfigLowVoltageTransferPoint
  --upsConfigHighVoltageTransferPoint


  -- units of conformance
  upsGroups             OBJECT IDENTIFIER ::= { upsConformance 2 }

  upsSubsetGroups       OBJECT IDENTIFIER ::= { upsGroups 1 }

  upsSubsetIdentGroup OBJECT-GROUP
      OBJECTS { upsIdentManufacturer, upsIdentModel,
                upsIdentAgentSoftwareVersion, upsIdentName,
                upsIdentAttachedDevices }
      STATUS  current
      DESCRIPTION
              "The upsSubsetIdentGroup defines objects which are
              common across all UPSs which meet subset compliance.
              Most devices which conform to the upsSubsetIdentGroup
              will provide access to these objects via a proxy
              agent.  If the proxy agent is compatible with multiple
              UPS types, configuration of the proxy agent will
              require specifying some of these values, either
              individually, or as a group (perhaps through a table
              lookup mechanism based on the UPS model number)."
      ::= { upsSubsetGroups 1 }

  upsSubsetBatteryGroup OBJECT-GROUP
      OBJECTS { upsBatteryStatus, upsSecondsOnBattery }
      STATUS  current
      DESCRIPTION
              "The upsSubsetBatteryGroup defines the objects that
              are common to battery groups of two-contact UPSs."
      ::= { upsSubsetGroups 2 }

  upsSubsetInputGroup OBJECT-GROUP



Case                                                           [Page 37]

RFC 1628                        UPS MIB                         May 1994


      OBJECTS { upsInputLineBads }
      STATUS  current
      DESCRIPTION
              "The upsSubsetInputGroup defines the objects that are
              common to the Input groups of two-contact UPSs."
      ::= { upsSubsetGroups 3 }

  upsSubsetOutputGroup OBJECT-GROUP
      OBJECTS { upsOutputSource }
      STATUS  current
      DESCRIPTION
              "The upsSubsetOutputGroup defines the objects that are
              common to the Output groups of two-contact UPSs."
      ::= { upsSubsetGroups 4 }


  -- { upsSubsetGroups 5 } is reserved for
  -- future use (upsSubsetBypassGroup)

  upsSubsetAlarmGroup OBJECT-GROUP
      OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime }
      STATUS  current
      DESCRIPTION
              "The upsSubsetAlarmGroup defines the objects that are
              common to the Alarm groups of two-contact UPSs."
      ::= { upsSubsetGroups 6 }

  -- { upsSubsetGroups 7 } is reserved for
  -- future use (upsSubsetTestGroup)

  upsSubsetControlGroup OBJECT-GROUP
      OBJECTS { upsShutdownType, upsShutdownAfterDelay,
                    upsAutoRestart }
      STATUS  current
      DESCRIPTION
              "The upsSubsetControlGroup defines the objects that
              are common to the Control groups of two-contact UPSs."
      ::= { upsSubsetGroups 8 }

  upsSubsetConfigGroup OBJECT-GROUP
      OBJECTS { upsConfigInputVoltage, upsConfigInputFreq,
                upsConfigOutputVoltage, upsConfigOutputFreq,
                upsConfigOutputVA, upsConfigOutputPower }
      STATUS  current
      DESCRIPTION
              "The upsSubsetConfigGroup defines the objects that are
              common to the Config groups of two-contact UPSs."
      ::= { upsSubsetGroups 9 }



Case                                                           [Page 38]

RFC 1628                        UPS MIB                         May 1994


  upsBasicGroups        OBJECT IDENTIFIER ::= { upsGroups 2 }

  upsBasicIdentGroup OBJECT-GROUP
      OBJECTS { upsIdentManufacturer, upsIdentModel,
                upsIdentUPSSoftwareVersion,
                upsIdentAgentSoftwareVersion, upsIdentName }
      STATUS  current
      DESCRIPTION
              "The upsBasicIdentGroup defines objects which are
              common to the Ident group of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 1 }

  upsBasicBatteryGroup OBJECT-GROUP
      OBJECTS { upsBatteryStatus, upsSecondsOnBattery }
      STATUS  current
      DESCRIPTION
              "The upsBasicBatteryGroup defines the objects that are
              common to the battery groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 2 }

  upsBasicInputGroup OBJECT-GROUP
      OBJECTS { upsInputLineBads, upsInputNumLines,
                upsInputFrequency, upsInputVoltage }
      STATUS  current
      DESCRIPTION
              "The upsBasicInputGroup defines the objects that are
              common to the Input groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 3 }

  upsBasicOutputGroup OBJECT-GROUP
      OBJECTS { upsOutputSource, upsOutputFrequency,
                upsOutputNumLines, upsOutputVoltage }
      STATUS  current
      DESCRIPTION
              "The upsBasicOutputGroup defines the objects that are
              common to the Output groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 4 }

  upsBasicBypassGroup OBJECT-GROUP
      OBJECTS { upsBypassFrequency, upsBypassNumLines,
                upsBypassVoltage }
      STATUS  current
      DESCRIPTION
              "The upsBasicBypassGroup defines the objects that are



Case                                                           [Page 39]

RFC 1628                        UPS MIB                         May 1994


              common to the Bypass groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 5 }

  upsBasicAlarmGroup OBJECT-GROUP
      OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime }
      STATUS  current
      DESCRIPTION

              "The upsBasicAlarmGroup defines the objects that are
              common to the Alarm  groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 6 }

  upsBasicTestGroup OBJECT-GROUP
      OBJECTS { upsTestId, upsTestSpinLock,
                upsTestResultsSummary, upsTestResultsDetail,
                upsTestStartTime, upsTestElapsedTime }
      STATUS  current
      DESCRIPTION
              "The upsBasicTestGroup defines the objects that are
              common to the Test groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 7 }

  upsBasicControlGroup OBJECT-GROUP
      OBJECTS { upsShutdownType, upsShutdownAfterDelay,
                upsStartupAfterDelay, upsRebootWithDuration,
                upsAutoRestart }
      STATUS  current
      DESCRIPTION
              "The upsBasicControlGroup defines the objects that are
              common to the Control groups of compliant UPSs which
              support basic functions."
      ::= { upsBasicGroups 8 }

  upsBasicConfigGroup OBJECT-GROUP
      OBJECTS { upsConfigInputVoltage, upsConfigInputFreq,
                upsConfigOutputVoltage, upsConfigOutputFreq,
                upsConfigOutputVA, upsConfigOutputPower,
                upsConfigLowBattTime, upsConfigAudibleStatus }
      STATUS  current
      DESCRIPTION
              "The upsBasicConfigGroup defines the objects that are
              common to the Config groups of UPSs which support
              basic functions."
      ::= { upsBasicGroups 9 }




Case                                                           [Page 40]

RFC 1628                        UPS MIB                         May 1994


  upsFullGroups         OBJECT IDENTIFIER ::= { upsGroups 3 }

  upsFullIdentGroup OBJECT-GROUP
      OBJECTS { upsIdentManufacturer, upsIdentModel,
                upsIdentUPSSoftwareVersion,
                upsIdentAgentSoftwareVersion, upsIdentName,
                upsIdentAttachedDevices }
      STATUS  current
      DESCRIPTION
              "The upsFullIdentGroup defines objects which are
              common to the Ident group of fully compliant UPSs."
      ::= { upsFullGroups 1 }

  upsFullBatteryGroup OBJECT-GROUP
      OBJECTS { upsBatteryStatus, upsSecondsOnBattery,
                upsEstimatedMinutesRemaining,
                upsEstimatedChargeRemaining }
      STATUS  current
      DESCRIPTION
              "The upsFullBatteryGroup defines the objects that are
              common to the battery groups of fully compliant UPSs."
      ::= { upsFullGroups 2 }

  upsFullInputGroup OBJECT-GROUP
      OBJECTS { upsInputLineBads, upsInputNumLines,
                upsInputFrequency, upsInputVoltage }
      STATUS  current
      DESCRIPTION
              "The upsFullInputGroup defines the objects that are
              common to the Input groups of fully compliant UPSs."
      ::= { upsFullGroups 3 }

  upsFullOutputGroup OBJECT-GROUP
      OBJECTS { upsOutputSource, upsOutputFrequency,
                upsOutputNumLines, upsOutputVoltage,
                upsOutputCurrent, upsOutputPower,
                upsOutputPercentLoad }
      STATUS  current
      DESCRIPTION
              "The upsFullOutputGroup defines the objects that are
              common to the Output groups of fully compliant UPSs."
      ::= { upsFullGroups 4 }

  upsFullBypassGroup OBJECT-GROUP
      OBJECTS { upsBypassFrequency, upsBypassNumLines,
                upsBypassVoltage }
      STATUS  current
      DESCRIPTION



Case                                                           [Page 41]

RFC 1628                        UPS MIB                         May 1994


              "The upsFullBypassGroup defines the objects that are
              common to the Bypass groups of fully compliant UPSs."
      ::= { upsFullGroups 5 }

  upsFullAlarmGroup OBJECT-GROUP
      OBJECTS { upsAlarmsPresent, upsAlarmDescr, upsAlarmTime }
      STATUS  current
      DESCRIPTION

              "The upsFullAlarmGroup defines the objects that are
              common to the Alarm  groups of fully compliant UPSs."
      ::= { upsFullGroups 6 }

  upsFullTestGroup OBJECT-GROUP
      OBJECTS { upsTestId, upsTestSpinLock,
                upsTestResultsSummary, upsTestResultsDetail,
                upsTestStartTime, upsTestElapsedTime }
      STATUS  current
      DESCRIPTION
              "The upsFullTestGroup defines the objects that are
              common to the Test groups of fully compliant UPSs."
      ::= { upsFullGroups 7 }

  upsFullControlGroup OBJECT-GROUP
      OBJECTS { upsShutdownType, upsShutdownAfterDelay,
                upsStartupAfterDelay, upsRebootWithDuration,
                upsAutoRestart }
      STATUS  current
      DESCRIPTION
  "The upsFullControlGroup defines the objects that are
  common to the Control groups of fully compliant UPSs."
      ::= { upsFullGroups 8 }

  upsFullConfigGroup OBJECT-GROUP
      OBJECTS { upsConfigInputVoltage, upsConfigInputFreq,
                upsConfigOutputVoltage, upsConfigOutputFreq,
                upsConfigOutputVA, upsConfigOutputPower,
                upsConfigLowBattTime, upsConfigAudibleStatus }
      STATUS  current
      DESCRIPTION
              "The upsFullConfigGroup defines the objects that are
              common to the Config groups of fully compliant UPSs."
      ::= { upsFullGroups 9 }

  END






Case                                                           [Page 42]

RFC 1628                        UPS MIB                         May 1994


5.  Acknowledgements

  The UPS MIB represents the combined work of the IETF UPS MIB Working
  Group, with particular, substantial authorship contributions from:

          Mike Davison
          Fibercom, Inc.

          Ray Wasson
          Consultant

          Roger Draper
          Liebert Corporation

          Ken Key
          SNMP Research, Incorporated

          Pete Yoest
          American Power Conversion

          Doug Rademacher
          American Power Conversion

          Ron Pitt
          Network Security Systems, Inc

          Terry Zumwalt
          International Power Machines

          Lawren Markle
          Tripp Lite

          Bill Elliot
          ONEAC

          Tom Brennan
          Exide Electronics

          Brian Young
          Best Power Technology











Case                                                           [Page 43]

RFC 1628                        UPS MIB                         May 1994


6.  References

  [1] Case, J., Fedor, M., Schoffstall, M., and J. Davin, "Simple
      Network Management Protocol", STD 15, RFC 1157, SNMP Research,
      Inc., Performance Systems International, Performance Systems
      International, MIT Laboratory for Computer Science, May 1990.

  [2] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Protocol
      Operations for Version 2 of the Simple Network Management
      Protocol (SNMPv2)", RFC 1448, SNMP Research, Inc., Hughes LAN
      Systems, Dover Beach Consulting, Inc., Carnegie Mellon
      University, April 1993.

  [3] McCloghrie, K., and M. Rose, Editors, "Management Information
      Base for Network Management of TCP/IP-based internets: MIB-II",
      STD 17, RFC 1213, Hughes LAN Systems, Performance Systems
      International, March 1991.

  [4] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Structure
      of Management Information for Version 2 of the Simple Network
      Management Protocol (SNMPv2)", RFC 1442, SNMP Research, Inc.,
      Hughes LAN Systems, Dover Beach Consulting, Inc., Carnegie Mellon
      University, April 1993.

  [5] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser,
      "Conformance Statements for Version 2 of the Simple Network
      Management Protocol (SNMPv2)", RFC 1444, SNMP Research, Inc.,
      Hughes LAN Systems, Dover Beach Consulting, Inc., Carnegie Mellon
      University, April, 1993.

  [6] Case, J., McCloghrie, K., Rose, M., and S. Waldbusser, "Textual
      Conventions for Version 2 of the Simple Network Management
      Protocol (SNMPv2)", RFC 1443, SNMP Research, Inc., Hughes LAN
      Systems, Dover Beach Consulting, Inc., Carnegie Mellon
      University, April 1993.
















Case                                                           [Page 44]

RFC 1628                        UPS MIB                         May 1994


7.  Security Considerations

  Security issues are not discussed in this memo.

8.  Author's Address

  Jeffrey D. Case, Ph.D.
  SNMP Research, Incorporated
  3001 Kimberlin Heights Road
  Knoxville, Tennessee 37920

  Phone:  (615) 573-1434
  EMail:  [email protected]






































Case                                                           [Page 45]