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