If you're upgrading from an earlier version, see the UPGRADING file.

For a complete and more detailed list of changes, please refer to the
ChangeLog file (generated for release archives), or to the Git version
control history for "live" codebase.

---------------------------------------------------------------------------
Release notes for NUT 2.8.0 - what's new since 2.7.4:

NOTE: Earlier discussions (mailing list threads, GitHub issues, etc.) could
refer to this change set (too long in the making) as NUT 2.7.5.

 - New (optional) keywords for configuration files were added,
   so existing NUT 2.7.x builds would not accept them if some
   deployments switch versions back and forth -- due to this,
   semantically the version was bumped to NUT 2.8.x.

 - Add support for openssl-1.1.0 (Arjen de Korte)

 - libusb-1.0 API support in addition to libusb-0.1 API [#300]

 - Add support for `DISABLE_WEAK_SSL=true` in upsd.conf to disable older/weaker
   SSL/TLS protocols and ciphers: when NUT is built against relatively recent
   versions of OpenSSL or NSS it will be restricted to TLSv1.2 or better.
   For least-surprise, currently defaults to `false` and complains in log
   [PR #1043]

 - Add support for `ALLOW_NO_DEVICE=true` (as an upsd.conf flag or environment
   variable passed from caller of the program), to allow starting the data
   server initially without any device configurations and reloading it later
   to apply config changes on the fly [PR #766]

 - Add support for `debug_min=NUM` setting (ups.conf, upsd.conf, upsmon.conf)
   to specify the minimum debug verbosity for daemons. This allows "in-vivo"
   troubleshooting of service daemons without editing init scripts or service
   unit definitions.

 - Improve support for upsdrvctl for managing of numerous device configs,
   including default "maxretry=3" and a "nowait" option to complete the
   "start of everything" mode after triggering the drivers and not waiting
   for them to complete initializing. This matters on systems that monitor
   from dozens to hundreds of devices.

 - Drivers support a new value for `synchronous` setting, which is the
   new default now: `auto`.  Initially after driver start-up this mode
   acts as the older default `off`, but would fall back to `on` in case
   the driver fails to send reports to `upsd` by overflowing the socket
   buffer in async mode -- so the next connections of this driver uptime
   would be synchronized (potentially slower, but safer -- blocking on
   writes to the data server).  This adaptation would primarily impact
   and benefit devices with many (hundreds of) data points, such as
   ePDUs and daisy chains. [issue #1309, PR #1315]

 - Daemons such as upsd, upsmon, upslog, and device drivers previously
   implied that enabled debugging (or upslog to stdout) means foreground
   running, otherwise the daemon was always sent to the background.
   Now there are explicit options for this (`-F`/`-B`), although default
   behavior is retained. This change is used for simplified service unit
   definitions.

 - Improvements for device discovery or driver "lock-picking", including
   general support for:
   * "Standalone" mode (`-s` option), to monitor a device which is not
     detailed or mentioned in ups.conf
   * `NUT_ALTPIDPATH` and `NUT_STATEPATH` environment variables to override
     the paths built into the driver binary [PR #473 and #507]
   * "Driver data dump" mode (`-d` option), to poll a device for one or
     few ('update_count' ) loops, report discovered values (dump the data
     tree in upsc-like format), and exit. This complements the `nut-scanner`
     for finding and identifying devices.

 - support for new devices:
   * IBM 6000 VA LCD 4U Rack UPS; 5396-1Kx (USB)
   * Phoenix Contact QUINT-UPS model 2320461 (Modbus)
   * Tripp-Lite SU3000LCD2UHV (USB; protocol 1330)
   * Emerson Avocent PM3000 PDU (SNMP)
   * HPE ePDU (SNMP)

 - nutdrv_qx: enhanced estimation of remaining battery runtime based
   on speed of voltage drop, which varies as they age [PR #1027]

 - nutdrv_qx: several subdrivers added or improved, including:
   * "snr" subdriver with USB connection, for SNR-UPS-LID-XXXX [PR #1008].
     Note that end-users should reference explicitly the `snr` subdriver
     in their `ups.conf` settings because of USB chip using the same
     values of VendorID/ProductID as fabula_subdriver, fuji_subdriver,
     and krauler_subdriver.
   * "hunnox" subdriver, as a dialect of earlier "fabula" [PR #638]
     adds support for Hunnox HNX-850 with USB connection and reported to work
     for Powercool, Iron Guardian, ARES devices and possibly many others from
     discussions linking to the pull request which introduced the driver.
   * "phoenixtec" subdriver for Masterguard A and E series, device series
     A700/1000/2000/3000(-19) and E40/60/100(-19). [PR #975]
   * "ablerex" subdriver provided by the OEM vendor, note that it replaces
     "krauler_subdriver" as default handler for VID:PID 0xffff:0x0000
     [PR #1135]
   * Legrand HID defined and handled by "krauler_subdriver" by default
     [PR #1075, issue #616]
   * add new "armac" subdriver, tested with Armac R/2000I/PSW, but should
     support other UPSes that work with "PowerManagerII" software from
     Richcomm Technologies from around 2004-2005 [PR #1239, issue #1238]

 - microsol-apc (starting at version 0.68 as derived from solis 0.67):
   adding support for newer APC Back-UPS BR hardware, such as
   APC Back-UPS BZ1500, BZ2200BI and BZ2200I [PR #994]

 - pijuice: added new i2c bus driver for PiJuice HAT, a battery UPS module
   for the Raspberry Pi systems [PR #730]

 - huawei-ups2000: added new driver for USB (Linux 5.12+ so far) and Serial
   RS-232 Modbus device support of Huawei UPS2000/2000A (1kVA-3kVA) series,
   and possibly some related FSP UPS models. [PR #954]

 - socomec_jbus: added new driver for modbus-based JBUS protocol over serial
   RS-232 for Socomec UPS (tested with a DIGYS 3/3 15kVA model, working
   on Linux x86-64 and Raspberry Pi 3 ARM). [PR #1313]

 - adelsystem_cbi: added new driver for ADELSYSTEM CBI2801224A, an all-in-one
   12/24Vdc DC-UPS, which supports the modbus RTU communication protocol
   [PR #1282]

 - generic_modbus: added new driver for TCP and Serial Modbus device support.
   The driver has been tested against PULS UPS (model UB40.241) via
   MOXA ioLogikR1212 (RS485) and ioLogikE1212 (TCP/IP), and configuration
   allows to map custom registers and addresses to NUT events [PR #1052]

 - genericups: added support for FTTx battery backup devices, and new signal
   type mappings for the contact closure pins interpretation (RB for replace
   battery, BYPASS for disconnected battery, and "none" or NULL for signals
   to ignore) [PR #1061]

 - add devices to HCL/DDL:
   * APC Back-UPS CS (USB)
   * CPS CP1500EPFCLCD (USB)
   * CPS EC350G, EC750G (USB)
   * CPS PR2200LCDRT2U (SNMP)
   * Eaton ATS 16 and 30 (SNMP)
   * Eaton 5E2200VA (USB)
   * Eaton 9PX Split Phase 6/8/10 kVA (XML/USB/SHUT)
   * Eaton 9PX (XML/USB/SHUT)
   * Eaton Ellipse PRO 650 VA (USB)
   * Ippon Back Comfo Pro II 650/850/1050 (USB)
   * Numeric Digital 800 (USB)
   * Opti-UPS PS1500E (USB)
   * Powercool 350VA to 1600VA (USB)

 - C++11 support in nutclient library and cppunit tests

 - Added C++ testing mock for TcpClient class (nutclientmem/MemClientStub:
   data stored in local memory) [PR #1034]

 - Dual Python 2 and 3 compatibility in development scripts; ability to
   run build activities and resulting built NUT programs on systems that
   do not have a binary named "python" [PR #1115 and some before it]

 - Added Russian translation for NUT-Monitor GUI client [PR #806]

 - Various USB driver families: expanded device-matching with "device" in
   addition to "bus" and generic USB fields. This is needed to support
   multiple attached devices that seem identical by other fields (e.g.
   same vendor, same model, same USB bus, and no serial number) [PR #974]

 - Various USB driver families: Improved HID parsing for byte-stream to
   number conversions on different CPU architectures [PR #1024]

 - Various USB HID driver families: added support for composite devices
   utilizing interface greater than 0 for the UPS interface [PR #1044]

 - usbhid-ups:
   * added generic framework for fixing Report Descriptors which can be
     used for different manufacturers by adding code to the appropriate
     subdriver rather than polluting the main code with UPS specific
     exceptions, and applied fixes for known mistakes in (some releases
     of firmware for) CyberPower CPS*EPFCLCD [issue #439, PR #1245]
   * added `onlinedischarge` option for UPSes that report `OL+DISCHRG`
     when wall power is lost [PR #811]
   * CPS HID: add input.frequency and output.frequency
   * OpenUPS2: only check OEM Information string once (fewer log messages)
   * Liebert GXT4 USB VID:PID [10AF:0000]
   * add a little delay between multicommands [PR #1228]
   * fix Eaton/MGE mapping for beeper handling
   * add IBM USB VID
   * add deep battery test for CyberPower OL3000RMXL2U
   * report the libusb version used
   * fixed CPU architecture dependent bitmask math issues, causing wrong
     numbers interpreted from wire protocol data in Big-Endian LP64 builds
     (SPARC64, s390x, etc.) [issue #1023, PRs #1024, #1040, #1055, #1226]
   * add Delta UPS Amplon R Series, tested on R1K and R3K model [PR #987]
   * add Delta Minuteman UPS VID/PID [PR #1230, issues #555 and #1227]
   * add AMETEK Powervar UPM [PR #733]
   * add Tripplite AVR750U (ProductID 0x3024) [PR #963]
   * add Arduino HID device support with new arduino-hid subdriver [PR #1044]
   * add new salicru-hid subdriver, tested with Salicru SPS Home 850 VA
     [PR #1199, issue #732]
   * add new ever-hid subdriver to support EVER UPS devices (Sinline RT Series,
     Sinline RT XL Series, ECO PRO AVR CDS Series) [PR #431]
   * add ability to set `battery.mfr.date` for APC HID UPS [PR #1318]

 - usbhid-ups / mge-shut: compute a realpower output load approximation for
   Eaton UPS when the needed data is not present

 - snmp-ups:
   * APC ePDU MIB support
   * add `input.phase.shift` variable
   * add configurable write-able `ondelay` (`ups.delay.start`) and `offdelay`
     (`ups.delay.shutdown`) as timeticks support [PR #276]
   * outlet groups
   * fix the rounding / truncation of some values
   * add outlet.N.name for Eaton ePDU
   * add input.bypass.frequency for Eaton 3ph
   * fix support for Eaton 2-phase ("split phase") UPS
   * add flag to list currently loaded MIB-to-NUT mappings
   * fix input.L2.voltage on Eaton G2/G3 PDU
   * update Eaton Aphel Revelation MIB
   * support Raritan Dominion PX2 PDU
   * support Emerson Avocent PM3000 PDU
   * improve ALARM flag handling
   * add firmware version for new HPE Network card
   * add ups.load, battery.charge, input.{voltage,frequency} and output.voltage
     for CyberPower, as well as shutdown and other instant commands
   * several rounds of updates for Eaton devices, including new ATS and ePDU
     hardware families
   * fixed bit mask values for flags to surely use different numbers behind
     logical items (inevitably changing some of those macro symbols) [PR #1180]

 - snmp-ups and nut-scanner should now support more SNMPv3 Auth and Priv
   protocols, as available at NUT build time [PRs #1165, #1172]

 - nut-scanner: various improvements, including:
   * detection of libraries at runtime
   * tracing information
   * limiting parallelism (thread count) [PRs #1158, #1164]

 - nut-ipmipsu: improve FreeIPMI support to build cleanly against older and
   newer FreeIPMI versions [PR #1179]

 - the powerpanel driver now also supports CyberPower OR1500LCDRTXL2U with
   serial cable [PR #538]

 - powercom driver: implement `nobt` config parameter to skip battery check
   on initialization/startup [PR #1256]

 - netxml-ups:
   * Report calibration status
   * Fix for erroneous battery info (MGEXML/0.30) [PR #1069]

 - solis: various improvements and fixes

 - liebert-esp2: Correct battery V scaling, update docs, implement split-phase
   unit support [PR #412]

 - tripplite: the "Tripp-Lite SmartUPS driver" as tested with SMART2200NET
   learned to discover the firmware generation and some device features,
   and in particular to manage power separately on one or two outlet groups
   [PR #1048]

 - libnutclient: introduce getDevicesVariableValues() to improve performances
   when querying many devices (up to 15 times faster)

 - nut-driver-enumerator: introduced a script for Linux systemd and
   Solaris/illumos SMF to inspect current NUT configuration in ups.conf
   file and generate service management instances for each currently
   tracked power device. Also introduced services to monitor the NUT
   configuration and react to editions of this file, mostly intended
   for deployments that do massive monitoring of dynamically changing
   farms of power devices.

 - Fix File descriptors leaks by upsmon and upssched (SELinux errors)

 - systemd support improvements:
   * POWEROFF_WAIT
   * reload support for upsd
   * Deliver systemd-tmpfiles config to pre-create runtime locations
     [PR #1037 for Issue #1030]
   * Update units with SyslogIdentifier=%N for better logging [PR #1054]

 - upsrw: display the variable type beside ENUM / RANGE

 - Implement status tracking for instant commands (instcmd) and variables
   settings (setvar): this allows to get the actual execution status from the
   driver, and is available in libraries and upscmd / upsrw [PR #659]

 - Add support for extra parameter for instant commands, both in library and
   in upscmd

 - new protocol variables:
   * `input.phase.shift`
   * `outlet.N.name`
   * `outlet.N.type`
   * `battery.voltage.cell.max`, `battery.voltage.cell.min`
   * `battery.temperature.cell.max`, `battery.temperature.cell.min`
   * `battery.status`
   * `battery.capacity.nominal`
   * `battery.date.maintenance` (and clarified purpose of `battery.date`)
   * `battery.packs.external` (and clarified purpose of `battery.packs`)
   * `experimental.*` namespace introduced [PR #1046] to facilitate
     introduction of NUT drivers and their data points for which we do
     not yet have concepts, or which the original driver contributors
     did not map well per suitable NUT standards: this allows to balance
     having those drivers available in the project vs. least surprise
     for when the explicitly experimental names are changed to something
     stable and standardized.
   * Proposed to track Date and Time values (still as "opaque strings")
     preferably in representations compatible to ISO-8601/RFC-3339 [PR #1076]
     (standards update; changes to actual codebase to be applied in the future)
   ** New routine to convert a US formatted date string "MM/DD/YYYY" to an
      ISO 8601 Calendar date "YYYY-MM-DD" was added to snmp-ups.c [PR #1078]

 - Master/Slave terminology was deprecated in favor of Primary/Secondary
   modes of `upsmon` client:
   * Respective keywords in the configuration files (`upsd.users` and
     `upsmon.conf`) are supported as backwards-compatible settings,
     but the obsoleted values are no longer documented.
   * Protocol keyword support was similarly updated, with `upsmon` now
     first trying to elevate privileges with `PRIMARY <ups>` request,
     and falling back to `MASTER <ups>` just in case it talks to an
     older build of an `upsd` server.
   * For the principle of least surprise, NUT codebase still exposes the
     `net_master()` (as handler for `MASTER` net command) in header and
     C code for the sake of existing linked binaries, and returns the
     `OK MASTER-GRANTED` line to the older client that invoked it.
   * Newly introduced `net_primary()` (as handler for `PRIMARY` net command)
     calls the exact same application logic, but returns `OK PRIMARY-GRANTED`
     line to the client.
   * Python binding updated to handle both cases, as the only found in-tree
     protocol consumer of the full-line text.
   * For more details see issue #840 and several pull requests referenced
     from it, and discussions on NUT mailing lists.

 - Build fixes:
   * In general, numerous fixes were applied to ensure portability and avoid
     warnings (fixing a number of real bugs that caused them); CI was extended
     to keep the codebase free of those types of warnings which we have got
     rid of, requiring builds to succeed cleanly in several dozen combinations
     of compiler versions, C standard revisions (C99 upwards, though on many
     OSes with GNU99+ extensions), operating systems and CPU architectures.
   * Public CI introduced to automatically test every contribution (PR) and
     resulting increment of main NUT codebase, including Travis CI and LGTM.com
     services, and a Jenkins farm on virtual hardware donated by Fosshost.org;
     this augments testing earlier provided for some branches by Buildbot.
   * Added cppunit testing with valgrind for the C++ client library
   * Make targets added for shell script syntax checks for helper and service
     scripts
   * Make targets added for spellcheck and for maintenance of the dictionary,
     including incremental spellcheck to only parse recently edited text files
   * The AsciiDoc detection has been reworked to allow NUT to be built from
     source without requiring asciidoc/a2x (using pre-built man pages from
     the distribution tarball, for instance)
   * Makefile contents rearranged for more resilient out-of-tree and in-tree
     builds beside those made from the root workspace directory
   * Makefiles are tested with GNU Make and BSD Make to ensure portable recipes
   * More use of `pkg-config` to detect dependencies at configure time, as
     well as fail-safe detection of presence of pkg-config (and its macros)
     to survive and build without it too
   * "slibtool" pedantic nuances now supported, allowing an alternative to
     GNU libtool
   * Build scripts updated to remove obsoleted calls to cleanly work with
     autoconf-2.70 releases in 2020 (also works with 2.69 which was the
     earlier release since 2012)
   * Dynamic library loading used in certain programs and use-cases improved,
     especially for 64-bit vs 32-bit builds on multiple-bitness OSes
   * Logging routines like `upsdebugx()` were refactored as macros so there
     is slightly less overhead when logging is disabled [PRs #685 and #1100]
   * Numerous classes of compilation warnings eradicated, many of those being
     potential issues with implicit data type conversions and varied numeric
     type width, signedness, string buffer size, uninitialized variables or
     structure fields; some more in progress
   * Several logical errors found and fixed during this walk over codebase.
   * Cases where compilers were overly zealous and particular code was written
     the way wit was intentionally, including some comparisons that help with
     different-bitness builds but indeed seem superfluous in a certain single
     bitness, were commented and encased in pragmas to disable the warnings
   * Basic coding style (indentations, lack of trailing white space) applied
     per developer guide, but not automatically enforced/checked yet.

 - Due to changes needed to resolve build warnings, mostly about mismatching
   data types for some variables, some structure definitions and API signatures
   of several routines had to be changed for argument types, return types,
   or both. Primarily this change concerns internal implementation details
   (may impact update of NUT forks with custom drivers using those), but a
   few changes also happened in header files installed for builds configured
   `--with-dev` and so may impact `upsclient` and `nutclient` (C++) consumers.
   At the very least, binaries for those consumers should be rebuilt to remain
   stable with NUT 2.8.0 and not mismatch int-type sizes and other arguments.

 - As usual, more bugfixes, cleanup and improvements, on both source code
   and documentation.

---------------------------------------------------------------------------
Release notes for NUT 2.7.4 - what's new since 2.7.3:

 - New class of device supported: ATS - Automatic Transfer Switch are now
   supported in NUT. Eaton ATS are supported, and APC ones should be too. Users
   are welcomed to test and provide feedback

 - NUT command and variable naming scheme:
   * Document battery.charger.status, which will in time replace the historic
     CHRG and DISCHRG flags published in ups.status
   * Many extensions to support outlets groups, thresholds / alarms (ambient,
     input, output, outlet and outlet.group)

 - support for new devices:
   AEG PROTECT B / NAS
   APC ATS AP7724 (should be supported)
   Asium P700
   Eaton ATS
   Eaton 5E 1100iUSB
   Eaton E Series DX UPS 1-20 kVA
   Eaton Powerware 9125-5000g
   Electrys UPS 2500
   Fideltronic INIGO Viper 1200
   Legrand Keor Multiplug
   LYONN CTB-800V
   Micropower LCD 1000
   NHS Laser Senoidal 5000VA
   Sweex model P220
   TS Shara
   Various APCUPSD-controlled APC devices

 - snmp-ups:
   * Improve automatic detection algorithm
   * Provide access to Net-SNMP timeout and retries
   * Proper handling of integer RW variables
   * Implement support for alarms, through ups.alarm and outlet.n.alarm
   * Improve log/debug output trace
   * Fix loss of precision when setting values, using upsrw
   * Support for outlets group management
   * Many improvements and simplification
   * Add support for Tripplite units using IETF mib
   * Improve communication staleness detection and recovery
   * Add devices MAC address publication
   * Register values enumerations, when available
   * Many improvements and fixes to the SNMP subdriver creation script

 - Eaton:
   * 3ph SNMP:
     Many improvements to Powerware / XUPS MIB, for data and commands
     Add support for Eaton Power Xpert Gateway UPS Card
     Improve support for temperature and humidity, including low / high values
     Alarms handling
   * ePDU (G2 and G3):
     Improve support for ambient sensor, including thresholds and dry contacts
     Outlet groups handling, including data, thresholds, settings and commands
     Alarms handling
   * XML/PDC (netxml-ups):
     Fix Eaton XML published data
     Add some settings (R/W flags) on ambient thresholds

 - bcmxcp_usb: improvements for device claiming and multi-packets responses

 - dummy-ups: allow any variable to be modified

 - libnutclient: Fix for reads when the socket was closed by NUT server

 - macosx-ups:
   * fix for 10.10 (Yosemite), v1.1
   * gracefully handle disconnection of UPS (return "data stale")

 - nutdrv_atcl_usb: point to nutdrv_qx (fuji) for 0001:0000

 - nutdrv_qx:
   * Add new 'sgs' USB subdriver to support TS Shara units
   * various improvements and simplification, to the code and documentation

 - nut-ipmipsu: improve FreeIPMI support

 - nut-scanner:
   * Don't depend on development libraries, by looking at some known paths,
     including the one provided through --libdir, to find the correct libraries
   * Fix a crash on a 2nd call to libnutscan with SNMP method

 - powercom: fix the processing of input and output voltage for KIN units

 - solis:
   * many improvements and cleanup
   * resync with end-of-packet character
   * fixes for Microsol Back-Ups BZ1200-BR

 - tripplitesu: Fix initialization when tripplite firmware is buggy (for
   Tripplite SU1000RT2U and possibly more)

 - usbhid-ups:
   * various minor improvements
   * support for Eaton UPS with dual HID report descriptor in HID Parser
   * handle missing USB strings in APC code

 - SSL support through Mozilla NSS: Rework the NSS tests to ensure that NSS is
   actually installed and usable for enabling SSL support in NUT

 - Augeas support: Augeas lens for ups.conf was updated to add various missing
   global directives and ups fields

 - scripts/systemd/nut-server.service.in: Restore systemd relationship since it
   was preventing upsd from starting whenever one or more drivers, among several,
   was failing to start

 - Fix UPower device matching for recent kernels, since hiddev* devices now have
   class "usbmisc", rather than "usb"

 - Network protocol information: default to type NUMBER for variables that are
   not flagged as STRING . This point is subject to improvements or change in
   the next release 2.7.5.  Refer to docs/net-protocol.txt for more information

 - As usual, more bugfixes, cleanup and improvements, on both source code
   and documentation.

---------------------------------------------------------------------------
Release notes for NUT 2.7.3 - what's new since 2.7.2:

 - reverted POWERDOWNFLAG to /etc/killpower as in 2.6.5 (packagers may want to
   put this in another filesystem, though)

 - configure/make fixes for ${systemdsystemunitdir}

 - apcsmart: fix command set parsing for protocol version 4 (e.g. Smart-UPS
   RT 10000 XL)

 - upslog: SIGUSR1 forces an immediate log entry

 - riello_usb/_ser: USB interface claim fix; improved error handling

 - usbhid-ups: add support for OpenUPS2 (PID: D005), Liebert GXT3 (PID: 0008)
   APC AP9584 Serial->USB kit (PID: 0000), and some Powercom models
   (PID: 0001). Fixed scaling for Cyberpower 0764:0501.

 - USB core: do not call usb_set_altinterface(0) by default

 - nutdrv_qx: added fabula, fuji USB and Voltronic-QS-HEX subdrivers; add
   bestups subdriver to supersede the old standalone bestups driver

 - NUT Monitor: added FreeDesktop AppData file (including screenshots)

 - renamed udev rules file to 62-nut-usbups.rules (permissions fix)

 - added AIX packaging

 - asem: added a driver for the UPS in ASEM PB1300 embedded PCs

 - solis: updated to support APC Microsol units sold in Brazil

 - tripplite_usb: updated to use dv/dq charge calculation for all models (also
   exposes battery_min and battery max as configuration variables); added
   binary 3005 protocol support (such as for SMART500RT1U)

 - genericups: better debugging while parsing the cable description flags

 - all drivers: a new 'synchronous' driver flag is available for very verbose
   units, such as some ePDUs

 - Eaton:
   * Add support for EnergySaving features for Eaton UPSs (HID USB/SHUT and
     XCP USB/serial)
   * Fix and complete Eaton ePDUs G2/G3 support
   * ABM (Advanced Battery Monitoring) support through battery.charger.status
     in HID (USB and SHUT), XCP (USB and serial) and SNMP (Powerware XUPS
     MIB)

 - support for new devices:
   APC Back-UPS 1200BR and Back-UPS BZ2200BI-BR (Microsol)
   ASEM SPA PB1300 UPS
   Belkin Regulator PRO-USB
   Cyber Power Systems Value 1500ELCD-RU
   EUROCASE EA200N 2000VA
   Fideltronik LUPUS 500
   Flight Technic & International (FTUPS) FT-1000BS and FT-1000BS(T)
   Grafenthal PR-3000-HS
   JAWAN JW-UPSLC02
   Lacerda New Orion 800VA
   Mecer ME-1000-WTU
   NHS Sistemas de Energia Expert C Online 6000/8000/10000
   NHS Sistemas de Energia Expert S Online 6000/8000/10000
   Powercom BNT-xxxAP (USB product id: 0001)
   Rucelf UPOII-3000-96-EL
   Tripp Lite OMNIVSINT800
   Voltronic Power Apex 1KVA and Imperial 1KVA

---------------------------------------------------------------------------
Release notes for NUT 2.7.2 - what's new since 2.7.1:

 - This release is the second interim release of the 2.7 testing series.

 - libupsclient had undefined references related to functions of libcommon.
   This issue was reported on Debian (bug #731156) and is now fixed

 - support for new devices:
   CABAC UPS-1700DV2
   Eaton Powerware 3105
   Emerson Network Power Liebert PSI 1440
   MicroDowell B.Box LP 500
   Numeric Digital 800 plus
   OptiUPS VS 575C
   Tripp Lite SU10KRT3/1X

 - FreeDesktop Hardware Abstraction Layer (HAL) support was removed.

 - nutdrv_atcl_usb: new driver for 'ATCL FOR UPS'

 - al175: re-introduced this driver (actually, it was in 2.7.1)

 - upsdrvctl now provides retry options for upsdrvctl and driver(s)

 - snmp-ups: add support for XPPC-MIB and Tripp Lite SU10KRT3/1X.
   Also fix erroneous status in HP/Compaq SNMP MIB (with the most recent HP
   firmware (1.76) ; improved various MIBs (APC, HP/Compaq, ...)

 - nutdrv_qx: add new 'fallback' Q1 subdriver, with minimal 'Q1' support.
   General improvements on all subdrivers.

 - mge-shut: partially revert PnP/RTS change, for initializing the
   communication with the UPS. Note that nut-scanner similar function was
   not modified however.

 - FreeBSD DEVD support: generate devd.conf files for USB UPSes
   This adds a --with-devd-dir=PATH option to ./configure

 - The NUT website was moved to a standalone website. A separate code
   repository and source archive are now available.

 - As usual, more bugfixes, cleanup and improvements, on both source code
   and documentation.

---------------------------------------------------------------------------
Release notes for NUT 2.7.1 - what's new since 2.6.5:

 - This release is an interim release, part of the testing series, and the
   first release after the transition from Subversion to Git.
   The last release (2.6.5) is almost a year old. A lot of work has
   been done, but a good amount remains to achieve 2.8.0 goals.
   Please read the UPGRADING notes.

 - Added support for SSL via the Mozilla NSS library, in addition to the
   existing OpenSSL support.

 - Added a new driver, nutdrv_qx, for Megatec/Qx devices. This driver will
   eventually replace the blazer_ser and blazer_usb drivers. In particular, it
   adds support for Voltronic Power devices.

 - Increased USB_TIMEOUT to standards-compliant 5.000 seconds in most drivers.
   This should reduce the number of timeouts on low-speed USB 1.1 devices.

 - The jNut Java source has been split into a separate GitHub repository.

 - Added many devices to the HCL. Of particular note are many Tripp Lite USB
   HID PDC models which were tested against NUT by Tripp Lite.

 - Reworked some visual elements of the HCL. The output is better tailored for
   graphical and text-only browsers, but suggestions are welcome for additional
   accessibility enhancements.

 - Also increased timeouts and added redundant commands to improve reliability
   of mge-utalk driver.

 - Added the apcupsd-ups driver to interoperate with apcupsd installations.

 - Added documentation on creating subdrivers for snmp-ups and nutdrv_qx.

 - Added new drivers for the Riello UPS product line (riello_ser/riello_usb).

 - Many improvements to the BCM/XCP drivers have been merged in. This includes
   an improved data reception loop, and additional mappings.

 - Added a few variables to the Powercom HID mappings.

 - Updated the apcsmart driver, and renamed the previous driver to apcsmart-old.

 - Fixed the battery percentage calculation in the bestfcom driver.

 - libnutclient has been added as a C++ alternative to libupsclient.

 - Packaging files for Solaris and HP-UX (sponsored by Eaton)

 - Fix shutdown of Eaton HID, using usbhid-ups and mge-shut

 - usbhid-ups: final fix for APC Back UPS ES.  APC Back UPS ES devices have
   buggy firmware, and this version does not cause a regression. The max_report
   variable should be set automatically based on the USB identification values.

 - nut-scanner: fix crash

 - IPMI support can handle more different versions of FreeIPMI

 - Support power supplies scan over the network
   nut-scanner can now scan for power supplies with IPMI over LAN.
   This is currently limited to IPMI 1.5 only

 - Implement a framework to spell check documentation source files,
   using Aspell. This includes an interactive build target (make
   spellcheck-interactive), and an automated one (make spellcheck),
   mainly for QA / Buildbot purpose. Note that a base NUT dictionary
   is also available (docs/nut.dict), providing a glossary of terms
   related to power devices and management

 - Improve systemd integration

 - snmp-ups: Fixed a crash on outlet management, and added delta_ups MIB
   support. Also fixed mappings for upsBypassVoltage, upsBypassCurrent, and
   upsBypassPower in three-phase IETF MIB.

---------------------------------------------------------------------------
Release notes for NUT 2.6.5 - what's new since 2.6.4:

 - This release fixes an important regression in upssched:
   any upssched.conf command that takes a second argument resulted in
   a defective frame sent to the parent process. Thus, the command was
   not executed (report and patch from Oliver Schonefeld)

 - Website hosting: free NUT from Eaton website hosting
   NUT website (http://www.networkupstools.org) is no longer hosted by Eaton.
   Arnaud Quette (NUT project leader) has taken over NUT hosting on his own,
   to give NUT back some independence.
   This effort is also part of a logic to stop crediting Eaton for
   contributions from others (especially Arnaud Quette, as an individual).
   The new hosting service is located, as for Arnaud's blog
   (http://arnaud.quette.fr) on Gandi servers, using PaaS. This will allow
   more flexibility and automation of the release process

 - macosx-ups: new OS X Power Sources meta-driver
   Mac OS X provides UPS status information in a format similar to
   what is shown for laptop batteries. This driver will convert that
   information into a format compatible with NUT (Charles Lepple).

 - support for new devices:
   Eaton ePDU Switched
   Online Zinto A (USB ID 0x06da:0x0601)
   REDi Blazer 400VA / 600VA / 800VA
   UNITEK Alpha650ipF and Alpha650ipE (USB ID 0x0f03:0x0001)

 - mge-shut driver has been replaced by a new implementation (newmge-shut).
   In case of issue with this new version, users can revert to oldmge-shut.

 - First NUT virtualization package: NUT now supports integration with
   VMware ESXI 5.0, through a native VIB package. This is, for the time
   being, an external effort from René Garcia (refer to the Download section
   on NUT website). But work is underway to improve this integration, and
   include it in the NUT source tree

 - IPMI support (nut-ipmipsu driver and nut-scanner): prepare for supporting
   API changes in upcoming FreeIPMI versions 1.1.x and 1.2.x.

 - snmp-ups now supports high precision values for APC, and more variables

 - the NUT variables and commands namespace has been fixed and
   completed, with the known and used variables that were missing.

 - more bugfixes, cleanup and improvements, on both source code and
   documentation.

---------------------------------------------------------------------------
Release notes for NUT 2.6.4 - what's new since 2.6.3:

 - This release Fix an important vulnerability in upsd
   (CVE-2012-2944: upsd can be remotely crashed)

   NUT server (upsd), from versions 2.4.0 to 2.6.3, are exposed to
   crashes when receiving random data from the network.
   This issue is related to the way NUT parses characters,
   especially from the network. Non printable characters were missed
   from strings operation (such as strlen), but still copied to the
   buffer, causing an overflow.
   Thus, fix NUT parser, to only allow the subset of ASCII charset from
   Space to ~
   (Reported by Sebastian Pohle, Alioth bug #313636, CVE-2012-2944)

   A separate patch, which applies to any faulty version, is also available:
   http://trac.networkupstools.org/projects/nut/changeset/3633

   For more information, refer to the Common Vulnerabilities and Exposures:
   http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2012-2944

 - A static source code analysis has been done by Michal Hlavinka from RedHat,
   using Coverity (12 issues fixed).

 - Add new "LIST CLIENTS" and "NETVER" commands to NUT network protocol.
   "NETVER" allows to retrieve the Network protocol version, while
   "LIST CLIENTS" provides the list of clients connected to a device.
   Refer to the developer guide, "Network protocol information" section for
   more information.

 - Support of ranges of values for writable variables has been added, to
   complete the existing enumerated values mechanism. This will start to
   appear in some drivers soon, beginning with Eaton. Refer to the developer
   guide, "Creating a new driver..." section for more information.

 - PyNUT.py has been updated to version 1.2.2, adding support for
   LIST CLIENTS, FSD, HELP and VER (Rene Martín Rodríguez)

 - support for new devices:
   AEG Power Solutions PROTECT HOME
   more APC SNMP cards
   ATEK Defensor range
   all Borri models
   all COVER ENERGY SA
   CyberPower OR700LCDRM1U, PR6000LCDRTXL5U and CP1000PFCLCD
   Dell UPS Network Management Card
   Dynamix 1000VA USB
   Eaton Management Card Contact (ref 66104)
   EVER POWERLINE RT / 11 / 31 and DUO II Pro
   GE Digital Energy GT Series 1000-3000 VA
   Gtec models
   all recent HP serial / USB UPS (G2, G3 and R/T models, ) and HP UPS
    Management Module
   Ippon INNOVA RT
   KOLFF BLACK NOVA
   Lexis X-power Tigra 1kVA
   Microline C-Lion Innova
   Online Yunto YQ450
   PowerShield Defender 1200VA
   PowerWalker Online VFI LCD, Line-Interactive VI LCD and Line-Interactive VI
   Riello Netman Plus 102 SNMP Card
   Tripp-Lite OMNISMART500

 - apcsmart has received some fixes to work better on Mac OS X, and in general

 - bcmxcp has improved support for battery status, and better supports
   PW9120 units

 - bestfortress has improved Best Fortress LI675VA support

 - blazer_ser and blazer_usb now try to automatically estimate high and low
   voltages, to be able to calculate battery charge ; support for online
   Innova UPS (T, RT and 3/1 T) has been added ; Best UPS support has been
   improved, to prepare for superseding bestups driver

 - bestups has also received some care, though users are encouraged to switch
   to blazer_ser, since bestups will soon be deprecated.

 - newmge-shut has been heavily improved.  However, replacement of the
   current mge-shut has been postponed to the next release, due to the CVE
   issue.

 - oneac 0.80 improves support for all families of Oneac (EG, ON, OZ and OB),
   including more data and instant commands (Bill Elliot).

 - usbhid-ups: for Eaton devices, ups.start.auto is now automatically adjusted
   for shutdown.{return,stayoff} to behave as expected ; Liebert firmwares with
   incorrect exponents have also been addressed.

 - snmp-ups now provides support for UPS shutdown, based on usbhid-ups
   mechanisms (composite commands and fallback). Composite commands are also
   supported now. This means, for example, that if 'shutdown.return' is not
   supported, a combination of 'load.off' + 'load.on' may be used ;
   Actual validity of instant commands is now tested before commands addition ;
   Eaton/MGE MIB has been cleaned and completed ; 3-phases support has been
   added to Socomec Netvision MIB ; HP/Compaq MIB has been completed, with
   thresholds, nominal values and more commands.

 - nut-scanner now also has libupsclient has a weak runtime dependency ; more
   docs and bugfixes have also happened.

 - Provide an Uncomplicated Firewall (UFW) profile (nut.ufw.profile)

 - Riello protocols have been officially published in NUT protocols library:
   http://www.networkupstools.org/ups-protocols.html#_riello

 - Duplicate instances of upsd / upsmon are now detected upon startup

 - NUT variables namespace has been completed with missing variables and
   commands that are already known and standard

 - upslog now comes with a companion file, for logrotate configuration

 - more devices embed NUT for power protection, now including Thecus NAS range

 - more bugfixes, cleanup and improvements, on both source code and
   documentation, with a good bunch from Greg A. Woods.

---------------------------------------------------------------------------
Release notes for NUT 2.6.3 - what's new since 2.6.2:

 - nut-scanner is now more portable, and provides more coherent option names.
   IPMI support has also been added, to discover local power supplies.
   This version brings weak runtime dependencies in libnutscan, which allows to
   compile nut-scanner with all options and to run according to the available
   dependencies (USB, SNMP, IPMI, ...).

 - libnutscan now provides pkg-config support and the needed header files are
   distributed. Some documentation is also available in the developer guide and
   manual pages have been updated and completed.

 - support for new devices: Cyber Power Systems with SNMP RMCARD (100, 201,
   202 and 301) ; Dynamix 650VA USB ; LDLC UPS-1200D ; Tecnoware UPS ERA LCD
   0.65 ; Powercom BNT-xxxAP (USB ID 0d9f:0004) ; Various USB devices using
   UPSilon 2000 software.

 - apcsmart has received minor correction.

 - bcmxcp_usb now handles disconnection issues and reconnection mechanism.

 - blazer_usb enables again inclusion of buggy USB Device and Vendor IDs in
   udev rules file ; language ID support has been added for USB units from
   LDLC, Dynamix and other no names.

 - nut-ipmipsu has also received some improvements.

 - snmp-ups has fixed outlets reported current in aphel_genesisII MIB ;
   MGE 3 phases handles better low battery condition ; support for Cyber Power
   Systems with SNMP RMCARD has been added ; support of the newer Eaton ePDUs
   has been improved.

 - upsd doesn't anymore fail to start if at least one of the listening
   interface is available. This is needed on systems where either IPv4 or IPv6
   is disabled, and no explicit LISTEN directive has been specified.

 - Avahi support is now automatically enabled, upon detection

 - jNut (NUT Java interface) adds device discovery support, through a
   nut-scanner wrapper ; jNutWebAPI, a HTTP/JSON web service interface, has
   also been added to interact with upsd and nut-scanner.

 - Base files for HPUX packaging have been added. This is still a work in
   progress.

 - Compilation on IBM AIX has been fixed (namespace conflict with ctypes).

 - more bugfixes, cleanup and improvements, on both source code and
   documentation.

---------------------------------------------------------------------------
Release notes for NUT 2.6.2 - what's new since 2.6.1:

 - NUT can now monitor power supply units (PSU) in servers, through IPMI, using
   the new experimental 'nut-ipmipsu' driver. Users are encouraged to test it,
   and send feedback and debug output to the development mailing list.
   This requires GNU FreeIPMI (0.8.5 or higher) development package or files.
   Thanks goes to Al Chu, FreeIPMI project leader, for his help during this
   development.

 - NUT now provides a tool, called 'nut-scanner', to discover supported devices,
   both local and remote. nut-scanner will help to ease the configuration step,
   and power infrastructure discovery.
   This development, sponsored by Eaton, supports the following methods:
   * USB,
   * SNMP,
   * XML/HTTP (from Eaton),
   * NUT servers, using the classic connect or Avahi / mDNS methods.

   IPMI support will be added in the next release.
   A separate library, called 'libnutscan', is also available to provide these
   feature. Future NUT releases will provides binding for the supported
   languages (Perl, Python and Java).

 - NUT now provides a Java interface called 'jNut'.
   This development, sponsored by Eaton, is currently limited to the client
   interface. But it will be broaden to device discovery and configuration in
   the future.
   For more info, refer to nut/scripts/java/README, or the developer guide
   (chapter 'Creating new client'). Javadoc documentation is also provided,
   along with Java archives (.jar) in the Download section.

 - support for new devices: Eaton 3S ; Cyber Power Systems CP1000AVRLCD ;
   various APC models equipped with APC AP9618 management card, including APC
   Smart-UPS RT XL ;  Orvaldi 750 / 900SP ; POWEREX VI 1000 LED ; PowerWalker
   VI 850 LCD ; SVEN Power Pro+ series (USB ID ffff:0000).

 - A regression has been fixed in udev rules file. This previously caused
   permission issues to owners of some USB devices.

 - Avahi support has been added, for NUT mDNS publication, through a static
   service file (nut/scripts/avahi/nut.service).

 - usbhid-ups has had Eaton completion: some features have been improved, such
   as 'output.voltage.nominal' ; 3S Eco control support has been added, along
   with battery.runtime.low and end of battery life (life cycle monitoring)
   support ; new measurements for 5 PX are also supported now (outlet power
   factor, power, real power and current).

 - apcsmart has been updated to support more variables and features ; the
   previous driver is however still available as 'apcsmart-old', in case of
   issues.

 - bcmxcp now supports per outlet startup and shutdown delays setting ; shutdown
   delay is also used, when available, for outlet.n.shutdown.return instead of
   the default 3 seconds.

 - snmp-ups.c has a new initialization method, that uses sysObjectID, which is
   a pointer to the preferred MIB of the device, to detect supported devices.
   This speeds up even more init stage and should render void the use of 'mib'
   option. SNMP v3 session initialization has also been fixed, and Eaton PDU
   support has been completed.

 - Initial support has been added for systemd, the System and Service Manager
   from RedHat.

 - The chapter 'NUT configuration management with Augeas' of the developer guide
   has received some completion: a complete Python Augeas example code is now
   provided.

 - Finally, after years of dedication to NUT, Arjen de Korte is now retired.
   Sincere thanks to you Arjen from us all.

---------------------------------------------------------------------------
Release notes for NUT 2.6.1 - what's new since 2.6.0:

 - the various recent USB regressions have been definitely fixed.

 - NUT now propose a variable to expose UPS efficiency (ups.efficiency).
   Eaton 5 PX already uses it.

 - the Perl module from Gabor Kiss (rewritten from Kit Peters') is now
   distributed with NUT source code.

 - support for new devices: Eaton Ellipse ECO, Powerware 9140, Eaton 5 PX, and
   ambient sensor on Eaton ePDU managed ; GE EP series ; Inform Sinus SS 210 ;
   IPAR Mini Energy ME 800 ; Mustek Yukai PowerMust 1000 USB ; Numeric 3000 SW ;
   SVEN Power Pro+ series (recent models) ; Vivaldi EA200 LED.

 - liebert-esp2: Improved Liebert ESP II support, including UPS shutdown
   (poweroff), 1 and 3-phase input and output variables, and most
   input / output / bypass / nominal variables. There is also a fix for the
   USB to serial cable (Farkas Levente and Spiros Ioannou).

 - powercom has improved PowerCom BNT 1500A and BNT-other support, along with
   driver documentation and code conformance to the NUT rules (Keven L. Ates).

 - apcsmart has more improved UPS poweroff support and options (Michal Soltys).

 - blazer has also seen some improvements.

 - usbhid-ups has completed a bit supported variables for APC and Eaton / MGE.

 - on the quality assurance side, Eaton has worked on fixing a few
   non-conformance issues, like C++ style comments and warnings, using
   a newly developed verification tool (Prachi Gandhi).

 - fix remaining references to LIBSSL_LDFLAGS, instead of LIBSSL_LIBS,
   which cause unresolved symbol on libupsclient users (Fabrice Coutadeur).

 - the website has now a better support for Internet Explorer 6.

 - graphic illustrations, used for the Features page on the website Features
   and chapter of the user manual, have been refreshed (courtesy of Eaton).

 - more bugfixes, cleanup and improvements, on both source code and
   documentation.

---------------------------------------------------------------------------
Release notes for NUT 2.6.0 - what's new since 2.4.3:

 - the main focus of this release is the complete documentation revamping,
   using AsciiDoc. This includes a new website, user manual, developer guide,
   packager guide and manual pages, available in various formats (single and
   multiple pages HTML, and PDF at the moment).
   Be sure to check the --with-doc configure option help, and
   docs/configure.txt for more information.

 - Add Augeas support, to provide easy NUT configuration management, through
   tools and development APIs. For more information, refer to the developer
   guide, or scripts/augeas/README in the source directory.

 - support for new devices: APC 5G; Eaton PowerWare 5119 RM (smart mode using
   upscode2 driver), Eaton Best Ferrups (using older ConnectUPS card),
   Eaton 9395 (serial interface), Eaton ConnectUPS X / BD / E Slot;
   HP T1000 INTL, HP T1500 INTL, HP T750 G2, HP R1500 G2 INTL; iDowell iBox UPS;
   Tripp Lite SmartOnline SU1000XLA, Tripp Lite Smart1000LCD, and some
   more USB/HID devices IDs; CyberPower CP1500AVRLCD and CP1350AVRLCD;
   PowerWalker Line-Interactive VI 1400 ; Rocketfish RF-1000VA / RF-1025VA.

 - usbhid-ups has better support for shutting down APC SmartUPS RM series,
   and finally fix the "buffer size" issue, which was breaking some
   devices data retrieval, or truncating some data on others.

 - snmp-ups now support SNMP v3 and its security parameters. IETF MIB support
   has also been extended.

 - fix dummy-ups simulation driver status handling bug, and add the
   capability to remove exposed variables on the fly.

 - the belkin driver now support control commands and status reporting
   for beeper and battery test.

 - the powerpanel driver supports more older CyberPower units.

 - mge-utalk, upscode2, blazer and liebert-esp2 have also received some
   care, and been improved.

 - NUT-Monitor and the PyNUT client module have been updated to 1.3,
   adding more features like automatic connection to the first local device
   and i18n support.

 - improve configure time dependencies checking and processing.

 - improve older Unix systems support (HP-UX, AIX, ...) for missing functions.

 - refresh and improve USB helper files (udev and UPower).

 - more generation automation: the ChangeLog file is now generated
   automatically at distribution time, along with the files needed for
   the website hardware compatibility list.

 - SSL support has also received some improvements.

 - tcp-wrapper now allows hostnames in /etc/hosts.allow too (not only IPv4
   and/or IPv6 addresses).

 - many bugfixes, cleanup and improvements.

---------------------------------------------------------------------------
Release notes for NUT 2.4.3 - what's new since 2.4.2:

 - this is a bugfix release that only solves the regression on IPv6 activation.

---------------------------------------------------------------------------
Release notes for NUT 2.4.2 - what's new since 2.4.1:

 - the general USB support has been vastly improved, including many bug
   fixes, better OS support, new features and devices.

 - NUT now talks to Solar Controller Devices with the new ivtscd driver.

 - the snmp-ups driver supports more PDU, with a smaller disk footprint.

 - apcsmart supports more older SmartUPS and Matrix units.

 - the bestfortress driver is resurrected.

 - the virtual driver has been renamed to 'clone'.

 - the netxml-ups driver has received some care.

 - various debugging and development improvements have been done, around
   driver output; dummy-ups with more interaction and scripting and the
   device-recorder.sh script.

 - the build system has received many bugfixes and improvements.

 - the UPower (previously known as DeviceKit-power) rules file is now
   generated by NUT.

 - support for new devices: Apollo 1000A and 1000F; various Baytech RPC; old
   Best Power Fortress; Cyber Power Systems PR3000E, CP 1500C and OR2200LCDRM2U;
   all the new Dell UPS range (serial, USB and network); Eaton E Series NV and
   DX UPS, and Powerware 9130; older HP T500 and T750, newer T750 INTL (USB) and
   R1500 G2 (serial); Inform Informer Compact 1000VA; many serial and USB
   devices from Ippon, like Back Comfo Pro, Smart Power Pro and Smart Winner;
   IVT SCD series; Liebert GXT2-3000RT230 and PowerSure PSA; Mustek PowerMust
   424 / 636 / 848 USB; all new PowerCOM USB devices with HID PDC interface;
   Tripp-Lite INTERNETOFFICE700, SMART700USB and ECO550UPS; UPSonic DS-800
   (USB).

---------------------------------------------------------------------------
Release notes for NUT 2.4.1 - what's new since 2.4.0:

 - the microdowell driver has appeared to support various MicroDowell Enterprise
   units (see the "new devices" list below).

 - support for new devices: MicroDowell Enterprise B8, B10, N8, N11, N15, N20,
   N22, N30, N40, N50, N60 and HiBox ST.

 - NUT-Monitor now better handles the ups.status field, and has switched to
   version 1.1.

 - the situation of the build toolchain has been fixed, with regard to the
   "make clean" target and the wrongly removed generated USB files. This broke
   further configure call.

---------------------------------------------------------------------------
Release notes for NUT 2.4.0 - what's new since 2.2.2:

 - preliminary support for Power Distribution Units (PDUs): NUT now support
   PDUs, either natively (ie using NUT snmp-ups driver), or through a binding to
   the Powerman daemon. The list of supported PDUs is already quite long,
   including: Eaton ePDUs (Managed and Monitored), some Aphel models, some
   Raritan PDUs, and the whole list of Powerman supported devices:
   http://powerman.sourceforge.net/supported.html

 - support for new devices: the various PDUs cited above, Chloride Desk Power
   650, Cyber Power Systems Value 400E/600E/800E (USB models), Delta GES602N,
   Digitus DN-170020, the whole Eaton ranges (mostly composed of MGE Office
   Protection Systems and Powerware units) including BladeUPS, Forza Power
   Technologies SL-1001, HP PowerTrust 2997A, HP R/T 2200 G2, Infosec XP 1000
   and XP 500, Ippon Back Power Pro (serial and USB), Kebo 1200D/D Series,
   Liebert PowerSure Personal XT, MGE Office Protection Systems Protection
   Station, Neus 400va and 600va, Phasak 400VA and 600VA, Plexus 500VA, Powercom
   Black Knight PRO / King PRO and Imperial, PowerKinetics BlackOut Buster,
   Sweex 1000 USB, UNITEK Alpha 500, WinPower CPM-800.

 - NUT now embeds Python client support through the PyNUTClient module and the
   NUT-Monitor application. Both are from David Goncalves, and are still
   available from http://www.lestat.st.
   For more information, refer to scripts/python/README.

 - the dummy-ups driver now support a "repeater" mode. This allows it to act as
   a NUT client, and to forward data. This can be useful for supervision and
   load sharing purposes.

 - tcp-wrappers support has been added to the upsd server, to grant users access
   by source IP for commands that require to be logged into the server. This
   replaces the previous internal implementation (ACL in upsd.conf).

 - the nut.conf file has been introduced to standardize startup configuration
   across the various systems.

 - NUT now ships a bash completion function for 'upsc' command
   (scripts/misc/nut.bash_completion). Simply copy it to /etc/bash_completion.d

 - many internal changes to improve maintainability, while lowering the
   maintenance cost (thus allowing developers to focus on what matters: the
   code!). Examples of this are:
   - the USB information automatic extraction to generate the various USB helper
     files,
   - the upsdrv_info_t structure to track more driver information, and remove
     the need for the upsdrv_banner() function
   - common USB code refactoring, as it is done for the serial functions.

 - tons of bugfixes, cleanup and improvements to make NUT stronger than ever!

---------------------------------------------------------------------------
Release notes for NUT 2.2.2 - what's new since 2.2.1:

 - support for new devices: APC BACK-UPS XS LCD, Atlantis Land,
   Mustek Powermust Office 650, Oneac XAU models, Powerware PW5115 and
   PW9120 (USB), Nitram Elite 2005

 - Integrated Power Management (NUT HAL integration) has reached a
   major milestone: it is now the most advanced UPS integration into
   Power Management layer known in existing OSs. It has received many
   corrections and improvements, and allows to PowerOff the UPS at the
   end of a power cycle (which is the most important feature, not
   supported on other systems).
   The various files are now installed into the correct location.

 - the usbhid-ups driver has received attention. Most notably, the
   shutdown handling has been reworked, and support for MGE UPS SYSTEMS
   3 phases units has been added.

 - snmp-ups now supports MGE* Environment Sensor (ref 66 846).
   The ambient.temperature reporting has also been fixed for units
   other than APC.

 - the netxml-ups driver has appeared to support MGE* network HTTP/XML
   cards.

 - NUT now distributes by default the shared version of libupsclient
   (version 1.0.0), and use this for the provided clients (upsmon, upsc,
   upsrw, upscmd). This is part of an effort to reduce NUT's footprint,
   both on disk and in memory.

 - powerpanel has reach a new step toward the replacement of nitram and
   cpsups drivers. The final step is scheduled for NUT 2.4.

 - many changes, cleanup and fixes to the NUT core and various drivers.

---------------------------------------------------------------------------
Release notes for NUT 2.2.1 - what's new since 2.2.0:

 - support for new devices: all MGE Office Protection Systems units,
   Advice TopGuard 2000, Belkin F6H375-USB, Dynamix UPS1700D, Effekta RM2000MH,
   Jageson Technology Jasuny USPS, Powercom SMK-1500A and SXL-1500A,
   PowerWalker Line-Interactive VI 400/800 and 600, Powerware 9110,
   UNITEK Alpha 2600, UPSonic CXR1000, some vintage serial APC UPSs.

 - the usbhid-ups driver has been improved, and fixed in many areas, through
   a backport of the development (trunk) version.

 - the udev rules, for Linux hotplug support of the USB UPSs, has been
   updated to support kernel newer than 2.6.22.

 - the megatec and megatec_usb drivers have also been backported from the
   development (trunk) version.

 - the client development files have also received some care:
   the upsclient pkg-config file has been fixed, and the upsclient.h
   file allows older NUT clients to continue using the UPSCONN structure.

---------------------------------------------------------------------------
Release notes for NUT 2.2.0 - what's new since 2.0.5:

 - The new build infrastructure, using automake, is now used.
   This has major impact on the compilation and installation procedures,
   and thus on the NUT packaging.
   For more information, refer to UPGRADING and packaging/debian/ for
   an example of migration.

 - NUT now provides support for FreeDesktop Hardware Abstraction Layer
   (HAL) which brings full Plug And Play experience to USB UPS owners.
   For more information, refer to docs/nut-hal.txt.

 - support for new devices: Ablerex 625L, ActivePower 400VA, 2000VA;
   Belkin Home Office F6H350-SER, F6H500-SER, F6H650-SER; Belkin Office
   Series F6C550-AVR; Belkin Universal UPS F6C100-UNV (USB), F6C1100-UNV
   (USB), F6C1200-UNV (USB), F6H350deUNV (serial), F6H350ukUNV (serial),
   F6H650ukUNV (serial); Compaq R3000h; Cyber Power Systems PR2200;
   Dynex DX-800U; Geek Squad GS1285U; Krauler UP-M500VA; Mecer ME-2000;
   MGE UPS SYSTEMS Ellipse MAX; Online Zinto D; PowerTech SMK-800; SVEN
   Power Pro+ series, Power Smart RM 2000; Tripp-Lite SmartOnline
   SU1500RTXL2ua, smart2200RMXL2U.

 - added IPv6 support,

 - the newmge-shut driver has appeared. This one uses the same HID core
   as usbhid-ups, but communicate over a serial link. It will eventually
   replace the current mge-shut driver.

 - client commands (upsc, upsrw and upscmd): hostname is now optional,
   and defaults to "localhost"

 - many drivers have been improved and have received bug fixes:
   powerpanel, megatec, megatec_usb, safenet, tripplite_usb, gamatronic,

 - the hotplug and udev scripts, in charge of setting the right
   permissions on the USB devices, are now installed automatically
   when appropriate.

 - more generally, the NUT core and documentation, including the manpages,
   have been improved and updated.

---------------------------------------------------------------------------
Release notes for NUT 2.0.5 - what's new since 2.0.4:

 This release is a backport of the development version.  Many changes
 have already been backported previously.  Thus it is more a
 synchronization release, though it includes many bugfixes and support
 for new models.

 - support for new devices: APC Smart-UPS with 6TI firmware; Belkin
   Small Enterprise F6C1500-TW-RK; Compaq R3000 XR, R5500 XR; Cyber
   Power 550SL, 725SL, 685AVR, 800AVR, 1200AVR, AE550; Eltek; Inform
   GUARD; Microsol Rhino; Opti-UPS PowerES 420E; PowerMan RealSmart,
   BackPro; Powerware PW9315 3-phase; SOLA 305; Tripp-Lite
   SMART550USB, SMART2200RMXL2U, OMNI1000LCD, OMNI900LCD, OMNI650LCD,
   1500 LCD, AVR550U; Viewsonic PowerES 420E.

 - bcmxcp: added 3-phase support

 - megatec: better hardware support, more instant commands

 - mge-hid: support more instant commands

 - newhidups: fixed APC and Tripp Lite bugs, various memory bugs,
   improved report buffering, improved Solaris support, added
   '-x explore' option for easy diagnosis of new devices

 - solis: shutdown programming, support new cables, Solaris support

 - tripplite_usb: updated SMARTPRO support, fixed OL/OB reporting,
   better error handling, some memory bugs

 - new dummy-ups driver simulator

 - added HTML interface for access to CGI scripts

---------------------------------------------------------------------------
Release notes for NUT 2.0.4 - what's new since 2.0.3:

 - The newhidups critical bug (segmentation fault) has been fixed. It has
   also received some more care, like bugfixes and new models support and
   enhancement for Solaris.
   [Peter Selinger and Arnaud Quette]

 - A bug has been fixed in NUT core to support resuming from suspend-to-disk.
   This should also fix other similar issues, like time synchronization
   through the NTP - Network Time Protocol.
   [Arjen de Korte]

 - The mge-shut driver now better detects the Low Battery status, support
   new models and fixes some wrong status and data. It also fixes some
   issue where the UPS wasn't restarting (refer to mge-shut manpage).
   [Arnaud Quette]

 - The genericups custom configuration through ups.conf is working again
   [Arjen de Korte]

 - The genericups driver type 22 also support CyberPower 725SL
   (and maybe others SL models)
   [David Kaufman]

 - The new megatec driver, which will replace a bunch of drivers by nut 2.2
   (refer to docs/megatec.txt and UPGRADING) has been backported from the
   trunk (Development tree). The powermust driver has also received some
   attention.
   [Carlos Rodrigues]

 - The new rhino driver was added to support Microsol Rhino UPS hardware
   The solis has also been improved for Solaris compatibility, and
   internal / external shutdown programming. solis can now save external
   shutdown programming to ups, and support new cables for solis 3
   [Silvino B. MagalhÃ£es]

 - Several fixes and improvements have been made to upsrw, upsset,
   cpsups, tripplite_usb and the FAQ.
   [Arjen de Korte and Charles Lepple]

---------------------------------------------------------------------------
Release notes for NUT 2.0.3 - what's new since 2.0.2:

 - The recent and major newhidups changes have been backported from the
   Development tree. It now:
   - supports models from MGE UPS SYSTEMS, APC and Belkin. Mustek and Unitek
     units are also recognized for development purpose,
   - handles better device reopening, after a disconnection,
   - handles multiple devices, with several parameters to find the right UPS.
   [Peter Selinger, Charles Lepple and Arnaud Quette]

 - The bcmxcp_usb driver has been added to support Powerware USB units.
   [Wolfgang Ocker and Kjell Claesson]

 - The tripplite_usb driver has been added to support Tripp Lite USB units.
   [Charles Lepple]

 - The sec driver is back as gamatronic
   [Gamatronic, Nadav Moskovitch]

 - The genericups driver has received official care from Gamatronic
   to add support for the Gamatronic UPS with alarm interface.
   [Gamatronic, Nadav Moskovitch]

 - The powermust driver now supports Soyntec Sekury C 500 and C 800 units.
   [Hanno Borns]

 - The mge-shut driver has received a bit of attention too, and enhance
   ups.model retrieval for some specific case (release 0.65)

 - The drivers don't change to the "statepath" directory anymore at
   initialization time if called using -k. This avoid unneeded
   failure to poweroff the UPS if /var is already unmounted.
   [Gaspar Bakos]

 - The belkinunv driver now supports Belkin F6C1100-UNV
   [Dave Breiland]

 - The isbmex driver has been upgraded to version 0.05, which fixes
   various errors in formulas, add shutdown capability and revert
   back baudrate to B9600 (instead of B2400), as it broke the
   communication
   [Ricardo Martinezgarza]

 - The support of Sysgration UPGUARDS Pro650 in fentonups has
   been fixed
   [Simon J. Rowe]

 - The packaging files for Red Hat have received various fixes
   [Thomas Jarosch]

 - The solis driver has been fixed to avoid a naming collision and
   compile on Solaris
   [Paweł Kierdelewicz]

 - The snmp-ups driver has corrected the problem when exposing
   certain time data.

---------------------------------------------------------------------------
Release notes for NUT 2.0.2 - what's new since 2.0.1:

 - the newhidups USB driver has been improved a lot and is no more
   experimental. It also now has a basic APC support, which will
   soon replace the legacy hidups driver.

 - The mge-utalk driver has improved its support for old units.

 - The mge-shut driver has been improved for restart/shutdown
   sequences which was previously blocking the serial port.

 - The general MGE support has been added Pulsar EXtreme C / EX RT,
   Comet EX RT, Pulsar SV, Pulsar PSX, Ellipse Office and NOVA AVR USB.

 - The genericups driver now supports Generic RUPS 2000, AEC MiniGuard
   UPS 700 (using Megatec M2501 cable), and Powerware 3110.
   [Nick Barnes, Paul Andreassen]

 - The powermust driver now supports SquareOne Power QP1000, Mustek
   PowerMust 1400VA Plus and 2000VA USB.
   [Carlos Rodrigues]

 - The fentonups driver has been enhanced and now supports Sysgration
   UPGUARDS Pro650.
   [Michel Bouissou, Simon J. Rowe]

 - The cpsups driver now supports MicroDowell B.Box BP 500/750/1000/1500.
   [Armin Diehl]

 - The snmp-ups driver now supports Socomec SNMP devices (Netvision MIB),
   and Powerware ConnectUPS SNMP cards.
   [Thanos Chatziathanassiou, Olli Salvia]

 - The bcmxcp driver is back with support for Powerware UPSs.
   [Tore Ørpetveit, Kjell Claesson]

 - The cyberpower driver now supports CyberPower 1000AVR.
   [Dave Huang]

 - The new solis driver supports Microsol units: Solis 1.0, 1.5,
   2.0 and 3.0.
   [Silvino B. Magalhaes]

 - The apcsmart driver has fixed APC600 support.

 - The etapro driver fixes brokenness due to ser_get_line use
   [Marek Michalkiewicz]

 - The new upscode2 driver supports Fiskars, Compaq and Powerware
   devices.
   [Niels Baggesen, Havard Lygre]

 - The tripplite driver has fixed a battery charge bug
   [Cedric Tefft]

---------------------------------------------------------------------------
Release notes for NUT 2.0.1 - what's new since 2.0.0:

 - The bestuferrups driver has been forked into the new bestfcom driver
   which has better handling of the inverter status alarm messages and
   more.
   [Kent Hill]

 - Mustek UPS support returns with two drivers which have overlapping
   coverage: mustek and powermust.
   [powermust: Carlos Rodrigues, mustek: Martin Hajduch]

 - Additional CyberPower Systems hardware is supported with the new
   cpsups driver.  Three recognized models are the CPS1500AVR,
   CPS1100VA, and OP500TE.
   [Walt Holman, Brad Sawatzky]

 - The genericups driver can now generate staleness warnings in
   specific cases where the UPS provides a way to test for its
   presence.  See the "CON" setting in ups.conf for more details.
   [stan / saticed.me.uk]

 - Documentation for monitoring a Back-UPS RS 500 on a system without
   USB ports has been added to the cables directory.
   [Martin Edlman]

 - The everups driver now supports types 73-76 (NET 700/1000/1400/500-DPC)
   [hunter]

 - The new metasys driver supports Meta System models: Line,
   HF Millennium, HF Top Line, ECO Network, ECO, Ally HF, Megaline
   [BlaXwan]

 - The ippon driver now allows user-defined settings for the delay
   before switching off, and the delay before powering on.
   [Yuri Elizarov]

 - The victronups driver is now at version 0.1.9, which adds many
   instant commands: calibration control, battery and front panel tests,
   and bypass control.
   [Gert Lynge]

 - The tripplite driver has received a major overhaul to bring it up to
   working condition for the 2.0 tree, including code cleanups, several
   new variables, commands, and user-definable parameters.  See
   ChangeLog for more.
   [Nicholas J Kain]

 - The mge-utalk driver has been upgraded to version 0.81, which fixes
   the lack of read-write variables and loss of sync on models which
   don't support restoring settings.
   [Arnaud Quette]

 - The Micro Ferrups model RE is now supported by the bestuferrups
   driver.  The driver will also now read the ambient temperature and
   will no longer constantly report the data as stale.
   [Tim Thompson]

 - The fentonups driver's init sequence has been reworked to work better
   with some hardware, including a fix to the parser code.
   [MLH]

 - A workaround has been added to the hidups driver to avoid variables
   which are stuck by calling HIDIOCINITREPORT in every poll.
   [Stuart D. Gathman]

 - SOLA 610 UPS hardware and others which do not support the ID command
   may now be monitored by the bestups driver after forcing ID= in
   ups.conf.
   [Jason White]

 - "pollinterval" is now available via driver.parameter for consistency.
   [Arnaud Quette]

 - The mge-shut and newhidups drivers, along with the supporting
   hidparser/libhid code have received many updates, including lowering
   USB bandwidth consumption, driver unbinding (only in Linux), code
   cleanups, and more which can be seen in the ChangeLog file.
   [Arnaud Quette]

 - The fentonups driver now recognizes several more Megatec protocol
   units:

   SuperPower HP360, Hope-550	[Denis Zaika]
   Unitek Alpha 1000is		[Antoine Cuvellard]

 - Some variables like uc_sigmask were renamed to avoid clashes with
   symbols on systems like HP/UX.

 - All man pages have been reworked to switch literal "-" characters to
   hyphens or "\-" as appropriate.
   [Shaul Karl]

 - upssched's CANCEL events were broken following the change to
   text-based socket messages in 1.5 and have been fixed.
   [Steven Schoch]

 - Calls to varargs functions with raw strings from the config files
   without an intervening "%s" have been fixed in upsmon, upssched,
   snmp-ups and upsd.
   [Ulf Harnhammar]

---------------------------------------------------------------------------
Release notes for NUT 2.0.0 - what's new since 1.4.x:

 - The new naming scheme for variables and commands (introduced in 1.4)
   is now mandatory.  The 1.4 tree supported both the old (STATUS) and
   the new (ups.status) as a transitional release, and now that time is
   over.

   This means that 2.0 is generally smaller than 1.4 code, since the
   interim compatibility hacks have been removed.

 - New serial handling code has been added, with greatly simplified
   operations.  The old mess involving repeated calls to sigaction,
   alarm, and read has been condensed to a select-read loop.

   This change allows drivers which don't do any serial communications
   at all (hidups, snmp-ups) to drop that baggage, so they are a bit
   smaller when compiled.

 - The drivers now recognize "chroot=' and 'user=' in the global section
   of ups.conf.  This means you don't have to use -r and -u when
   starting upsdrvctl.

 - upsmon now supports the -K argument to check for the presence of the
   POWERDOWNFLAG file.  If it exists and contains the magic string, then
   upsmon will exit(EXIT_SUCCESS).  Otherwise, it will
   exit(EXIT_FAILURE).

   This feature can be used to simplify shutdown scripts, since now you
   don't have to keep the script in sync with the upsmon.conf.

 - Many small things like signed value comparisons, int vs. size_t and
   proper use of const/struct were fixed throughout the source.  These
   were mostly for correctness, but a few potential bugs involving very
   big or very small numbers were fixed at the same time.

 - The access control system in upsd.conf has been reworked and
   simplified.  Since access levels have become meaningless in recent
   releases, the new system is just ACCEPT <acl> or REJECT <acl>.

   If you are upgrading from a previous version of the software, you
   will have to edit your upsd.conf to use this method.  See
   the UPGRADING file for more details.

 - The build process now halts when make fails in one of the
   subdirectories.
   [Petter Reinholdtsen, Charles Lepple]

 - Helper data for using upsclient via pkgconfig is now created if
   pkgconfig is detected when configure runs.
   [Arnaud Quette]

 - The polling interval in drivers may now be set with 'pollinterval'
   in ups.conf.
   [Gabriel Faber]

 - Blazer UPS equipment is now supported with the blazer driver.
   [Phil Hutton]

 - Energizer USB UPS hardware is now supported on Linux with a new
   experimental driver.
   [Viktor T. Toth]

 - The newhidups driver has been merged as the first step towards
   portable USB UPS support.  This will eventually replace the old
   Linux-only hidups driver.  The newhidups driver is tagged
   experimental since it is under active development.
   [Arnaud Quette, Charles Lepple]

 - The newapc driver has been renamed to apcsmart, replacing the old
   driver with that name. If you used the newapc driver, be sure to
   delete the old binary and fix your ups.conf.

 - The apcsmart driver now supports asynchronous notification data
   from the hardware, which means it can wake up as soon as something
   happens.  This affects the OL/OB/LB/RB data in ups.status, and
   generally reduces the latency in dispatching status changes by a few
   seconds.

 - The apcsmart driver can now support quirky hardware which does not
   provide the usual listing of valid command characters.  This feature
   is necessary to monitor new models like the APC CS 350 and old ones
   like the Matrix 5000.  It also now has sdtype=4 to handle the strange
   shutdown behavior on the CS series.

 - The belkin driver now works around broken firmware version 001,
   avoiding a lengthy delay at startup.  It also implements the shutdown
   sequence differently, and should actually work on more hardware now.

 - The bestups driver has been slowed down to play nicer with the
   hardware, and is much more reliable as a result.  Among other things,
   it should always detect the UPS on the first try, meaning no more
   "dot dot dot" when it starts.

 - The cyberpower driver is no longer tagged experimental, and now
   supports powering off the load.  It also supports battery tests via
   instcmds.

 - Effekta MT 2000 RM hardware is now supported by the fentonups driver.
   [Christoph Moar]

 - The new safenet driver supports UPS hardware that uses the protocol
   of the same name.  This includes models from many manufacturers,
   including Fairstone, Fenton, Gemini, Powerwell, Repotec, Soltec and
   Sweex.  See the README or driver.list for the full details.
   [Arjen de Korte]

 - The genericups driver now has type 20 to monitor the Powerware 5119
   RM.  See http://lists.exploits.org/ups/Oct2003/00052.html.
   [Daniel Thompson]

 - The belkinunv driver has been added to allow monitoring Belkin
   Universal UPS hardware.
   [Peter Selinger]

 - Cyber Power Systems 1100AVR hardware which has a different protocol
   than the existing binary type (supported by 'cyberpower') is now
   supported by the experimental cyberpower1100 driver.
   [Walt Holman]

 - upsdrvctl now returns success or failure information in the exit
   code.  Any failure during a requested operation will result in a
   nonzero value (specifically EXIT_FAILURE).

---------------------------------------------------------------------------
Release notes for NUT 1.4.0 - what's new since 1.2.x:

 - The drivers and upsd now communicate over Unix domain sockets instead
   of state files, shared memory, or state files with mmap.  This change
   makes many things possible, including the new dynamic variable and
   command naming scheme described below.

   There is a new development tool called sockdebug in the server
   directory for debugging driver-server communications on the sockets.

 - The old static variable scheme has been replaced by a new dynamic
   implementation.  Vague names have been turned into meaningful names
   that fit into an organized system.  UTILITY is now input.voltage.
   OUTVOLT is now output.voltage.

   This also applies to the names of instant commands.  BTEST1 is
   test.battery.start, and BTEST0 is test.battery.stop.

   The old names are still supported for compatibility with older
   clients.  This compatibility mode will be maintained throughout
   the 1.4 series, and will be gone by the release of 2.0.  Users
   with older clients are encouraged to upgrade their software
   during this time.

 - The network protocol has been expanded to handle these new names.
   Older functions which only apply to the old names will continue to
   be supported through the 1.4 series.

 - The drivers and server (upsd) can now change their user ids and
   chroot themselves with the new -u and -r arguments.  This lets you
   create a "chroot jail" with the bare minimum components.

   This technique is used to provide a higher degree of security.  If
   someone exploited upsd to get a shell somehow, they would be stuck
   in the jail.

 - upssched now explicitly confirms reception of timer commands before
   exiting.  This was done to avoid a race where one process would
   exit right when another one was starting.  The second one would
   believe its command had been handled when it had been lost.

 - upslog has been reworked to use standard getopt parsing to provide
   the monitoring settings.  The old way of specifying arguments is
   still supported for backwards compatibility.

   upslog has also been changed to only parse the format string once,
   rather than doing it every time through the loop.  This should
   provide a minuscule drop in CPU utilization.

 - Usernames are now required in upsmon and upsd.  This means that you
   must add a username to your MONITOR lines in upsmon.conf and then
   create a matching user in upsd.users.

   Installations from the 1.2 era probably already use usernames, so
   this mostly affects those from 1.0 and before.

 - Drivers are now pinged regularly by upsd when they aren't posting
   updates about the UPS status.  This provides another check in the
   data validation process.  If upsd fails to get a response within
   a few seconds, the UPS will be marked stale.

 - A few minor memory leaks were discovered with valgrind and squashed.

 - upsstats now reuses connections to upsd when cycling through multiple
   entries in the hosts.conf.  This makes things a bit faster and
   avoids some of the noise in the syslog.

   This only applies to entries that are adjacent.  To take advantage
   of this feature, you may have to rearrange them.

	MONITOR ups-1@host-1 ...
	MONITOR ups-1@host-2 ...
	MONITOR ups-2@host-2 ...
	MONITOR ups-3@host-3 ...

   Connection reuse for nonadjacent entries may be considered in the
   future.

 - upsd now warns about insecure configuration files at startup.
   These files (upsd.conf, upsd.users, and the certfile) should
   only be readable by upsd.  Never make them world-readable.

 - The programs no longer print "shutting down" when they are just
   exiting.  This was changed to avoid confusion about the term, since
   "shutting down" has a special meaning in UPS software.

 - Signal handlers no longer do any significant amount of work.  Some of
   the programs used to do numerous things in there, raising concerns
   about reentrancy.  They now set flags and allow the main loop to do
   the actual work from there.

 - A bug in upsmon where NOTIFYFLAG settings could be ignored was fixed.

 - Group handling has been changed.  configure no longer accepts
   --with-group, and the programs no longer setgid() to a hardcoded
   value.  They now setgid() to the primary group of whatever the
   user value may be.

   This may be compiled in with --with-user as before, and many programs
   accept -u to override it at runtime.

 - The state path is no longer created during 'make install'.  Users
   are now expected to create it themselves.  This removes a lot of
   evil complexity from the build and install sequences.

 - upsd no longer implements the DROP access command, as it
   could confuse the clients by getting them out of sync.  DROP is now
   implemented as DENY, which sends an error message.  If you use DROP,
   you should change it to DENY rather than relying on this
   compatibility measure.

 - The belkin driver no longer reports OFF and OL at the same time.

 - The bestups driver no longer sleeps during polls, which makes it
   more responsive to things like instant commands.

 - The cyberpower driver now has much better hardware detection code
   and no longer freezes at startup under some conditions.  It also now
   supports the shutdown function.  Instant commands for shutdowns and
   battery tests were also added.

 - The dummyups testing driver has been removed.  The dummycons testing
   driver can do everything that dummyups once did and much more.
   dummycons is also now built by default for easier testing.

 - The newapc driver has been reworked to take advantage of the new
   internal driver state functions.  Some variables without an obvious
   purpose were dropped.

 - The newapc driver now sends all five bytes when using sdtype 1.
   Previously it didn't send the entire string, and it didn't work.
   [Don Lewis]

 - The hidups driver has been expanded to allow for setting variables,
   a shutdown sequence, and more.
   [Arnaud Quette]

 - The mge-utalk driver had trouble establishing communications in
   some cases due to the RTS line being set.  This has been fixed.

   The mge-shut driver has been added to the tree, and has replaced
   the older mge-ellipse driver.
   [Arnaud Quette, Philippe Marzouk]

 - Outlet-level control has been defined in the variable tree, and will
   be added to drivers where the hardware supports it.  This can be
   used to shut down some components earlier than others to prolong
   your runtime on battery.

   This is supported in the mge-shut driver now, and may show up in
   others before long.
   [Arnaud Quette]

 - KIN-2200AP hardware is now recognized by the powercom driver.
   This change may also support other KIN-xxxxAP equipment.
   [Preston A. Elder]

 - The 1.1kVA UPS is now supported by the bestuferrups driver.  This
   driver was also changed to allow easy addition of more models
   in the future.
   [Bob Apodaca]

 - The fentonups driver can now handle devices which implement the
   "I" detection differently, and now supports the Giant/WELI 500
   as a result.
   [Joon Guillen]

 - The serial number of the UPS being monitored can now be specified
   with serial= in ups.conf in the genericups driver.
   [Shaul Karl]

 - The newapc driver now sends ESC to break out of menus when the
   initial detection fails.  Some new APC models have interactive menus
   on the serial port, and the driver couldn't handle them before.

 - The snmp-ups driver now reports ambient temperature and humidity
   data for APC equipment.  It also now supports the shutdown.reboot and
   shutdown.reboot.graceful commands.
   [Dmitry Frolov]

 - The list of supported variables and commands in the snmp-ups driver
   has been expanded.
   [Arnaud Quette, J.W. Hoogervorst]

 - Various drivers now report bypass mode with the BYP status word.
   [Arnaud Quette]

 - Energy Sistem equipment is now supported with the esupssmart driver.
   [Antonio Trujillo Coronado]

 - The Tripp-Lite SU series (SmartOnline) is supported with the new
   tripplitesu driver.
   [Allan Hessenflow]

 - The HP PowerTrust A2994A is now recognized by the hp driver.
   [Jan Sporbeck]

 - Many drivers were cleaned up to perform basic sanity checks on the
   status data before using it.

 - An explicit cleanup function has been added to the driver core to
   ensure that all dynamic resources are freed before exiting.  This
   is part of the larger process to check for memory leaks and other
   bad things.
   [Arnaud Quette]

 - upsd now provides variable descriptions from an auxiliary file.
   This file is optional, which allows for a smaller memory footprint.
   It can also be edited for localization or other customizations.

 - upsimage and upsstats can now render BATTVOLT data.
   [Andrew R. Ghali]

 - String handling has been cleaned up throughout the tree.  Calls to
   functions like strcpy and strcat were either replaced with other
   (range-checking) functions or were rewritten to avoid it.

 - Many compile-time defaults may now be overridden at runtime.  In
   the environment NUT_CONFPATH and NUT_STATEPATH may be used.
   upsdrvctl has been changed to execve to pass these along to the
   drivers.  ups.conf now supports driverpath=, and upsd.conf supports
   DATAPATH.
   [Bryan Henderson]

 - The configure --with-gd switches now actually do something useful
   when gd has been installed outside the default search directories.
   [Patrik Schindler]

 - The inline keyword is now handled properly on systems which do not
   support it or have it specified as another name.  This was breaking
   compiles on some systems.
   [Petter Reinholdtsen]

---------------------------------------------------------------------------
Release notes for NUT 1.2.2 - what's new since 1.2.1:

 - The snmp-ups driver has been upgraded and expanded.  It now supports
   multiple MIBs, meaning it can handle RFC 1628, APCC, and MGE
   equipment.  You can pick the right one with "mibs=" in ups.conf.

   Support for setting variable and instant commands is also available.
   [Arnaud Quette and Dmitry Frolov]

 - The powernet driver has been upgraded.  It now supports more
   variables, has cleaner logging, and may now be considered stable.
   [Dmitry Frolov]

 - The hidups driver now supports physical port IDs.  This avoids most
   of the problems where the hiddev* names can jump around too easily.
   It will now stay in the same place as long as you keep it plugged
   into the same physical port.  See the ChangeLog file for more details.
   [David Brownell]

 - The hidups driver now also supports the MFR variable on APC
   Back-UPS ES equipment.
   [Jonathan A. Davis]

 - The sms driver has been updated to version 0.70.
   [Marcio Gomes]

 - The bestups driver now recognizes Best Power Axxium Rackmount
   equipment.
   [Ales Casar]

 - The liebert driver now uses O_NONBLOCK, and should now work
   consistently on OpenBSD as a result.
   [Alex Cichowski]

 - The liebert driver also now uses debouncing logic on the status
   lines.  It was possible to get false readings that would start a
   shutdown or just annoy users with excessive onbatt/online notify
   messages.  The new code forces the status to settle down for 3 polls
   before accepting the new value.

   This means that very short power events may not be detected.  The
   alternative is having your machine shut down just because it decided
   to wiggle over to OB LB for a few seconds.

 - upsmon has had the disconnect logic fixed so the "communications
   lost" (COMMBAD) notify will actually go out when the connection
   fails.
   [Steve Monett]

 - upssched now uses a lock file to prevent a race where two could
   start at the same time.  The second upssched would "win", and the
   first one would be unreachable.  This had the side-effect of not
   being able to cancel timers on the first one.	

   If you use upssched, you must define the LOCKFN directive when
   upgrading to this version, or it will not work.
   [Gaspar Bakos]

 - The packaging and scripts for Red Hat systems have been updated.
   [Antonino Albanese]

 - upsd is now a bit more lenient about access levels in the
   'numlogins' check, which is what caused the problem in upsmon
   (next item).

 - upsmon no longer gets stuck in slavesync() when upsd is configured
   to drop certain queries.  This usually happened at the worst
   possible time: in the middle of a shutdown.
   [John David Garza]

 - The upsclient functions now do more sanity checking on data from
   upsd so a short read won't return garbage to the callers.

 - upsset now works properly with ENUM/VARTYPE values for multiple
   UPSes on a single upsd.
   [Dmitry Frolov]

 - Various portability fixes for building on SGI were applied.
   [Andrea Suatoni]

 - upsd no longer tries to reference a deleted client structure if the
   client disconnects at the wrong time.  Previously, it tried to use
   that pointer after the sendback() function had already failed on
   write and deleted the client.  This could cause upsd to segfault
   depending on what areas were accessed.
   [Patrik Schindler]

---------------------------------------------------------------------------

Release notes for NUT 1.2.1 - what's new since 1.2.0:

 - The sms driver is back, with support for Microlink Manager III
   hardware. [Marcio Gomes]

 - Fideltronik Ares Series hardware is now supported as genericups type
   19.  [Tomek Orzechowski and Arkadiusz Mikiewicz]

 - The drivers no longer silently drop instant commands or set commands
   from upsd that happen to get fragmented in transit.
   [linux@horizon.com]

 - The old multilink driver is back with a new name: liebert.  It
   supports Liebert UPStation GXE hardware with the contact-closure
   cable.  This is currently an experimental driver as there is no
   way to power down the load.

 - configure now picks up the right flags for gd automatically if gd
   2.0.8 or higher is installed.  This greatly simplifies the CGI build
   process for most users.

 - Shutdowns on FreeBSD using the genericups driver should work again.
   [Petri Riihikallio]

---------------------------------------------------------------------------
