These programs are part of a developing project to monitor the assortment
of UPSes that are found out there in the field. Many models have serial
ports of some kind that allow some form of state checking. This
capability has been harnessed where possible to allow for safe shutdowns,
live status tracking on web pages, and more.
- Drivers Microdowell License Test
- Drivers Microdowell Lbp
- Drivers Microdowell Taylormade
- Drivers Microdowell 64
Ups drivers microdowell, Driver for Microdowell Enterprise UPS series ups drivers netxml-ups. No information from the state checking. It listens on network ports and delivers the data from the state files or shared memory used by the drivers. Ups, Laptop Calculator, pagina 6. Upsdriversmicrodowell: Driver for Microdowell Enterprise UPS series upsdriversnetxml-ups: Driver for Eaton / MGE Network Management Card / Proxy (XML/HTTP Protocol) equipment upsdriversnut-ipmipsu: Driver for IPMI Power Supply Units (PSU) upsdriversnutdrvqx: Driver for Q. protocol serial and USB based UPS equipment.
Version: 2.7.4
See also: nut-cgi, nut-client, nut-devel, nut-xml.
File Formats | |
nut.conf | UPS definitions for Network UPS Tools |
ups.conf | UPS definitions for Network UPS Tools |
upsd.conf | Configuration for Network UPS Tools upsd |
upsd.users | Administrative user definitions for NUT upsd |
System Administration | |
al175 | Driver for Eltek UPS models with AL175 alarm module |
apcsmart | Driver for American Power Conversion Smart Protocol UPS equipment |
apcsmart-old | Driver for American Power Conversion Smart Protocol UPS equipment |
apcupsd-ups | Driver for apcupsd client access |
bcmxcp | Driver for UPSes supporting the serial BCM/XCP protocol |
bcmxcp_usb | Experimental driver for UPSes supporting the BCM/XCP protocol over USB |
belkin | Driver for Belkin serial UPS equipment |
belkinunv | Driver for Belkin 'Universal UPS' and compatible |
bestfcom | Driver for Best Power Fortress/Ferrups |
bestfortress | Driver for old Best Fortress UPS equipment |
bestuferrups | Driver for Best Power Micro-Ferrups |
bestups | Driver for Best Power / SOLA (Phoenixtec protocol) UPS equipment |
blazer_ser | Driver for Megatec/Q1 protocol serial based UPS equipment |
blazer_usb | Driver for Megatec/Q1 protocol USB based UPS equipment |
clone | UPS driver clone |
dummy-ups | Driver for multi-purpose UPS emulation |
etapro | Driver for ETA UPS equipment |
everups | Driver for Ever UPS models |
gamatronic | Driver for Gamatronic UPS equipment |
genericups | Driver for contact-closure UPS equipment |
isbmex | Driver for ISBMEX UPS equipment |
ivtscd | driver for the IVT Solar Controller Device |
liebert | Driver for Liebert contact-closure UPS equipment |
liebert-esp2 | Driver for Liebert UPS, using the ESP-II serial protocol |
masterguard | Driver for Masterguard UPS equipment |
metasys | Driver for Meta System UPS equipment |
mge-shut | Driver for SHUT Protocol UPS equipment |
mge-utalk | Driver for MGE UPS SYSTEMS UTalk protocol equipment |
microdowell | Driver for Microdowell Enterprise UPS series |
nut-ipmipsu | Driver for IPMI Power Supply Units (PSU) |
nut-recorder | utility to record device status and values changes |
nut-scanner | scan communication buses for NUT devices |
nutdrv_atcl_usb | Driver for 'ATCL FOR UPS' equipment |
nutdrv_qx | Driver for Q* protocol serial and USB based UPS equipment |
nutupsdrv | generic manual for unified NUT drivers |
oneac | Driver for Oneac UPS equipment |
optiups | Driver for Opti-UPS (Viewsonic) UPS and Zinto D (ONLINE-USV) equipment |
powercom | UPS driver for serial Powercom/Trust/Advice UPS equipment |
powerpanel | Driver for PowerPanel Plus compatible UPS equipment |
rhino | Driver for Brazilian Microsol RHINO UPS equipment |
richcomm_usb | Driver UPS equipment using Richcomm dry-contact to USB solution |
riello_ser | Driver for Riello UPS Protocol UPS equipment |
riello_usb | Driver for Riello UPS Protocol UPS equipment via USB |
safenet | Driver for SafeNet compatible UPS equipment |
snmp-ups | Multi-MIB Driver for SNMP UPS equipment |
solis | Driver for Brazilian Microsol SOLIS UPS equipment |
tripplite | Driver for Tripp-Lite SmartPro UPS equipment |
tripplite_usb | Driver for older Tripp Lite USB UPSes (not PDC HID) |
tripplitesu | Driver for Tripp-Lite SmartOnline (SU) UPS equipment |
upscode2 | Driver for UPScode II compatible UPS equipment |
upsd | UPS information server |
upsdrvctl | UPS driver controller |
upslog | UPS status logger |
usbhid-ups | Driver for USB/HID UPS equipment |
victronups | Driver for IMV/Victron UPS unit Match, Match Lite, NetUps |
A few years back, I bought a Network Management Card (AP9630) for my APC Smart UPS 1000. I figured it would simplify managing the multiple computers I was running on the UPS. I was wrong. The APC software was horrible. The linux version required Java and a graphical interface, and that wasn't going to cut it on my headless Linux server. NUT looked like a possibility, and after running across this post, I decided to give a shot at installing NUT on OpenWRT. After some effort, I now have NUT running on OpenWRT managing my UPS and serving my local network, and it does everything I had hoped that the expensive Network Management Card should have done.
By installing it on an OpenWRT router, you gain a few things over installing it on a linux server. The router boots up quickly, is on every hour of every day, and is a low power device. Power can be cut at any time without concern for corruption of the filesystem, and upon return of power, it will always boot back up to a running condition.
I found this so useful, that I thought I'd share it with the OpenWRT community. I wouldn't be opposed to writing a wiki on it, I just don't have any experience in that. I don't know if people would find that useful or not.
Here's what I did:
Building the NUT Package
The first thing I did was to build the NUT package. I am running Backfire 10.03.1 with the 2.4 kernel, on a WRT54GS. Prior to this, I had never built a package for OpenWRT. This is the part I have the least confidence in, so I won't go into detail. I started with the Makefile I found following the link in the post by OpenSys above. After some trouble compiling it, I eventually pared down the file to only include the apcsmart driver and a few other files. Here is the Makefile I used, including the commented out lines:
I installed the package, and to my surprise, it worked. I'm sure someone more experienced in building packages could figure out how to include all of the drivers. There was talk in the link above that suggested that somebody would package NUT for a future release of OpenWRT. I really hope this happens.
Installing a Serial Port
The WRT54GS has two serial ports at TTL levels. In order to use these, a RS-232 transceiver is required. I used a 3.3V version so it could be powered by the WRT54GS directly. The transceiver and capacitors I used can be found here:
MAX3232ECPE+
.47uF caps
I put the circuit together based on the 'typical operating circuits' figure on page 18 of the data sheet. I recommend using header pins / receptacles to connect your custom circuit to the router board. My initial circuit was missing a trace, and it wasn't possible to troubleshoot or fix it without being able to remove it. I cut holes in the side of the router and mounted two DB-9 connectors. It works great. The first serial port is configured as the console for the router. I used the second port to connect my UPS.
Since I bought my UPS refurbished, it did not come with the serial cable, so I made one myself using the diagram found here.
Configuring the NUT Master
For the examples to follow, I use the static IP address of 10.1.1.1 for my OpenWRT router.
By default, NUT runs as the user 'nobody', so the permissions on the serial port need to be changed accordingly. NUT also requires a directory to hold PID and other files. Create the directory and set the ownership to user 'nobody':
This is just for initial testing. I initially put these commands in /etc/rc.local so I didn't have to keep typing them in after rebooting. Eventually, I put these commands into a script in /etc/init.d to be run when the router starts up. (I'll get to that later)
Set the permissions of all configuration files:
Configuring the Driver
Add the following into /etc/nut/ups.conf
This configures NUT to use the apcsmart driver and serial port 1. Test the configuration to see if the driver runs properly as user 'nobody'. The process will have the name apcsmart (the name of the driver).
Configure the NUT Server
Add the following into /etc/nut/upsd.conf
This configures upsd to monitor the localhost and on 10.1.1.1 for clients.
Add the following into /etc/nut/upsd.users
Set passwords for each of the accounts. I used the 'admin' user to later configure the UPS settings. The user 'upsmon' is used by the NUT master (OpenWRT router), and two clients are listed. In my case, I have a headless linux server, and a Windows machine. Afterwards, test for the proper operation of the NUT server:
Drivers Microdowell License Test
Download d.e.p driver. Check to see that the process is owned by user 'nobody'. You can also check the status of the UPS using the command:
Configure the UPS
Run the following commands to configure the UPS. Replace '12345' with the password of your 'admin' account.
These are the settings I used. Your settings may vary. I chose the maximum value for battery.runtime.low for testing purposes. I haven't chosen a final value yet, but make sure it is greater than the sleep delay value to be defined later. The ups.delay.shutdown value is set to zero. Because we don't have to worry about cutting power to the router, there is no need for this delay. The real benefit of running NUT on a router is that you eliminate most of the power race conditions you might encounter on a regular linux machine.
Configure the NUT Client on the OpenWRT Router
Add the following line to /etc/nut/nut.conf
This configures the OpenWRT to be the NUT master.
Add the following to /etc/nut/upsmon.conf
This configures the OpenWRT system to monitor the NUT server on the local host. Upon receiving a low battery condition, the NUT master will send the forced shutdown signal (FSD) to the clients to turn them off. It then immediately executes the SHUTDOWNCMD defined in /etc/nut/upsmon.conf. The shutdown command will sleep for 120 seconds, then turn off the UPS, giving the clients a little more than 2 minutes to shut down (the shutdown command to the UPS takes a little while to go through). With this setup, after the FSD is commanded, a shutdown is guaranteed to occur. Even if power comes on after the FSD is sent, the UPS will shut down for about a second and then power back on. This will result in a hard reset of the router, and will restart any computers that are configured to turn back on when power is restored.
This is the third delay / shutdown approach I tried. The first two approaches didn't work properly: The first approach was to set SHUTDOWNCMD='upsdrvctl shutdown', FINALDELAY=000, and ups.delay.shutdown=090. Drivers cisco consumer products. NUT would command a UPS shutdown immediately after sending the FSD, and the UPS would delay 90 seconds before shutting down, giving the clients time to turn off. The problem was that if the power came on between the FSD and the expiration of ups.delay.shutdown, the UPS wouldn't always shut itself down. It seemed that the UPS would notice it was no longer on battery, then declare everything to be ok, so there's no need to turn off. That's my guess, at least.
The second approach was to set SHUTDOWNCMD=upsdrvctl shutdown, FINALDELAY=120, and ups.delay.shutdown=000. After issuing the FSD, NUT would delay 120 seconds before commanding the UPS to shut down. Again, if the power came back on during this delay period, NUT would think everything is ok and wouldn't shut down the UPS.
Both of these cases work just fine to shut things down, but I wanted something that would guarantee that my server would turn back on when power was restored. Chances are that this particular situation (power coming on between FSD and UPS turning off) wasn't very likely, but I found something that works.
Test the client:
Confirm that there are two upsmon processes running, one by the user 'nobody' and one by 'root'.
Configure NUT to Start at Boot Time
Create the file /etc/init.d/nut:
Set the permissions of the script, and create a symbolic link in /etc/rc.d
At this point, you can remove the temporary commands in /etc/rc.local and reboot the router. Verify that apcsmart, upsd, and the two upsmon processes are running.
Configure the NUT Clients
Configuring a linux client is fairly simple. On Debian, you just need to install the nut package. Then add the following to /etc/nut/nut.conf
Add the following line to /etc/nut/upsmon.conf
where 'client1name' and '12345' are the user name and password for the linux client, as defined in /etc/nut/upsd.users on the NUT master.
Test the System
At this point, you can pull the plug and test out the complete system. I can't speak for other brands, but i the case of the APC Smart UPS, this is what I found: When AC power is lost, the UPS goes into 'on battery' mode. If you have notifications enabled (see below), NUT will send a notification. If power comes back on, the UPS returns to 'On-Line' mode. If AC power does not come back on, the UPS runs on battery until the battery.runtime parameter drops below battery.runtime.low at which point a Forced Shutdown (FSD) occurs. The NUT master sends the FSD command to all of the clients, then executes the SHUTDOWNCMD, which waits for 120 seconds then sends the command to turn off the UPS. If the line power were to come back on at this point, the command would still go through and the UPS will shut off for a second or so before coming back online. If line power never came back on, the UPS would shut off and remain off until line power returns. Once the UPS charge is greater than battery.charge.restart, the UPS turns back on and the router starts up, along with any computers that are configured to restart on restoration of power.
Drivers Microdowell Lbp
Setting up Email Notification
One of the cool features of the APC Network Management Card was that you could configure it to email you when certain power conditions occur. I really didn't want to lose this capability, and I was pleasantly surprised to find that NUT could be configured to do this as well.
Add the following to /etc/nut/upsmon.conf:
Drivers Microdowell Taylormade
NUT will execute the script /etc/nut/notifyme if any of the above conditions occur, passing the text of the condition to the script. From this point, you can write your own custom script to notify you however you prefer. In my case, I wrote a script to send an email to my gmail account (from the same account). Install the msmtp package. Then add the following to /etc/msmtprc
where useraccount@gmail.com is your gmail account and 12345 is your password. (replace '12345' in the config file with your password, don't change your gmail password to '12345'! That's the kind of thing an idiot would have on his luggage!) Change the owner of /etc/msmtprc
Create the script /etc/nut/notifyme
Drivers Microdowell 64
Ok, so it might not be the most elegant script, but it works. If somebody has a better suggestion, I wouldn't mind hearing about it.
Change the permissions and ownership of the script:
Test it out by unplugging the UPS, and you'll get a cool little email notification. You can modify /etc/nut/notifyme to suit your preference. I think this is the coolest feature!
Data Logging
An optional feature of NUT is to log UPS data. If you had some sort of practical storage on your router, you could do this on the router itself. Since my router only has the limited flash RAM, I chose to implement it on my linux server, acting as a NUT client. I created a directory and set permissions to user nut.
I then added the command to /etc/rc.local
Web Status Interface
The last feature that the APC Network Management Card had, that I still wanted, was a web-based status page. I implemented this on my Debian linux NUT client. I installed the nut-cgi package. Then I added the line to /etc/nut/hosts.conf:
That's it. You can view your UPS status by going to http://yourservername/cgi-bin/nut/upsstats.cgi, where 'yourservername' is the name of your web server.