idnits 2.17.1 draft-ietf-eman-battery-mib-12.txt: Checking boilerplate required by RFC 5378 and the IETF Trust (see https://trustee.ietf.org/license-info): ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/1id-guidelines.txt: ---------------------------------------------------------------------------- No issues found here. Checking nits according to https://www.ietf.org/id-info/checklist : ---------------------------------------------------------------------------- No issues found here. Miscellaneous warnings: ---------------------------------------------------------------------------- == The copyright year in the IETF Trust and authors Copyright Line does not match the current year -- The document date (March 6, 2014) is 3697 days in the past. Is this intentional? Checking references for intended status: Proposed Standard ---------------------------------------------------------------------------- (See RFCs 3967 and 4897 for information about using normative references to lower-maturity documents in RFCs) ** Obsolete normative reference: RFC 5226 (Obsoleted by RFC 8126) == Outdated reference: A later version (-19) exists of draft-ietf-eman-framework-16 == Outdated reference: A later version (-13) exists of draft-ietf-eman-energy-monitoring-mib-09 Summary: 1 error (**), 0 flaws (~~), 3 warnings (==), 1 comment (--). Run idnits with the --verbose option for more detailed information about the items above. -------------------------------------------------------------------------------- 2 Network Working Group J. Quittek 3 Internet-Draft R. Winter 4 Intended status: Standards Track T. Dietz 5 Expires: September 7, 2014 NEC Europe Ltd. 6 March 6, 2014 8 Definition of Managed Objects for Battery Monitoring 9 draft-ietf-eman-battery-mib-12 11 Abstract 13 This memo defines a portion of the Management Information Base (MIB) 14 for use with network management protocols in the Internet community. 15 In particular, it defines managed objects that provide information on 16 the status of batteries in managed devices. 18 Status of this Memo 20 This Internet-Draft is submitted in full conformance with the 21 provisions of BCP 78 and BCP 79. 23 Internet-Drafts are working documents of the Internet Engineering 24 Task Force (IETF). Note that other groups may also distribute 25 working documents as Internet-Drafts. The list of current Internet- 26 Drafts is at http://datatracker.ietf.org/drafts/current/. 28 Internet-Drafts are draft documents valid for a maximum of six months 29 and may be updated, replaced, or obsoleted by other documents at any 30 time. It is inappropriate to use Internet-Drafts as reference 31 material or to cite them other than as "work in progress." 33 This Internet-Draft will expire on September 7, 2014. 35 Copyright Notice 37 Copyright (c) 2014 IETF Trust and the persons identified as the 38 document authors. All rights reserved. 40 This document is subject to BCP 78 and the IETF Trust's Legal 41 Provisions Relating to IETF Documents 42 (http://trustee.ietf.org/license-info) in effect on the date of 43 publication of this document. Please review these documents 44 carefully, as they describe your rights and restrictions with respect 45 to this document. Code Components extracted from this document must 46 include Simplified BSD License text as described in Section 4.e of 47 the Trust Legal Provisions and are provided without warranty as 48 described in the Simplified BSD License. 50 Table of Contents 52 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 54 2. The Internet-Standard Management Framework . . . . . . . . . . 4 56 3. Design of the Battery MIB Module . . . . . . . . . . . . . . . 5 57 3.1. MIB Module Structure . . . . . . . . . . . . . . . . . . . 5 58 3.2. Battery Technologies . . . . . . . . . . . . . . . . . . . 7 59 3.3. Battery Identification . . . . . . . . . . . . . . . . . . 8 60 3.4. Charging Cycles . . . . . . . . . . . . . . . . . . . . . 8 62 4. Definitions . . . . . . . . . . . . . . . . . . . . . . . . . 8 64 5. Security Considerations . . . . . . . . . . . . . . . . . . . 30 66 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 32 67 6.1. SMI Object Identifier Registration . . . . . . . . . . . . 32 68 6.2. Battery Technology Registration . . . . . . . . . . . . . 32 70 7. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 32 72 8. References . . . . . . . . . . . . . . . . . . . . . . . . . . 33 73 8.1. Normative References . . . . . . . . . . . . . . . . . . . 33 74 8.2. Informative References . . . . . . . . . . . . . . . . . . 33 76 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . . 34 78 1. Introduction 80 Today, more and more managed devices contain batteries that supply 81 them with power when disconnected from electrical power distribution 82 grids. Common examples are nomadic and mobile devices, such as 83 notebook computers, netbooks, and smart phones. The status of 84 batteries in such a device, particularly the charging status is 85 typically controlled by automatic functions that act locally on the 86 device and manually by users of the device. 88 In addition to this, there is a need to monitor battery status of 89 these devices by network management systems. This document defines a 90 portion of the Management Information Base (MIB) that provides a 91 means for monitoring batteries in or attached to managed devices. 92 The Battery MIB module defined in Section 4 meets the requirements 93 for monitoring the status of batteries specified in RFC 6988 94 [RFC6988]. 96 The Battery MIB module provides for monitoring the battery status. 97 According to the framework for energy management 98 [I-D.ietf-eman-framework] it is an Energy Managed Object, and thus, 99 MIB modules such as the Power and Energy Monitoring MIB 100 [I-D.ietf-eman-energy-monitoring-mib] could in principle be 101 implemented for batteries. The Battery MIB extends the more generic 102 aspects of energy management by adding battery-specific information. 103 Amongst other things, the Battery MIB enables the monitoring of: 105 o the current charge of a battery, 106 o the age of a battery (charging cycles), 107 o the state of a battery (e.g. being re-charged), 108 o last usage of a battery, 109 o maximum energy provided by a battery (remaining and total 110 capacity). 112 Further, means are provided for battery-powered devices to send 113 notifications when the current battery charge has dropped below a 114 certain threshold to inform the management system of needed 115 replacement. The same applies to the age of a battery. 117 Many battery-driven devices have existing instrumentation for 118 monitoring the battery status, because this is already needed for 119 local control of the battery by the device. This reduces the effort 120 for implementing the managed objects defined in this document. For 121 many devices only additional software will be needed but no 122 additional hardware instrumentation for battery monitoring. 124 Since there are a lot of devices in use that contain more than one 125 battery, means for battery monitoring defined in this document 126 support addressing multiple batteries within a single device. Also, 127 batteries today often come in packages that can include 128 identification and might contain additional hardware and firmware. 129 The former allows tracing a battery and allows continuous monitoring 130 even if the battery is e.g. installed in another device. The 131 firmware version is useful information as the battery behavior might 132 be different for different firmware versions. 134 Not explicitly in scope of definitions in this document are very 135 small backup batteries, such as for example, batteries used on PC 136 motherboard to run the clock circuit and retain configuration memory 137 while the system is turned off. Other means may be required for 138 reporting on these batteries. However, the MIB module defined in 139 Section 3.1 can be used for this purpose. 141 A traditional type of managed device containing batteries is an 142 Uninterruptible Power Supply (UPS) system; these supply other devices 143 with electrical energy when the main power supply fails. There is 144 already a MIB module for managing UPS systems defined in RFC 1628 145 [RFC1628]. The UPS MIB module includes managed objects for 146 monitoring the batteries contained in an UPS system. However, the 147 information provided by the UPS MIB objects is limited and tailored 148 the particular needs of UPS systems. 150 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", 151 "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and 152 "OPTIONAL" in this document are to be interpreted as described in RFC 153 2119 [RFC2119]. 155 2. The Internet-Standard Management Framework 157 For a detailed overview of the documents that describe the current 158 Internet-Standard Management Framework, please refer to section 7 of 159 RFC 3410 [RFC3410]. 161 Managed objects are accessed via a virtual information store, termed 162 the Management Information Base or MIB. MIB objects are generally 163 accessed through the Simple Network Management Protocol (SNMP). 164 Objects in the MIB are defined using the mechanisms defined in the 165 Structure of Management Information (SMI). This memo specifies MIB 166 modules that are compliant to the SMIv2, which is described in STD 167 58, RFC 2578 [RFC2578], STD 58, RFC 2579 [RFC2579] and STD 58,RFC 168 2580 [RFC2580]. 170 3. Design of the Battery MIB Module 172 3.1. MIB Module Structure 174 The Battery MIB module defined in this document defines objects for 175 reporting information about batteries. All managed objects providing 176 information of the status of a battery are contained in a single 177 table called batteryTable. The batteryTable contains one conceptual 178 row per battery. 180 Batteries are indexed by the entPhysicalIndex of the entPhysicalTable 181 defined in the ENTITY-MIB module [RFC6933]. An implementation of the 182 ENTITY-MIB module complying with the entity4CRCompliance MODULE- 183 COMPLIANCE statement is required for compliant implementations of the 184 BATTERY-MIB module. 186 If batteries are replaced, and the replacing battery uses the same 187 physical connector as the replaced battery, then the replacing 188 battery SHOULD be indexed with the same value of object 189 entPhysicalIndex as the replaced battery. 191 The kind of entity in the entPhysicalTable of the Entity MIB module 192 is indicated by the value of enumeration object entPhysicalClass. 193 All batteries SHOULD have the value of object entPhysicalClass set to 194 battery(14) in their row of the entPhysicalTable. 196 The batteryTable contains three groups of objects. The first group 197 (OIDs ending with 1-10) provides information on static properties of 198 the battery. The second group of objects (OIDs ending with 11-18) 199 provides information on the current battery state, if it is charging 200 or discharging, how much it is charged, its remaining capacity, the 201 number of experienced charging cycles, etc. 203 batteryTable(1) 204 +--batteryEntry(1) [entPhysicalIndex] 205 +-- r-n SnmpAdminString batteryIdentifier(1) 206 +-- r-n SnmpAdminString batteryFirmwareVersion(2) 207 +-- r-n Enumeration batteryType(3) 208 +-- r-n Unsigned32 batteryTechnology(4) 209 +-- r-n Unsigned32 batteryDesignVoltage(5) 210 +-- r-n Unsigned32 batteryNumberOfCells(6) 211 +-- r-n Unsigned64TC batteryDesignCapacity(7) 212 +-- r-n Unsigned32 batteryMaxChargingCurrent(8) 213 +-- r-n Unsigned32 batteryTrickleChargingCurrent(9) 214 +-- r-n Unsigned64TC batteryActualCapacity(10) 215 +-- r-n Unsigned32 batteryChargingCycleCount(11) 216 +-- r-n DateAndTime batteryLastChargingCycleTime(12) 217 +-- r-n Enumeration batteryChargingOperState(13) 218 +-- rwn Enumeration batteryChargingAdminState(14) 219 +-- r-n Unsigned64TC batteryActualCharge(15) 220 +-- r-n Unsigned32 batteryActualVoltage(16) 221 +-- r-n Integer32 batteryActualCurrent(17) 222 +-- r-n Integer32 batteryTemperature(18) 223 +-- r-n SnmpAdminString batteryCellIdentifier(19) 224 +-- rwn Unsigned64TC batteryAlarmLowCharge(20) 225 +-- rwn Unsigned32 batteryAlarmLowVoltage(21) 226 +-- rwn Unsigned64TC batteryAlarmLowCapacity(22) 227 +-- rwn Unsigned32 batteryAlarmHighCycleCount(23) 228 +-- rwn Integer32 batteryAlarmHighTemperature(24) 229 +-- rwn Integer32 batteryAlarmLowTemperature(25) 231 The third group of objects in this table (OIDs ending with 20-25) 232 indicates thresholds which can be used to raise an alarm if a 233 property of the battery exceeds one of them. Raising an alarm may 234 include sending a notification. 236 The Battery MIB defines seven notifications for indicating 238 1. a battery charging state change that was not triggered by writing 239 to object batteryChargingAdminState, 240 2. a low battery charging state, 241 3. a critical battery that cannot be used anymore for power supply, 242 4. an aged battery that may need to be replaced, 243 5. a battery exceed a temperature threshold, 244 6. a battery that has been connected, 245 7. disconnection of one or more batteries. 247 Notifications 2.-5. can use object batteryCellIdentifier to indicate 248 a specific cell or a set of cells within the battery that have 249 triggered the notification. 251 3.2. Battery Technologies 253 Static information in the batteryTable includes battery type and 254 technology. The battery type distinguishes primary (not 255 rechargeable) batteries from rechargeable (secondary) batteries and 256 capacitors. The battery technology describes the actual technology 257 of a battery, which typically is a chemical technology. 259 Since battery technologies are subject of intensive research and 260 widely used technologies are often replaced by successor technologies 261 within an few years, the list of battery technologies was not chosen 262 as a fixed list. Instead, IANA has created a registry for battery 263 technologies at http://www.iana.org/assignments/eman where numbers 264 are assigned to battery technologies (TBD). 266 The table below shows battery technologies known today that are in 267 commercial use with the numbers assigned to them by IANA. New 268 entries can be added to the IANA registry if new technologies are 269 developed or if missing technologies are identified. Note that there 270 exists a huge number of battery types that are not listed in the IANA 271 registry. Many of them are experimental or cannot be used in an 272 economically useful way. New entries should be added to the IANA 273 registry only if the respective technologies are in commercial use 274 and relevant to standardized battery monitoring over the Internet. 276 +----------------------------+----------+ 277 | battery technology | assigned | 278 | | number | 279 +----------------------------+----------+ 280 | Unknown | 1 | 281 | Other | 2 | 282 | Zinc-carbon | 3 | 283 | Zinc chloride | 4 | 284 | Nickel oxyhydroxide | 5 | 285 | Lithium-copper oxide | 6 | 286 | Lithium-iron disulfide | 7 | 287 | Lithium-manganese dioxide | 8 | 288 | Zinc-air | 9 | 289 | Silver oxide | 10 | 290 | Alkaline | 11 | 291 | Lead acid | 12 | 292 | Nickel-cadmium | 13 | 293 | Nickel-metal hydride | 14 | 294 | Nickel-zinc | 15 | 295 | Lithium-ion | 16 | 296 | Lithium polymer | 17 | 297 | Double layer capacitor | 18 | 298 +----------------------------+----------+ 300 3.3. Battery Identification 302 There are two identifiers to be used: The entPhysicalUUID defined in 303 the ENTITY-MIB [RFC6933] module and the batteryIdentifier defined in 304 this module. A battery is linked to an entPhysicalUUID through the 305 shared entPhysicalIndex. 307 The batteryIdentifier uniquely identifies the battery itself while 308 the entPhysicalUUID identifies the slot of the device in which the 309 battery is (currently) contained. For a non-replaceable battery both 310 identifiers are always linked to the same physical battery. But for 311 batteries that can be replaced, the identifiers have different 312 functions. 314 The entPhysicalUUID is always the same for a certain battery slot of 315 a containing device even if the contained battery is replaced by 316 another one. The batteryIdentifier is a representation of the 317 battery identifier set by the battery manufacturer. It is tied to 318 the battery and usually cannot be changed. 320 Many manufacturers deliver not just plain batteries but battery 321 packages including additional hardware and firmware. Typically, 322 these modules include an battery identifier that can by retrieved by 323 a device in which a battery has been installed. The value of the 324 object batteryIdentifier is an exact representation of this 325 identifier. The batteryIdentifier is useful when batteries are 326 removed and re-installed in the same device or in other devices. 327 Then the device or the network management system can trace batteries 328 and achieve continuity of battery monitoring. 330 3.4. Charging Cycles 332 The lifetime of a battery can be approximated using the measure of 333 charging cycles. A commonly used definition of a charging cycle is 334 the amount of discharge equal to the design (or nominal) capacity of 335 the battery [SBS]. This means that a single charging cycle may 336 include several steps of partial charging and discharging until the 337 amount of discharging has reached the design capacity of the battery. 338 After that the next charging cycle immediately starts. 340 4. Definitions 342 BATTERY-MIB DEFINITIONS ::= BEGIN 344 IMPORTS 345 MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, 346 mib-2, Integer32, Unsigned32 347 FROM SNMPv2-SMI -- RFC2578 348 SnmpAdminString 349 FROM SNMP-FRAMEWORK-MIB -- RFC3411 350 DateAndTime 351 FROM SNMPv2-TC -- RFC2579 352 MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP 353 FROM SNMPv2-CONF -- RFC2580 354 entPhysicalIndex 355 FROM ENTITY-MIB -- RFC6933 356 Unsigned64TC 357 FROM APPLICATION-MIB; -- RFC2564 359 batteryMIB MODULE-IDENTITY 360 LAST-UPDATED "201403051200Z" -- 05 March 2014 361 ORGANIZATION "IETF EMAN Working Group" 362 CONTACT-INFO 363 "General Discussion: eman@ietf.org 364 To Subscribe: http://www.ietf.org/mailman/listinfo/eman 365 Archive: http://www.ietf.org/mail-archive/web/eman 367 Editor: 368 Juergen Quittek 369 NEC Europe Ltd. 370 NEC Laboratories Europe 371 Kurfuersten-Anlage 36 372 69115 Heidelberg 373 Germany 374 Tel: +49 6221 4342-115 375 Email: quittek@neclab.eu" 377 DESCRIPTION 378 "This MIB module defines a set of objects for monitoring 379 batteries of networked devices and of their components. 381 Copyright (c) 2010 IETF Trust and the persons identified as 382 authors of the code. All rights reserved. 384 Redistribution and use in source and binary forms, with or 385 without modification, is permitted pursuant to, and subject 386 to the license terms contained in, the Simplified BSD 387 License set forth in Section 4.c of the IETF Trust's Legal 388 Provisions Relating to IETF Documents 389 (http://trustee.ietf.org/license-info). 391 This version of this MIB module is part of RFC yyyy; see 392 the RFC itself for full legal notices." 393 -- replace yyyy with actual RFC number & remove this notice 394 -- Revision history 396 REVISION "201403051200Z" -- 05 March 2014 397 DESCRIPTION 398 "Initial version, published as RFC yyyy." 399 -- replace yyyy with actual RFC number & remove this notice 401 ::= { mib-2 zzz } 402 -- zzz to be assigned by IANA. 404 --****************************************************************** 405 -- Top Level Structure of the MIB module 406 --****************************************************************** 408 batteryNotifications OBJECT IDENTIFIER ::= { batteryMIB 0 } 409 batteryObjects OBJECT IDENTIFIER ::= { batteryMIB 1 } 410 batteryConformance OBJECT IDENTIFIER ::= { batteryMIB 2 } 412 --================================================================== 413 -- 1. Object Definitions 414 --================================================================== 416 -------------------------------------------------------------------- 417 -- 1.1. Battery Table 418 -------------------------------------------------------------------- 419 batteryTable OBJECT-TYPE 420 SYNTAX SEQUENCE OF BatteryEntry 421 MAX-ACCESS not-accessible 422 STATUS current 423 DESCRIPTION 424 "This table provides information on batteries. It contains 425 one conceptual row per battery in a managed entity. 427 Batteries are indexed by the entPhysicalIndex of the 428 entPhysicalTable defined in the ENTITY-MIB (RFC6933). 430 For implementations of the BATTERY-MIB an implementation of 431 the ENTITY-MIB complying with the entity4CRCompliance 432 MODULE-COMPLIANCE statement of the ENTITY-MIB is required. 434 If batteries are replaced, and the replacing battery uses 435 the same physical connector as the replaced battery, then 436 the replacing battery SHOULD be indexed with the same value 437 of object entPhysicalIndex as the replaced battery." 438 ::= { batteryObjects 1 } 440 batteryEntry OBJECT-TYPE 441 SYNTAX BatteryEntry 442 MAX-ACCESS not-accessible 443 STATUS current 444 DESCRIPTION 445 "An entry providing information on a battery." 446 INDEX { entPhysicalIndex } 447 ::= { batteryTable 1 } 449 BatteryEntry ::= 450 SEQUENCE { 451 batteryIdentifier SnmpAdminString, 452 batteryFirmwareVersion SnmpAdminString, 453 batteryType INTEGER, 454 batteryTechnology Unsigned32, 455 batteryDesignVoltage Unsigned32, 456 batteryNumberOfCells Unsigned32, 457 batteryDesignCapacity Unsigned64TC, 458 batteryMaxChargingCurrent Unsigned32, 459 batteryTrickleChargingCurrent Unsigned32, 460 batteryActualCapacity Unsigned64TC, 461 batteryChargingCycleCount Unsigned32, 462 batteryLastChargingCycleTime DateAndTime, 463 batteryChargingOperState INTEGER, 464 batteryChargingAdminState INTEGER, 465 batteryActualCharge Unsigned64TC, 466 batteryActualVoltage Unsigned32, 467 batteryActualCurrent Integer32, 468 batteryTemperature Integer32, 469 batteryCellIdentifier SnmpAdminString, 470 batteryAlarmLowCharge Unsigned64TC, 471 batteryAlarmLowVoltage Unsigned32, 472 batteryAlarmLowCapacity Unsigned64TC, 473 batteryAlarmHighCycleCount Unsigned32, 474 batteryAlarmHighTemperature Integer32, 475 batteryAlarmLowTemperature Integer32 476 } 478 batteryIdentifier OBJECT-TYPE 479 SYNTAX SnmpAdminString 480 MAX-ACCESS read-only 481 STATUS current 482 DESCRIPTION 483 "This object contains an identifier for the battery. 485 Many manufacturers deliver not only simple batteries but 486 battery packages including additional hardware and firmware. 487 Typically, these modules include an identifier that can be 488 retrieved by a device in which a battery has been installed. 489 The identifier is useful when batteries are removed and 490 re-installed in the same or other devices. Then the device 491 or the network management system can trace batteries and 492 achieve continuity of battery monitoring. 494 If the battery is identified by more than one value, 495 for example, by a model number and a serial number, 496 then the value of this object is a concatenation of these 497 values, separated by the colon symbol ':'. The values 498 should be ordered that a more significant value comes 499 before a less significant one. In the example above, the 500 (more significant) model number would be first, the serial 501 number would follow: ':'. 503 If the battery identifier cannot be represented using the 504 ISO/IEC IS 10646-1 character set, then a hexadecimal 505 encoding of a binary representation of the entire battery 506 identifier must be used. 508 The value of this object must be an empty string if there 509 is no battery identifier or if the battery identifier is 510 unknown." 511 ::= { batteryEntry 1 } 513 batteryFirmwareVersion OBJECT-TYPE 514 SYNTAX SnmpAdminString 515 MAX-ACCESS read-only 516 STATUS current 517 DESCRIPTION 518 "This object indicates the version number of the firmware 519 that is included in a battery module. 521 Many manufacturers deliver not pure batteries but battery 522 packages including additional hardware and firmware. 524 Since the behavior of the battery may change with the 525 firmware, it may be useful to retrieve the firmware version 526 number. 528 The value of this object must be an empty string if there 529 is no firmware or if the version number of the firmware is 530 unknown." 531 ::= { batteryEntry 2 } 533 batteryType OBJECT-TYPE 534 SYNTAX INTEGER { 535 unknown(1), 536 other(2), 537 primary(3), 538 rechargeable(4), 539 capacitor(5) 540 } 541 MAX-ACCESS read-only 542 STATUS current 543 DESCRIPTION 544 "This object indicates the type of battery. 545 It distinguishes between primary (not rechargeable) 546 batteries, rechargeable (secondary) batteries and capacitors 547 which are not really batteries but often used in the same 548 way as a battery. 550 The value other(2) can be used if the battery type is known 551 but none of the ones above. Value unknown(1) is to be used 552 if the type of battery cannot be determined." 553 ::= { batteryEntry 3 } 555 batteryTechnology OBJECT-TYPE 556 SYNTAX Unsigned32 557 MAX-ACCESS read-only 558 STATUS current 559 DESCRIPTION 560 "This object indicates the technology used by the battery. 561 Numbers identifying battery types are registered at IANA. 562 A current list of assignments can be found at 563 . 565 Value 0 (unknown) MUST be used if the type of battery 566 cannot be determined. 568 Value 1 (other) can be used if the battery type is known 569 but not one of the types already registered at IANA." 570 ::= { batteryEntry 4 } 572 batteryDesignVoltage OBJECT-TYPE 573 SYNTAX Unsigned32 574 UNITS "millivolt" 575 MAX-ACCESS read-only 576 STATUS current 577 DESCRIPTION 578 "This object provides the design (or nominal) voltage of the 579 battery in units of millivolt (mV). 581 Note that the design voltage is a constant value and 582 typically different from the actual voltage of the battery. 584 A value of 0 indicates that the design voltage is unknown." 585 ::= { batteryEntry 5 } 587 batteryNumberOfCells OBJECT-TYPE 588 SYNTAX Unsigned32 589 MAX-ACCESS read-only 590 STATUS current 591 DESCRIPTION 592 "This object indicates the number of cells contained in the 593 battery. 595 A value of 0 indicates that the number of cells is unknown." 596 ::= { batteryEntry 6 } 598 batteryDesignCapacity OBJECT-TYPE 599 SYNTAX Unsigned64TC 600 UNITS "milliampere hours" 601 MAX-ACCESS read-only 602 STATUS current 603 DESCRIPTION 604 "This object provides the design (or nominal) capacity of 605 the battery in units of milliampere hours (mAh). 607 Note that the design capacity is a constant value and 608 typically different from the actual capacity of the battery. 609 Usually, this is a value provided by the manufacturer of the 610 battery. 612 A value of 0 indicates that the design capacity is 613 unknown." 614 ::= { batteryEntry 7 } 616 batteryMaxChargingCurrent OBJECT-TYPE 617 SYNTAX Unsigned32 618 UNITS "milliampere" 619 MAX-ACCESS read-only 620 STATUS current 621 DESCRIPTION 622 "This object provides the maximal current to be used for 623 charging the battery in units of milliampere (mA). 625 Note that the maximal charging current may not lead to 626 optimal charge of the battery and that some batteries can 627 only be charged with the maximal current for a limited 628 amount of time. 630 A value of 0 indicates that the maximal charging current is 631 unknown." 632 ::= { batteryEntry 8 } 634 batteryTrickleChargingCurrent OBJECT-TYPE 635 SYNTAX Unsigned32 636 UNITS "milliampere" 637 MAX-ACCESS read-only 638 STATUS current 639 DESCRIPTION 640 "This object provides the recommended current to be used for 641 trickle charging the battery in units of milliampere (mA). 643 Typically, this is a value recommended by the manufacturer 644 of the battery or by the manufacturer of the charging 645 circuit. 647 A value of 0 indicates that the recommended trickle charging 648 current is unknown." 649 ::= { batteryEntry 9 } 651 batteryActualCapacity OBJECT-TYPE 652 SYNTAX Unsigned64TC 653 UNITS "milliampere hours" 654 MAX-ACCESS read-only 655 STATUS current 656 DESCRIPTION 657 "This object provides the actual capacity of the 658 battery in units of milliampere hours (mAh). 660 Typically, the actual capacity of a battery decreases 661 with time and with usage of the battery. It is usually 662 lower than the design capacity 664 Note that the actual capacity needs to be measured and is 665 typically an estimate based on observed discharging and 666 charging cycles of the battery. 668 A value of 'ffffffff'H indicates that the actual capacity 669 cannot be determined." 670 ::= { batteryEntry 10 } 672 batteryChargingCycleCount OBJECT-TYPE 673 SYNTAX Unsigned32 674 MAX-ACCESS read-only 675 STATUS current 676 DESCRIPTION 677 "This object indicates the number of completed charging 678 cycles that the battery underwent. In line with the 679 Smart Battery Data Specification Revision 1.1, a charging 680 cycle is defined as the process of discharging the battery 681 by a total amount equal to the battery design capacity as 682 given by object batteryDesignCapacity. A charging cycle 683 may include several steps of charging and discharging the 684 battery until the discharging amount given by 685 batteryDesignCapacity has been reached. As soon as a 686 charging cycle has been completed the next one starts 687 immediately independent of the battery's current charge at 688 the end of the cycle. 690 For batteries of type primary(1) the value of this object is 691 always 0. 693 A value of 'ffffffff'H indicates that the number of charging 694 cycles cannot be determined." 695 ::= { batteryEntry 11 } 697 batteryLastChargingCycleTime OBJECT-TYPE 698 SYNTAX DateAndTime 699 MAX-ACCESS read-only 700 STATUS current 701 DESCRIPTION 702 "The date and time of the last charging cycle. The value 703 '0000000000000000'H is returned if the battery has not been 704 charged yet or if the last charging time cannot be 705 determined. 707 For batteries of type primary(1) the value of this object is 708 always '0000000000000000'H." 709 ::= { batteryEntry 12 } 711 batteryChargingOperState OBJECT-TYPE 712 SYNTAX INTEGER { 713 unknown(1), 714 charging(2), 715 fastCharging(3), 716 maintainingCharge(4), 717 noCharging(5), 718 discharging(6) 719 } 720 MAX-ACCESS read-only 721 STATUS current 722 DESCRIPTION 723 "This object indicates the current charging state of the 724 battery. 726 Value unknown(1) indicates that the charging state of the 727 battery cannot be determined. 729 Value charging(2) indicates that the battery is being 730 charged in a way that the charge of the battery increases. 732 Value fastCharging(3) indicated that the battery is being 733 charged rapidly, i.e. faster than in the charging(2) state. 734 If multiple fast charging states exist, all of these 735 states are indicated by fastCharging(3). 737 Value maintainingCharge(4) indicates that the battery is 738 being charged with a low current that compensates 739 self-discharging. This includes trickle charging, float 740 charging and other methods for maintaining the current 741 charge of a battery. 743 Value noCharging(5) indicates that the battery is not being 744 charged or discharged by electric current between the 745 battery and electric circuits external to the battery. 746 Note that the battery may still be subject to 747 self-discharging. 749 Value discharging(6) indicates that the battery is being 750 discharged and that the charge of the battery decreases." 751 ::= { batteryEntry 13 } 753 batteryChargingAdminState OBJECT-TYPE 754 SYNTAX INTEGER { 755 charging(2), 756 fastCharging(3), 757 maintainingCharge(4), 758 noCharging(5), 759 discharging(6), 760 notSet(7) 761 } 762 MAX-ACCESS read-write 763 STATUS current 764 DESCRIPTION 765 "The value of this object indicates the desired status of 766 the charging state of the battery. The real state is 767 indicated by object batteryChargingOperState. See the 768 definition of object batteryChargingOperState for a 769 description of the values. 771 When this object is initialized by an implementation of the 772 BATTERY-MIB module, its value is set to notSet(7). 774 However, a SET request can only set this object to either 775 charging(2), fastCharging(3), maintainingCharge(4), 776 noCharging(5), or discharging(6). Attempts to set this 777 object to notSet(7) will always fail with an 778 'inconsistentValue' error. In case multiple fast charging 779 states exist, the battery logic can choose an appropriate 780 fast charging state - preferably the fastest. 782 When the batteryChargingAdminState object is set, then the 783 BATTERY-MIB implementation must try to set the battery 784 to the indicated state. The result will be indicated by 785 object batteryChargingOperState. 787 Due to operational conditions and limitations of the 788 implementation of the BATTERY-MIB module, changing the 789 battery status according to a set value of object 790 batteryChargingAdminState may not be possible. 792 Setting the value of object batteryChargingAdminState 793 may result in not changing the state of the battery 794 to this value or even in setting the charging state 795 to another value. For example, setting 796 batteryChargingAdminState to value fastCharging(3) may 797 have no effect when the battery logic is not allowing 798 fast charging due to temperature constraints." 800 ::= { batteryEntry 14 } 802 batteryActualCharge OBJECT-TYPE 803 SYNTAX Unsigned64TC 804 UNITS "milliampere hours" 805 MAX-ACCESS read-only 806 STATUS current 807 DESCRIPTION 808 "This object provides the actual charge of the battery 809 in units of milliampere hours (mAh). 811 Note that the actual charge needs to be measured and is 812 typically an estimate based on observed discharging and 813 charging cycles of the battery. 815 A value of 'ffffffff'H indicates that the actual charge 816 cannot be determined." 817 ::= { batteryEntry 15 } 819 batteryActualVoltage OBJECT-TYPE 820 SYNTAX Unsigned32 821 UNITS "millivolt" 822 MAX-ACCESS read-only 823 STATUS current 824 DESCRIPTION 825 "This object provides the actual voltage of the battery 826 in units of millivolt (mV). 828 A value of 'ffffffff'H indicates that the actual voltage 829 cannot be determined." 830 ::= { batteryEntry 16 } 832 batteryActualCurrent OBJECT-TYPE 833 SYNTAX Integer32 834 UNITS "milliampere" 835 MAX-ACCESS read-only 836 STATUS current 837 DESCRIPTION 838 "This object provides the actual charging or discharging 839 current of the battery in units of milliampere (mA). 840 Charging current is represented by positive values, 841 discharging current is represented by negative values. 843 A value of '7fffffff'H indicates that the actual current 844 cannot be determined." 845 ::= { batteryEntry 17 } 847 batteryTemperature OBJECT-TYPE 848 SYNTAX Integer32 849 UNITS "deci-degrees Celsius" 850 MAX-ACCESS read-only 851 STATUS current 852 DESCRIPTION 853 "The ambient temperature at or within close proximity 854 of the battery. 856 A value of '7fffffff'H indicates that the temperature 857 cannot be determined." 858 ::= { batteryEntry 18 } 860 batteryCellIdentifier OBJECT-TYPE 861 SYNTAX SnmpAdminString 862 MAX-ACCESS read-only 863 STATUS current 864 DESCRIPTION 865 "The value of this object identifies one or more cells of a 866 battery. The format of the cell identifier may vary between 867 different implementations. It should uniquely identify one 868 or more cells of the indexed battery. 870 This object can be used for batteries, such as, for example, 871 lithium polymer batteries for which battery controllers 872 monitor cells individually. 874 This object is used by notifications of type 875 batteryLowNotification, batteryTemperatureNotification, 876 batteryCriticalNotification, and batteryAgingNotification. 877 These notifications can use the value of this object to 878 indicate the event that triggered the generation of the 879 notification in more details by specifying a single cell 880 or a set of cells within the battery which are specifically 881 addressed by the notification. 883 An example use case for this object is a single cell in a 884 battery that exceeds the temperature indicated by object 885 batteryAlarmHighTemperature. In such a case, a 886 batteryTemperatureNotification can be generated that not 887 just indicates the battery for which the temperature is 888 exceeded but also the particular cell. 890 The initial value of this object is the empty string. The 891 value of this object is set at each time a 892 batteryLowNotification, a batteryTemperatureNotification, 893 a batteryCriticalNotification, or a batteryAgingNotification 894 is generated. 896 When a notification is generated that does not indicate a 897 specific cell or set of cells, the value of this object is 898 set to the empty string." 899 ::= { batteryEntry 19 } 901 batteryAlarmLowCharge OBJECT-TYPE 902 SYNTAX Unsigned64TC 903 UNITS "milliampere hours" 904 MAX-ACCESS read-write 905 STATUS current 906 DESCRIPTION 907 "This object provides the lower threshold value for object 908 batteryActualCharge. If the value of object 909 batteryActualCharge falls below this threshold, 910 a low battery alarm will be raised. The alarm procedure may 911 include generating a batteryLowNotification. 913 This object should be set to a value such that when the 914 batteryLowNotification is generated, the battery is still 915 sufficiently charged to keep the device(s) that it powers 916 operational for a time long enough to take actions before 917 the powered device(s) enter a 'sleep' or 'off' state. 919 A value of 0 indicates that no alarm will be raised for any 920 value of object batteryActualCharge." 921 ::= { batteryEntry 20 } 923 batteryAlarmLowVoltage OBJECT-TYPE 924 SYNTAX Unsigned32 925 UNITS "millivolt" 926 MAX-ACCESS read-write 927 STATUS current 928 DESCRIPTION 929 "This object provides the lower threshold value for object 930 batteryActualVoltage. If the value of object 931 batteryActualVoltage falls below this threshold, 932 a low battery alarm will be raised. The alarm procedure may 933 include generating a batteryLowNotification. 935 This object should be set to a value such that when the 936 batteryLowNotification is generated, the battery is still 937 sufficiently charged to keep the device(s) that it powers 938 operational for a time long enough to take actions before 939 the powered device(s) enter a 'sleep' or 'off' state. 941 A value of 0 indicates that no alarm will be raised for any 942 value of object batteryActualVoltage." 943 ::= { batteryEntry 21 } 945 batteryAlarmLowCapacity OBJECT-TYPE 946 SYNTAX Unsigned64TC 947 UNITS "milliampere hours" 948 MAX-ACCESS read-write 949 STATUS current 950 DESCRIPTION 951 "This object provides the lower threshold value for object 952 batteryActualCapacity. If the value of object 953 batteryActualCapacity falls below this threshold, 954 a battery aging alarm will be raised. The alarm procedure 955 may include generating a batteryAgingNotification. 957 A value of 0 indicates that no alarm will be raised for any 958 value of object batteryActualCapacity." 959 ::= { batteryEntry 22 } 961 batteryAlarmHighCycleCount OBJECT-TYPE 962 SYNTAX Unsigned32 963 MAX-ACCESS read-write 964 STATUS current 965 DESCRIPTION 966 "This object provides the upper threshold value for object 967 batteryChargingCycleCount. If the value of object 968 batteryChargingCycleCount rises above this threshold, 969 a battery aging alarm will be raised. The alarm procedure 970 may include generating a batteryAgingNotification. 972 A value of 0 indicates that no alarm will be raised for any 973 value of object batteryChargingCycleCount." 974 ::= { batteryEntry 23 } 976 batteryAlarmHighTemperature OBJECT-TYPE 977 SYNTAX Integer32 978 UNITS "deci-degrees Celsius" 979 MAX-ACCESS read-write 980 STATUS current 981 DESCRIPTION 982 "This object provides the upper threshold value for object 983 batteryTemperature. If the value of object 984 batteryTemperature rises above this threshold, a battery 985 high temperature alarm will be raised. The alarm procedure 986 may include generating a batteryTemperatureNotification. 988 A value of '7fffffff'H indicates that no alarm will be 989 raised for any value of object batteryTemperature." 990 ::= { batteryEntry 24 } 992 batteryAlarmLowTemperature OBJECT-TYPE 993 SYNTAX Integer32 994 UNITS "deci-degrees Celsius" 995 MAX-ACCESS read-write 996 STATUS current 997 DESCRIPTION 998 "This object provides the lower threshold value for object 999 batteryTemperature. If the value of object 1000 batteryTemperature falls below this threshold, a battery 1001 low temperature alarm will be raised. The alarm procedure 1002 may include generating a batteryTemperatureNotification. 1004 A value of '7fffffff'H indicates that no alarm will be 1005 raised for any value of object batteryTemperature." 1006 ::= { batteryEntry 25 } 1008 --================================================================== 1009 -- 2. Notifications 1010 --================================================================== 1012 batteryChargingStateNotification NOTIFICATION-TYPE 1013 OBJECTS { 1014 batteryChargingOperState 1015 } 1016 STATUS current 1017 DESCRIPTION 1018 "This notification can be generated when a charging state 1019 of the battery (indicated by the value of object 1020 batteryChargingOperState) is triggered by an event other 1021 than a write action to object batteryChargingAdminState. 1022 Such an event may, for example, be triggered by a local 1023 battery controller." 1024 ::= { batteryNotifications 1 } 1026 batteryLowNotification NOTIFICATION-TYPE 1027 OBJECTS { 1028 batteryActualCharge, 1029 batteryActualVoltage, 1030 batteryCellIdentifier 1031 } 1032 STATUS current 1033 DESCRIPTION 1034 "This notification can be generated when the current charge 1035 (batteryActualCharge) or the current voltage 1036 (batteryActualVoltage) of the battery falls below a 1037 threshold defined by object batteryAlarmLowCharge or object 1038 batteryAlarmLowVoltage, respectively. 1040 Note that typically, this notification is generated in a 1041 state where the battery is still sufficiently charged to keep 1042 the device(s) that it powers operational for some time. 1043 If the charging state of the battery has become critical, 1044 i.e., the device(s) powered by the battery must go to a 1045 'sleep' or 'off' state, then the batteryCriticalNotification 1046 should be used instead. 1048 If the low charge or voltage has been detected for a single 1049 cell or a set of cells of the battery and not for the entire 1050 battery, then object batteryCellIdentifier should be set to 1051 a value that identifies the cell or set of cells. 1052 Otherwise, the value of object batteryCellIdentifier should 1053 be set to the empty string when this notification is 1054 generated. 1056 The notification should not be sent again for the same 1057 battery or cell before either (a) the current voltage or 1058 the current charge, respectively, has become higher than the 1059 corresponding threshold through charging or (b) an indication 1060 of a maintenance action has been detected, such as battery 1061 disconnection event, or a reinitialization of the battery 1062 monitoring system. 1064 This notification should not be sent when the battery is in 1065 a charging mode, i.e., the value of object 1066 batteryChargingOperState is charging(2) or fastCharging(3)." 1068 ::= { batteryNotifications 2 } 1070 batteryCriticalNotification NOTIFICATION-TYPE 1071 OBJECTS { 1072 batteryActualCharge, 1073 batteryActualVoltage, 1074 batteryCellIdentifier 1075 } 1076 STATUS current 1077 DESCRIPTION 1078 "This notification can be generated when the current charge 1079 of the battery falls so low that it cannot provide a 1080 sufficient power supply function for regular operation 1081 of the powered device(s). The battery needs to be charged 1082 before it can be used for regular power supply again. The 1083 battery may still provide sufficient power for a 'sleep' 1084 mode of powered device(s) or for a transition into an 'off' 1085 mode. 1087 If the critical state is caused a single cell or a set of 1088 cells of the battery, then object batteryCellIdentifier 1089 should be set to a value that identifies the cell or set of 1090 cells. Otherwise, the value of object batteryCellIdentifier 1091 should be set to the empty string when this notification is 1092 generated. 1094 The notification should not be sent again for the same 1095 battery before either the battery charge has increased 1096 through charging to a non-critical value or an indication 1097 of a maintenance action has been detected, such a battery 1098 disconnection event, or a reinitialization of the battery 1099 monitoring system. 1101 This notification should not be sent when the battery is in 1102 a charging mode, i.e., the value of object 1103 batteryChargingOperState is charging(2) or fastCharging(3)." 1104 ::= { batteryNotifications 3 } 1106 batteryTemperatureNotification NOTIFICATION-TYPE 1107 OBJECTS { 1108 batteryTemperature, 1109 batteryCellIdentifier 1110 } 1111 STATUS current 1112 DESCRIPTION 1113 "This notification can be generated when the measured 1114 temperature (batteryTemperature) rises above the threshold 1115 defined by object batteryAlarmHighTemperature or falls 1116 below the threshold defined by object 1117 batteryAlarmLowTemperature. 1119 If the low or high temperature has been detected for a 1120 single cell or a set of cells of the battery and not for the 1121 entire battery, then object batteryCellIdentifier should be 1122 set to a value that identifies the cell or set of cells. 1123 Otherwise, the value of object batteryCellIdentifier should 1124 be set to the empty string when this notification is 1125 generated. 1127 It may occur that the temperature alternates between values 1128 slightly below and slightly above a threshold. For limiting 1129 the notification rate in such a case, this notification 1130 should not be sent again for the same battery or cell, 1131 respectively, with in a time interval of 10 minutes. 1133 An exception to the rate limitations occurs immediately 1134 after the reinitialization of the battery monitoring system. 1135 If at this point in time the battery temperature is above 1136 the threshold defined by object batteryAlarmHighTemperature 1137 or below the threshold defined by object 1138 batteryAlarmLowTemperature, respectively, then this 1139 notification should be sent, independent of the time at 1140 which previous notifications for the same battery or cell, 1141 respectively, had been sent." 1142 ::= { batteryNotifications 4 } 1144 batteryAgingNotification NOTIFICATION-TYPE 1145 OBJECTS { 1146 batteryActualCapacity, 1147 batteryChargingCycleCount, 1148 batteryCellIdentifier 1149 } 1150 STATUS current 1151 DESCRIPTION 1152 "This notification can be generated when the actual 1153 capacity (batteryActualCapacity) falls below a threshold 1154 defined by object batteryAlarmLowCapacity 1155 or when the charging cycle count of the battery 1156 (batteryChargingCycleCount) exceeds the threshold defined 1157 by object batteryAlarmHighCycleCount. 1159 If the aging has been detected for a single cell or a set of 1160 cells of the battery and not for the entire battery, then 1161 object batteryCellIdentifier should be set to a value that 1162 identifies the cell or set of cells. Otherwise, the value 1163 of object batteryCellIdentifier should be set to the empty 1164 string when this notification is generated. 1166 This notification should not be sent again for the same 1167 battery or cell, respectively, before an indication of a 1168 maintenance action has been detected, such as a battery 1169 disconnection event, or a reinitialization of the battery 1170 monitoring system." 1171 ::= { batteryNotifications 5 } 1173 batteryConnectedNotification NOTIFICATION-TYPE 1174 OBJECTS { 1175 batteryIdentifier 1176 } 1177 STATUS current 1178 DESCRIPTION 1179 "This notification can be generated when it has been 1180 detected that a battery has been connected. The battery 1181 can be identified by the value of object batteryIdentifier 1182 as well as by the value of index entPhysicalIndex that is 1183 contained in the OID of object batteryIdentifier." 1184 ::= { batteryNotifications 6 } 1186 batteryDisconnectedNotification NOTIFICATION-TYPE 1187 STATUS current 1188 DESCRIPTION 1189 "This notification can be generated when it has been 1190 detected that one or more batteries have been disconnected." 1191 ::= { batteryNotifications 7 } 1193 --================================================================== 1194 -- 3. Conformance Information 1195 --================================================================== 1197 batteryCompliances OBJECT IDENTIFIER ::= { batteryConformance 1 } 1198 batteryGroups OBJECT IDENTIFIER ::= { batteryConformance 2 } 1200 -------------------------------------------------------------------- 1201 -- 3.1. Compliance Statements 1202 -------------------------------------------------------------------- 1204 batteryCompliance MODULE-COMPLIANCE 1205 STATUS current 1206 DESCRIPTION 1207 "The compliance statement for implementations of the 1208 BATTERY-MIB module. 1210 A compliant implementation MUST implement the objects 1211 defined in the mandatory groups batteryDescriptionGroup 1212 and batteryStatusGroup. 1214 Note that compliance with this compliance 1215 statement requires compliance with the 1216 entity4CRCompliance MODULE-COMPLIANCE statement of the 1217 ENTITY-MIB (RFC6933)." 1218 MODULE -- this module 1219 MANDATORY-GROUPS { 1220 batteryDescriptionGroup, 1221 batteryStatusGroup 1222 } 1224 GROUP batteryAlarmThresholdsGroup 1225 DESCRIPTION 1226 "A compliant implementation does not have to implement 1227 the batteryAlarmThresholdsGroup." 1229 GROUP batteryNotificationsGroup 1230 DESCRIPTION 1231 "A compliant implementation does not have to implement 1232 the batteryNotificationsGroup." 1234 GROUP batteryPerCellNotificationsGroup 1235 DESCRIPTION 1236 "A compliant implementation does not have to implement 1237 the batteryPerCellNotificationsGroup." 1239 GROUP batteryAdminGroup 1240 DESCRIPTION 1241 "A compliant implementation does not have to implement 1242 the batteryAdminGroup." 1244 OBJECT batteryAlarmLowCharge 1245 MIN-ACCESS read-only 1246 DESCRIPTION 1247 "A compliant implementation is not required 1248 to support set operations to this object." 1250 OBJECT batteryAlarmLowVoltage 1251 MIN-ACCESS read-only 1252 DESCRIPTION 1253 "A compliant implementation is not required 1254 to support set operations to this object." 1256 OBJECT batteryAlarmLowCapacity 1257 MIN-ACCESS read-only 1258 DESCRIPTION 1259 "A compliant implementation is not required 1260 to support set operations to this object." 1262 OBJECT batteryAlarmHighCycleCount 1263 MIN-ACCESS read-only 1264 DESCRIPTION 1265 "A compliant implementation is not required 1266 to support set operations to this object." 1268 OBJECT batteryTemperatureNotification 1269 MIN-ACCESS read-only 1270 DESCRIPTION 1271 "A compliant implementation is not required 1272 to support set operations to this object." 1274 ::= { batteryCompliances 1 } 1276 -------------------------------------------------------------------- 1277 -- 3.2. MIB Grouping 1278 -------------------------------------------------------------------- 1280 batteryDescriptionGroup OBJECT-GROUP 1281 OBJECTS { 1282 batteryIdentifier, 1283 batteryFirmwareVersion, 1284 batteryType, 1285 batteryTechnology, 1286 batteryDesignVoltage, 1287 batteryNumberOfCells, 1288 batteryDesignCapacity, 1289 batteryMaxChargingCurrent, 1290 batteryTrickleChargingCurrent 1291 } 1292 STATUS current 1293 DESCRIPTION 1294 "A compliant implementation MUST implement the objects 1295 contained in this group." 1296 ::= { batteryGroups 1 } 1298 batteryStatusGroup OBJECT-GROUP 1299 OBJECTS { 1300 batteryActualCapacity, 1301 batteryChargingCycleCount, 1302 batteryLastChargingCycleTime, 1303 batteryChargingOperState, 1304 batteryActualCharge, 1305 batteryActualVoltage, 1306 batteryActualCurrent, 1307 batteryTemperature 1308 } 1309 STATUS current 1310 DESCRIPTION 1311 "A compliant implementation MUST implement the objects 1312 contained in this group." 1313 ::= { batteryGroups 2 } 1315 batteryAdminGroup OBJECT-GROUP 1316 OBJECTS { 1317 batteryChargingAdminState 1318 } 1319 STATUS current 1320 DESCRIPTION 1321 "A compliant implementation does not have to implement the 1322 object contained in this group." 1323 ::= { batteryGroups 3 } 1325 batteryAlarmThresholdsGroup OBJECT-GROUP 1326 OBJECTS { 1327 batteryAlarmLowCharge, 1328 batteryAlarmLowVoltage, 1329 batteryAlarmLowCapacity, 1330 batteryAlarmHighCycleCount, 1331 batteryAlarmHighTemperature, 1332 batteryAlarmLowTemperature 1333 } 1334 STATUS current 1335 DESCRIPTION 1336 "A compliant implementation does not have to implement the 1337 objects contained in this group." 1338 ::= { batteryGroups 4 } 1340 batteryNotificationsGroup NOTIFICATION-GROUP 1341 NOTIFICATIONS { 1342 batteryChargingStateNotification, 1343 batteryLowNotification, 1344 batteryCriticalNotification, 1345 batteryAgingNotification, 1346 batteryTemperatureNotification, 1347 batteryConnectedNotification, 1348 batteryDisconnectedNotification 1349 } 1350 STATUS current 1351 DESCRIPTION 1352 "A compliant implementation does not have to implement the 1353 notifications contained in this group." 1354 ::= { batteryGroups 5 } 1356 batteryPerCellNotificationsGroup OBJECT-GROUP 1357 OBJECTS { 1358 batteryCellIdentifier 1359 } 1360 STATUS current 1361 DESCRIPTION 1362 "A compliant implementation does not have to implement the 1363 object contained in this group." 1364 ::= { batteryGroups 6 } 1365 END 1367 5. Security Considerations 1369 There are a number of management objects defined in this MIB module 1370 with a MAX-ACCESS clause of read-write. Such objects may be 1371 considered sensitive or vulnerable in some network environments. The 1372 support for SET operations in a non-secure environment without proper 1373 protection can have a negative effect on network operations. These 1374 are the tables and objects and their sensitivity/vulnerability: 1376 o batteryChargingAdminState 1377 Setting the battery charging state can be beneficial for an 1378 operator for various reasons such as charging batteries when the 1379 price of electricity is low. However, setting the charging state 1380 can be used by an attacker to discharge batteries of devices and 1381 thereby switching these devices off if they are powered solely by 1382 batteries. In particular, if the batteryAlarmLowCharge and 1383 batteryAlarmLowVoltage can also be set, this attack will go 1384 unnoticed (i.e. no notifications are sent). 1386 o batteryAlarmLowCharge and batteryAlarmLowVoltage 1387 These objects set the threshold for an alarm to be raised when the 1388 battery charge or voltage falls below the corresponding one of 1389 them. An attacker setting one of these alarm values can switch 1390 off the alarm by setting it to the 'off' value 0 or modify the 1391 alarm behavior by setting it to any other value. The result may 1392 be loss of data if the battery runs empty without warning to a 1393 recipient expecting such a notification. 1395 o batteryAlarmLowCapacity and batteryAlarmHighCycleCount 1396 These objects set the threshold for an alarm to be raised when the 1397 battery becomes older and less performant than required for stable 1398 operation. An attacker setting this alarm value can switch off 1399 the alarm by setting it to the 'off' value 0 or modify the alarm 1400 behavior by setting it to any other value. This may either lead 1401 to a costly replacement of a working battery or too old or too 1402 weak batteries being used. The consequence of the latter could 1403 e.g. be that a battery cannot provide power long enough between 1404 two scheduled charging actions causing the powered device to shut 1405 down and potentially lose data. 1407 o batteryAlarmHighTemperature and batteryAlarmLowTemperature 1408 These objects set thresholds for an alarm to be raised when the 1409 battery rises above/falls below them. An attacker setting one of 1410 these alarm values can switch off these alarms by setting them to 1411 the 'off' value '7fffffff'H or modify the alarm behavior by 1412 setting them to any other value. The result may e.g. be an 1413 unnecessary shutdown of a device if batteryAlarmHighTemperature is 1414 set to too low or damage to the device by too high temperatures if 1415 switched off or set to too high values or by damage to the battery 1416 when it e.g. is being charged. Batteries can also be damaged e.g. 1417 in an attempt to charge them at too low temperatures. 1419 Some of the readable objects in this MIB module (i.e., objects with a 1420 MAX-ACCESS other than not-accessible) may be considered sensitive or 1421 vulnerable in some network environments. It is thus important to 1422 control even GET and/or NOTIFY access to these objects and possibly 1423 to even encrypt the values of these objects when sending them over 1424 the network via SNMP. These are the tables and objects and their 1425 sensitivity/vulnerability: 1427 All potentially sensible or vulnerable objects of this MIB module are 1428 in the batteryTable. In general, there are no serious operational 1429 vulnerabilities foreseen in case of an unauthorized read access to 1430 this table. However, privacy issues need to be considered. It may 1431 be a trade secret of the operator 1432 o how many batteries are installed in a managed node (batteryIndex) 1433 o how old these batteries are (batteryActualCapacity and 1434 batteryChargingCycleCount) 1435 o when the next replacement cycle for batteries can be expected 1436 (batteryAlarmLowCapacity and batteryAlarmHighCycleCount) 1437 o what battery type and make are used with which firmware version 1438 (batteryIdentifier, batteryFirmwareVersion, batteryType, and 1439 batteryTechnology) 1441 SNMP versions prior to SNMPv3 did not include adequate security. 1442 Even if the network itself is secure (for example by using IPsec), 1443 there is no control as to who on the secure network is allowed to 1444 access and GET/SET (read/change/create/delete) the objects in this 1445 MIB module. 1447 It is RECOMMENDED that implementers consider the security features as 1448 provided by the SNMPv3 framework (see [RFC3410], section 8), 1449 including full support for the SNMPv3 cryptographic mechanisms (for 1450 authentication and privacy). 1452 Further, deployment of SNMP versions prior to SNMPv3 is NOT 1453 RECOMMENDED. Instead, it is RECOMMENDED to deploy SNMPv3 and to 1454 enable cryptographic security. It is then a customer/operator 1455 responsibility to ensure that the SNMP entity giving access to an 1456 instance of this MIB module is properly configured to give access to 1457 the objects only to those principals (users) that have legitimate 1458 rights to GET or SET (change/create/delete) them. 1460 6. IANA Considerations 1462 6.1. SMI Object Identifier Registration 1464 The Battery MIB module defined in this document uses the following 1465 IANA-assigned OBJECT IDENTIFIER value recorded in the SMI Numbers 1466 registry: 1468 Descriptor OBJECT IDENTIFIER value 1469 ---------- ----------------------- 1470 batteryMIB { mib-2 xxx } 1472 [NOTE for IANA: Please allocate an object identifier at 1473 http://www.iana.org/assignments/smi-numbers for object batteryMIB.] 1475 6.2. Battery Technology Registration 1477 Object batteryTechnology defined in Section 4 reports battery 1478 technologies. Eighteen values for battery technologies have 1479 initially been defined. They are listed in a table in Section 3.2. 1481 For ensuring extensibility of this list, IANA has created a registry 1482 for battery technologies at http://www.iana.org/assignments/eman and 1483 filled it with the initial list given in Section 3.2. 1485 New assignments of numbers for battery technologies will be 1486 administered by IANA through Expert Review ([RFC5226]). Experts must 1487 check for sufficient relevance of a battery technology to be added. 1489 [NOTE for IANA: Please create a new registry under 1490 http://www.iana.org/assignments/eman for battery types. Please fill 1491 the registry with values from the table in Section 3.2] 1493 7. Acknowledgements 1495 We would like to thank Steven Chew and Bill Mielke for their valuable 1496 input. 1498 8. References 1500 8.1. Normative References 1502 [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate 1503 Requirement Levels", BCP 14, RFC 2119, March 1997. 1505 [RFC5226] Narten, T. and H. Alvestrand, "Guidelines for Writing an 1506 IANA Considerations Section in RFCs", BCP 26, RFC 5226, 1507 May 2008. 1509 [RFC2578] McCloghrie, K., Ed., Perkins, D., Ed., and J. 1510 Schoenwaelder, Ed., "Structure of Management Information 1511 Version 2 (SMIv2)", STD 58, RFC 2578, April 1999. 1513 [RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. 1514 Schoenwaelder, Ed., "Textual Conventions for SMIv2", 1515 STD 58, RFC 2579, April 1999. 1517 [RFC2580] McCloghrie, K., Perkins, D., and J. Schoenwaelder, 1518 "Conformance Statements for SMIv2", STD 58, RFC 2580, 1519 April 1999. 1521 [RFC6933] Bierman, A., Romascanu, D., Quittek, J., and M. 1522 Chandramouli, "Entity MIB (Version 4)", RFC 6933, 1523 May 2013. 1525 8.2. Informative References 1527 [RFC6988] Quittek, J., Chandramouli, M., Winter, R., Dietz, T., and 1528 B. Claise, "Requirements for Energy Management", RFC 6988, 1529 September 2013. 1531 [I-D.ietf-eman-framework] 1532 Claise, B., Schoening, B., and J. Quittek, "Energy 1533 Management Framework", draft-ietf-eman-framework-16 (work 1534 in progress), March 2014. 1536 [I-D.ietf-eman-energy-monitoring-mib] 1537 Chandramouli, M., Claise, B., Schoening, B., Quittek, J., 1538 and T. Dietz, "Power and Energy Monitoring MIB", 1539 draft-ietf-eman-energy-monitoring-mib-09 (work in 1540 progress), February 2014. 1542 [RFC1628] Case, J., "UPS Management Information Base", RFC 1628, 1543 May 1994. 1545 [RFC3410] Case, J., Mundy, R., Partain, D., and B. Stewart, 1546 "Introduction and Applicability Statements for Internet- 1547 Standard Management Framework", RFC 3410, December 2002. 1549 [SBS] "Smart Battery Data Specification", Revision 1.1, 1550 December 1998. 1552 Authors' Addresses 1554 Juergen Quittek 1555 NEC Europe Ltd. 1556 NEC Laboratories Europe 1557 Network Research Division 1558 Kurfuersten-Anlage 36 1559 Heidelberg 69115 1560 DE 1562 Phone: +49 6221 4342-115 1563 Email: quittek@neclab.eu 1565 Rolf Winter 1566 NEC Europe Ltd. 1567 NEC Laboratories Europe 1568 Network Research Division 1569 Kurfuersten-Anlage 36 1570 Heidelberg 69115 1571 DE 1573 Phone: +49 6221 4342-121 1574 Email: Rolf.Winter@neclab.eu 1576 Thomas Dietz 1577 NEC Europe Ltd. 1578 NEC Laboratories Europe 1579 Network Research Division 1580 Kurfuersten-Anlage 36 1581 Heidelberg 69115 1582 DE 1584 Phone: +49 6221 4342-128 1585 Email: Thomas.Dietz@neclab.eu