Imported Upstream version 2.6.0

This commit is contained in:
arnaud.quette@free.fr 2011-01-26 10:35:08 +01:00
parent 26fb71b504
commit 459aaf9392
510 changed files with 40508 additions and 18859 deletions

568
README
View file

@ -1,144 +1,111 @@
=================================
Network UPS Tools Documentation
=================================
Network UPS Tools Overview
===========================
:Info: Program support page: <http://www.networkupstools.org/>
:Author: Arnaud Quette <aquette.dev@gmail.com> and others, see AUTHORS file.
:Copyright: Released under the GNU GPL - see COPYING for details.
Mailing list details: http://alioth.debian.org/mail/?group_id=30602
.. contents::
===========
Description
===========
-----------
Network UPS Tools is a collection of programs which provide a common
interface for monitoring and administering UPS and PDU hardware. NUT comes in
two flavors: the "classic" and the "HAL enabled" one.
The "classic" flavor
--------------------
It is the standard installation that uses a layered approach to connect
all of the NUT parts.
interface for monitoring and administering UPS, PDU and SCD hardware.
It uses a layered approach to connect all of the parts.
Drivers are provided for a wide assortment of equipment. They
understand the specific language of each device and map it back to a
compatibility layer. This means both an expensive "smart" protocol UPS
and a simple "power strip" model can be handled transparently.
compatibility layer. This means both an expensive high end UPS, a simple
"power strip" PDU, or any other power device can be handled transparently with
a uniform management interface.
This information is cached by the network server ``upsd``, which then
This information is cached by the network server `upsd`, which then
answers queries from the clients. upsd contains a number of access
control features to limit the abilities of the clients. Only authorized
hosts may monitor or control your hardware if you wish. Since the
notion of monitoring over the network is built into the software, you
can hang many systems off one large UPS and they will all shut down
together. You can also use NUT to power on, off or cycle your data centers
nodes, individually or globally through PDUs outlets.
can hang many systems off one large UPS, and they will all shut down
together. You can also use NUT to power on, off or cycle your data center
nodes, individually or globally through PDU outlets.
Clients such as upsmon check on the status of the hardware and do things
Clients such as `upsmon` check on the status of the hardware and do things
when necessary. The most important task is shutting down the operating
system cleanly before the UPS runs out of power. Other programs are
also provided to log UPS status regularly, monitor status through your
also provided to log information regularly, monitor status through your
web browser, and more.
The "HAL enabled" flavor
------------------------
This one is intended for use:
- with supported USB UPS,
- on HAL enabled systems (Linux, FreeBSD, Sun Solaris),
- on HAL enabled desktops (Gnome and possibly KDE)
Using this approach, you don't have to configure NUT files, nor to
manually start components, nor to install a specific NUT client.
Upon plugging your USB UPS, the right driver will be automatically
launched, and the according Power Manager GUI will pop up.
Note that this feature is still beta and incomplete. But it
represents a major evolution, and a huge user experience improvement!
For more information, refer to INSTALL and docs/nut-hal.txt.
==========
Installing
==========
----------
If you are installing these programs for the first time, go read the
INSTALL file to find out how to do that. This document contains more
information on what all of this stuff does.
<<_installation_instructions,installation instructions>>
to find out how to do that. This document contains more information on what all
of this stuff does.
=========
Upgrading
=========
---------
When upgrading from an older version, always check the UPGRADING file to
see what may have changed. Compatibility issues and other changes will
be listed there to ease the process.
When upgrading from an older version, always check the
<<Upgrading_notes,upgrading notes>> to see what may have
changed. Compatibility issues and other changes will be listed there to ease
the process.
Configuring and using
---------------------
Once NUT is installed, refer to the
<<Configuration_notes,configuration notes>> for directions.
=============
Documentation
=============
-------------
This file gives an overview of the software. You should read the man
pages, included example configuration files, and auxiliary documentation
for the parts that you intend to use.
This is just an overview of the software. You should read the man pages,
included example configuration files, and auxiliary documentation for the parts
that you intend to use.
===================
Network Information
===================
-------------------
These programs are designed to share information over the network. In
the examples below, ``localhost`` is used as the hostname. This can also
the examples below, `localhost` is used as the hostname. This can also
be an IP address or a fully qualified domain name. You can specify a
port number if your upsd process runs on another port.
In the case of the program ``upsc``, to view the variables on the UPS called
sparky on the ``upsd`` server running on the local machine, you'd do this::
In the case of the program `upsc`, to view the variables on the UPS called
sparky on the `upsd` server running on the local machine, you'd do this:
/usr/local/ups/bin/upsc sparky@localhost
The default port number is 3493. You can change this with
The default port number is 3493. You can change this with
"configure --with-port" at compile-time. To make a client talk to upsd
on a specific port, add it after the hostname with a colon, like this::
on a specific port, add it after the hostname with a colon, like this:
/usr/local/ups/bin/upsc sparky@localhost:1234
This is handy when you have a mixed environment and some of the systems
are on different ports.
The general form for UPS identifiers is this::
The general form for UPS identifiers is this:
<upsname>[@<hostname>[:<port>]]
Keep this in mind when viewing the examples below.
========
Manifest
========
--------
This package is broken down into several categories:
- *drivers* - These programs talk directly to your UPS hardware.
- *drivers* - These programs talk directly to your UPS hardware.
- *server* - upsd serves data from the drivers to the network.
- *clients* - They talk to upsd and do things with the status data.
- *cgi-bin* - Special class of clients that you can use with your web server.
- *scripts* - Contains various scripts, like the Perl and Python binding,
integration bits and applications.
- *server* - upsd serves data from the drivers to the network.
- *clients* - They talk to upsd and do things with the status data.
- *cgi-bin* - Special class of clients that you can use with your web server.
=======
Drivers
=======
-------
These programs provide support for specific UPS models. They understand
the protocols and port specifications which define status information
@ -146,170 +113,189 @@ and convert it to a form that upsd can understand.
To configure drivers, edit ups.conf. For this example, we'll have a UPS
called "sparky" that uses the apcsmart driver and is connected to
``/dev/ttyS1``. That's the second serial port on most Linux-based systems.
The entry in ``ups.conf`` looks like this::
`/dev/ttyS1`. That's the second serial port on most Linux-based systems.
The entry in `ups.conf` looks like this:
[sparky]
driver = apcsmart
port = /dev/ttyS1
To start and stop drivers, use upsdrvctl. By default, it will start or
stop every UPS in the config file::
stop every UPS in the config file:
/usr/local/ups/bin/upsdrvctl start
/usr/local/ups/bin/upsdrvctl stop
However, you can also just start or stop one by adding its name::
However, you can also just start or stop one by adding its name:
/usr/local/ups/bin/upsdrvctl start sparky
/usr/local/ups/bin/upsdrvctl stop sparky
To get the driver name for your device, refer to the below section
To find the driver name for your device, refer to the section below
called "HARDWARE SUPPORT TABLE".
Extra Settings
--------------
~~~~~~~~~~~~~~
Some drivers may require additional settings to properly communicate
with your hardware. If it doesn't detect your UPS by default, check the
driver's man page or help (-h) to see which options are available.
For example, the apcsmart driver allows setting "cable" to "940-0095B".
To use this feature, just add another line to your ups.conf section for
that UPS::
For example, the usbhid-ups driver allows you to use USB serial numbers to
distingish between units via the "serial" configuration option. To use this
feature, just add another line to your ups.conf section for that UPS:
[sparky]
driver = apcsmart
port = /dev/ttyS1
cable = 940-0095B
driver = usbhid-ups
port = auto
serial = 1234567890
Hardware Support Table
----------------------
Hardware Compatibility List
~~~~~~~~~~~~~~~~~~~~~~~~~~~
The NUT Hardware support table is available in the source directory:
nut-X.Y.Z/data/driver.list
This one should also be distributed with your favorite packages.
The <<HCL,Hardware Compatibility List>> is available in the source directory
('nut-X.Y.Z/data/driver.list'), and is generally distributed with packages.
For example, it is available on Debian systems as:
/usr/share/nut/driver.list
For another take on this list, try the web page:
This table is also available link:http://www.networkupstools.org/stable-hcl.html[online].
http://random.networkupstools.org/compat/
If your driver has vanished, see the FAQ and UPGRADING files.
If your driver has vanished, see the link:FAQ.html[FAQ] and
<<Upgrading_notes,Upgrading notes>>.
Generic UPS Driver
------------------
Generic Device Drivers
~~~~~~~~~~~~~~~~~~~~~~
The ``genericups`` driver will support many models that use the same basic
NUT provides several generic drivers that support a variety of very similar models.
- The `genericups` driver supports many serial models that use the same basic
principle to communicate with the computer. This is known as "contact
closure", and basically involves raising or lowering signals to indicate
power status.
+
This type of UPS tends to be cheaper, and only provides the very simplest
data about power and battery status. Advanced features like battery
charge readings and such require a "smart" UPS and a driver which
supports it.
+
See the linkman:genericups[8] man page for more information.
See the genericups(8) man page for more information.
- The `usbhid-ups` driver attempts to communicate with USB HID Power Device
Class (PDC) UPSes. These units generally implement the same basic protocol,
with minor variations in the exact set of supported attributes. This driver
also applies several correction factors when the UPS firmware reports values
with incorrect scale factors.
+
See the linkman:usbhid-ups[8] man page for more information.
- The `blazer_ser` and `blazer_usb` drivers supports the Megatec / Q1
protocol that is used in many brands (Blazer, Energy Sistem, Fenton
Technologies, Mustek and many others).
+
See the linkman:blazer[8] man page for more information.
- The `snmp-ups` driver handles various SNMP enabled devices, from many
different manufacturers. In SNMP terms, `snmp-ups` is a manager, that
monitors SNMP agents.
+
See the linkman:snmp-ups[8] man page for more information.
- The `powerman-pdu` is a bridge to the PowerMan daemon, thus handling all
PowerMan supported devices. The PowerMan project supports several serial
and networked PDU, along with Blade and IPMI enabled servers.
+
See the linkman:powerman-pdu[8] man page for more
information.
There is also a document called contact-closure.txt included with the
source distribution that contains information on this kind of hardware
and details on adding additional types to the genericups driver.
UPS Shutdowns
-------------
~~~~~~~~~~~~~
upsdrvctl can also shut down (power down) all of your UPS hardware.
**WARNING:** if you play around with this command, expect your filesystems
to die. Don't power off your computers unless they're ready for it::
WARNING: if you play around with this command, expect your filesystems
to die. Don't power off your computers unless they're ready for it:
/usr/local/ups/bin/upsdrvctl shutdown
/usr/local/ups/bin/upsdrvctl shutdown sparky
You should read the shutdown.txt file in the docs subdirectory to
learn more about when to use this feature. If called at the wrong time,
you may cause data loss by turning off a system with a filesystem
You should read the <<UPS_shutdown,Configuring automatic UPS shutdowns>>
chapter to learn more about when to use this feature. If called at the wrong
time, you may cause data loss by turning off a system with a filesystem
mounted read-write.
Power distribution unit management
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
NUT also provides an advanced support for power distribution units.
You should read the <<Outlets_PDU_notes,Configuring automatic UPS shutdowns>>
chapter to learn more about when to use this feature.
==============
Network Server
==============
--------------
``upsd`` is responsible for passing data from the drivers to the client
programs via the network. It should be run immediately after ``upsdrvctl``
`upsd` is responsible for passing data from the drivers to the client
programs via the network. It should be run immediately after `upsdrvctl`
in your system's startup scripts.
``upsd`` should be kept running whenever possible, as it is the only source
of status information for the monitoring clients like ``upsmon``.
`upsd` should be kept running whenever possible, as it is the only source
of status information for the monitoring clients like `upsmon`.
======
upsmon
======
Monitoring client
-----------------
``upsmon`` provides the essential feature that you expect to find in UPS
`upsmon` provides the essential feature that you expect to find in UPS
monitoring software: safe shutdowns when the power fails.
In the layered scheme of NUT software, it is a client. It has this
separate section in the documentation since it is so important.
You configure it by telling it about UPSes that you want to monitor in
upsmon.conf. Each UPS can be defined as one of three possible types:
upsmon.conf. Each UPS can be defined as one of two possible types:
- Master
Master
~~~~~~
This UPS supplies power to the system running upsmon, and
this system is also responsible for shutting it down when
the battery is depleted. This occurs after any slave systems
have disconnected safely.
This UPS supplies power to the system running `upsmon`, and this system is also
responsible for shutting it down when the battery is depleted. This occurs
after any slave systems have disconnected safely.
If your UPS is plugged directly into a system's serial port,
the upsmon on that system should define that UPS as a master.
If your UPS is plugged directly into a system's serial port, the `upsmon`
process on that system should define that UPS as a master.
- Slave
For a typical home user, there's one computer connected to one UPS.
That means you run a driver, `upsd`, and `upsmon` in master mode.
This UPS supplies power to the system running upsmon, but
this system can't shut it down directly. This system will
shut down the operating system before the master turns off the
power.
Slave
~~~~~
Use this mode when you run multiple computers on the same UPS.
Obviously, only one can be connected to the serial port on the
UPS, and that system is the master. Everything else is a
slave.
- Monitor-only
This UPS may supply power to the system running `upsmon`, but this system can't
shut it down directly.
This UPS will still generate notifications about status
changes (on battery, on line, etc.) but no shutdowns of the
local system result from critical situations on that UPS.
Use this mode when you run multiple computers on the same UPS. Obviously, only
one can be connected to the serial port on the UPS, and that system is the
master. Everything else is a slave.
For a typical home user, there's one computer connected to one UPS.
That means you run a driver, upsd, and upsmon in master mode.
Additional Information
----------------------
~~~~~~~~~~~~~~~~~~~~~~
More information on configuring upsmon can be found in these places:
- The man page - upsmon(8)
- big-servers.txt in the docs subdirectory
- shutdown.txt in the docs subdirectory
- The stock upsmon.conf that comes with the package
- The linkman:upsmon[8] man page
- <<BigServers,Typical setups for big servers>>
- <<UPS_shutdown,Configuring automatic UPS shutdowns>> chapter
- The stock `upsmon.conf` that comes with the package
=======
Clients
=======
-------
Clients talk to upsd over the network and do useful things with the data
from the drivers. There are tools for command line access, and a few
@ -319,48 +305,48 @@ programs.
For more details on specific programs, refer to their man pages.
upsc
----
~~~~
upsc is a simple client that will display the values of variables known
to upsd and your UPS drivers. It will list every variable by default,
or just one if you specify an additional argument. This can be useful
in shell scripts for monitoring something without writing your own
`upsc` is a simple client that will display the values of variables known
to `upsd` and your UPS drivers. It will list every variable by default,
or just one if you specify an additional argument. This can be useful
in shell scripts for monitoring something without writing your own
network code.
upsc is a quick way to find out if your driver(s) and upsd are working
together properly. Just run upsc <ups> to see what's going on, i.e.::
`upsc` is a quick way to find out if your driver(s) and upsd are working
together properly. Just run `upsc <ups>` to see what's going on, i.e.:
morbo:~$ upsc su700@localhost
morbo:~$ upsc sparky@localhost
ambient.humidity: 035.6
ambient.humidity.alarm.maximum: NO,NO
ambient.humidity.alarm.minimum: NO,NO
ambient.temperature: 25.14
...
[ and so on ]
If you are interested in writing a simple client that monitors upsd,
the source code for upsc is a good way to learn about using the
If you are interested in writing a simple client that monitors `upsd`,
the source code for `upsc` is a good way to learn about using the
upsclient functions.
See the upsc(8) man page for more information.
See the linkman:upsc[8] man page and
<<nut-names,NUT command and variable naming scheme>> for more information.
upslog
------
~~~~~~
upslog will write status information from upsd to a file at set
`upslog` will write status information from `upsd` to a file at set
intervals. You can use this to generate graphs or reports with other
programs such as gnuplot.
programs such as `gnuplot`.
upsrw
-----
~~~~~
upsrw allows you to display and change the read/write variables in your
`upsrw` allows you to display and change the read/write variables in your
UPS hardware. Not all devices or drivers implement this, so this may
not have any effect on your system.
not have any effect on your system.
A driver that supports read/write variables will give results like this::
A driver that supports read/write variables will give results like this:
$ upsrw su700@localhost
$ upsrw sparky@localhost
( many skipped )
@ -373,64 +359,66 @@ A driver that supports read/write variables will give results like this::
( more skipped )
On the other hand, one that doesn't support them won't print anything::
On the other hand, one that doesn't support them won't print anything:
$ upsrw fenton@gearbox
( nothing )
upsrw requires administrator powers to change settings in the hardware.
Refer to upsd.users(5) for information on defining users in upsd.
`upsrw` requires administrator powers to change settings in the hardware.
Refer to linkman:upsd.users[5] for information on defining
users in `upsd`.
upscmd
------
~~~~~~
Some UPS hardware and drivers support the notion of an instant command -
a feature such as starting a battery test, or powering off the load.
You can use upscmd to list or invoke instant commands if your
hardware/drivers support them.
Use the -l command to list them, like this::
Use the -l command to list them, like this:
$ upscmd -l su700@localhost
Instant commands supported on UPS [su700@localhost]:
$ upscmd -l sparky@localhost
Instant commands supported on UPS [sparky@localhost]:
load.on - Turn on the load immediately
test.panel.start - Start testing the UPS panel
calibrate.start - Start run time calibration
calibrate.stop - Stop run time calibration
...
[ snip ]
`upscmd` requires administrator powers to start instant commands.
To define users and passwords in `upsd`, see
linkman:upsd.users[5].
upscmd requires administrator powers to start instant commands.
To define users and passwords in upsd, see upsd.users(5).
============
CGI Programs
============
------------
The CGI programs are clients that run through your web server. They
allow you to see UPS status and perform certain administrative commands
from any web browser. Javascript and cookies are not required.
These programs are not installed or compiled by default. To compile
and install them, first run 'configure --with-cgi', then do 'make' and
'make install'. If you receive errors about "gd" during configure, go
and install them, first run `configure --with-cgi`, then do `make` and
`make install`. If you receive errors about "gd" during configure, go
get it and install it before continuing.
You can get the source here:
http://www.boutell.com/gd/
http://www.libgd.org/
In the event that you need libpng or zlib in order to compile gd,
In the event that you need libpng or zlib in order to compile gd,
they can be found at these URLs:
http://www.libpng.org/pub/png/pngcode.html
http://www.gzip.org/zlib/
Access Restrictions
-------------------
~~~~~~~~~~~~~~~~~~~
The CGI programs use hosts.conf to see if they are allowed to talk to a
host. This keeps malicious visitors from creating queries from your web
@ -440,107 +428,58 @@ If you get error messages that say "Access to that host is not
authorized", you're probably missing an entry in your hosts.conf.
upsstats
--------
~~~~~~~~
upsstats generates web pages from HTML templates, and plugs in status
`upsstats` generates web pages from HTML templates, and plugs in status
information in the right places. It looks like a distant relative of
APC's old Powerchute interface. You can use it to monitor several
systems or just focus on one.
It also can generate IMG references to upsimage.
It also can generate IMG references to `upsimage`.
upsimage
--------
~~~~~~~~
This is usually called by upsstats via IMG SRC tags to draw either the
utility or outgoing voltage, battery charge percent, or load percent.
upsset
------
~~~~~~
upsset provides several useful administration functions through a web
interface. You can use upsset to kick off instant commands on your UPS
`upsset` provides several useful administration functions through a web
interface. You can use `upsset` to kick off instant commands on your UPS
hardware like running a battery test. You can also use it to change
variables in your UPS that accept user-specified values.
Essentially, upsset provides the functions of upsrw and upscmd, but
Essentially, `upsset` provides the functions of `upsrw` and `upscmd`, but
with a happy pointy-clicky interface.
upsset will not run until you convince it that you have secured your
`upsset` will not run until you convince it that you have secured your
system. You *must* secure your CGI path so that random interlopers
can't run this program remotely. See the upsset.conf file. Once you
can't run this program remotely. See the `upsset.conf` file. Once you
have secured the directory, you can enable this program in that
configuration file. It is not active by default.
=====================
Support / Help / etc.
=====================
The main URL:
http://www.networkupstools.org/
There is also a mailing list for general queries and discussion about
this software called nut-upsuser. It typically moves around 50-100 messages
per month at the time of this writing. To join, go to the below address and
subscribe to the desired list.
Finally, there is a developer list called nut-upsdev. This is not
an install help list, and any such mails probably will be ignored.
The mailing lists are archived on the web:
http://alioth.debian.org/mail/?group_id=30602
Try running some searches against the archives. Many times, problems have
already been answered by someone else. Currently, there is no internal
search engine, so you will have to try with a search engine like Google.
There is more documentation in the docs/ directory within the source
tree. Be sure to read through the files in there (especially the
FAQ) before mailing the list for help. Many times the questions have
already been answered in the files which are right in front of you.
===================================
Making your own clients (upsclient)
===================================
The upsclient.a library can be linked into other programs to give access
to upsd and UPS status information. Clients like upsc are provided as
examples of how to retrieve data using the upsclient functions. Other
programs not included in this package may also use this library, as wmnut.
This library file and the associated header files are not installed by
default. You must './configure --with-lib' to enable building and
installing these files. The libraries can then be build and installed
with 'make' and 'make install' as usual. This must be done before
building other (non-NUT) programs which depend on them.
To obtain the right compilation and link flags, two helpers are provided:
one for platform providing pkg-config, and the other (libupsclient-config)
for platform not providing pkg-config.
=================
Version Numbering
=================
-----------------
The version numbers work like this: if the middle number is odd, it's a
development tree, otherwise it is the stable tree.
The past stable trees were 1.0, 1.2, 1.4 and 2.0, with the latest stable tree
designated 2.2. The development trees were 1.1, 1.3, 1.5 and 2.1.
The past stable trees were 1.0, 1.2, 1.4, 2.0, 2.2 and 2.4, with the
latest stable tree designated 2.6. The development trees were 1.1, 1.3,
1.5, 2.1 and 2.3. As of the 2.4 release, there is no real development
branch anymore since the code is available through a revision control
system (namely Subversion) and snapshots.
The jump to 2.2 is mostly due to the large changes to the features list.
There have also been a number of architectural changes which may not be
noticeable to most users.
Major release jumps are mostly due to large changes to the features
list. There have also been a number of architectural changes which
may not be noticeable to most users, but which can impact developers.
====================================
Backwards and Forwards Compatibility
====================================
------------------------------------
The old network code spans a range from about 0.41.1 when TCP support
was introduced up to the recent 1.4 series. It used variable names
@ -567,21 +506,17 @@ use the new names.
Here's a table to make it easier to visualize:
+--------+------------------------+
| | Server |
+--------+-----+-----+-----+------+
| Client | 1.0 | 1.2 | 1.4 | 2.0+ |
+========+=====+=====+=====+======+
| 1.0 | yes | yes | yes | no |
+--------+-----+-----+-----+------+
| 1.2 | yes | yes | yes | no |
+--------+-----+-----+-----+------+
| 1.4 | yes | yes | yes | yes |
+--------+-----+-----+-----+------+
| 2.0 | no | no | yes | yes |
+--------+-----+-----+-----+------+
[options="header"]
|=============================================
| 4+| Server version
| *Client version* | 1.0 | 1.2 | 1.4 | 2.0+
| 1.0 | yes | yes | yes | no
| 1.2 | yes | yes | yes | no
| 1.4 | yes | yes | yes | yes
| 2.0+ | no | no | yes | yes
|=============================================
Version 2.0 (and more recent) does not contain backwards compatibility for
Version 2.0, and more recent, do not contain backwards compatibility for
the old protocol and variable/command names. As a result, 2.0 clients can't
talk to anything older than a 1.4 server. If you ask a 2.0 client to
fetch "STATUS", it will fail. You'll have to ask for "ups.status"
@ -593,67 +528,24 @@ software can easily support both versions as long as they like. If upsd
returns 'ERR UNKNOWN-COMMAND' to a GET request, you need to use REQ.
==========================
Support / Help / etc.
---------------------
If you are in need of help, refer to the
<<Support_Request,Support instructions>> in the user manual.
Hacking / Development Info
==========================
--------------------------
Additional documentation can be found in the docs subdirectory.
Additional documentation can be found in:
Information on creating new drivers can be found in new-drivers.txt.
Also be sure to look at skel.c and main.c. All drivers are just
collections of support functions built around a common core, so most of
the dull housekeeping work has been handled for you.
Information on the NUT variables naming can be found in new-names.txt.
Information on the architecture and how it all fits together is in the
design.txt file. In short, there's a lot more documentation out there.
Also be sure to read developers.txt, as it explains a lot about the
tree, including some of the functions that are provided for your use.
- the linkdoc:developer-guide[Developer Guide],
- the linkdoc:packager-guide[Packager Guide].
================================
Acknowledgements / Contributions
================================
MGE UPS SYSTEMS provided extensive technical documents for their UPS product
line, along with many units for development of NUT-related projects. The
company also sponsored and later hired Arnaud Quette to further officially
support these efforts.
Several drivers such as mge-utalk, mge-shut, snmp-ups, hidups, and usbhid-ups
are the result of this collaboration, in addition to the WMNut, MGE HID Parser
the libhid projects, .... The features page has improved artwork thanks to Luc
and Arnaud of MGE. Other client projects such as KNutClient and ups-monitor
have also received assistance.
The master NUT site and several related projects are hosted on MGE's equipment
at no cost to the project.
More information on their open source support can be found on their web site:
http://opensource.mgeups.com/contrib.htm
Fenton Technologies contributed a PowerPal 660 to the project. Their open
stance and quick responses to technical inquiries are appreciated for
making the development of the fentonups driver possible.
Bo Kersey of VirCIO (http://www.vircio.com) provided a Best Power
Fortress 750 to facilitate the bestups driver.
Invensys Energy Systems provided the SOLA/Best "Phoenixtec" protocol
document currently residing at the following URL:
http://random.networkupstools.org/protocols/sola.html
PowerKinetics technical support provided documentation on their MiniCOL
protocol, which is archived in the NUT protocol library online:
http://random.networkupstools.org/protocols/minicol/
Cyber Power Systems contributed a 700AVR model for testing and driver
development.
Liebert Corporation supplied serial test boxes and a UPStation GXT2
with the Web/SNMP card for development of the liebert driver and
expansion of the existing snmp-ups driver.
--------------------------------
The many people who have participated in creating and improving NUT are
listed in the user manual <<Acknowledgements,acknowledgements appendix>>.