# HOW-TO: UPS MGE Protection Center 500

## wickwire

I've recently come in need of an UPS for my gentoo box, did some researching and found out that APC has a fairly decent support under linux - however, I also came across this baby:

http://www.mgeups.com/products/pdt230/smallups/pcenter/index.htm

And the number of power sockets, battery uptime and explicit linux support caught my attention.

So I bought it, and here's a little howto I think will come in handy for everyone else out there with it, trying to make it work properly (I've checked the forums and all I could find was a thread in spanish, so I've decided to create this how-to)

First off, kernel settings:

I'm using Gentoo Dev Sources 2.6.10-gentoo-r6 and these are the kernel settings I believe to be relevant in this case:

```
Device Drivers  --->

             USB support  ---><*> Support for Host-side USB 

   [*]   USB device filesystem

  <*> EHCI HCD (USB 2.0) support

  <*> OHCI HCD support

  <*> UHCI HCD (most Intel and VIA) support

  <*> USB Human Interface Device (full HID) support

   [*]   HID input layer support

   [*]   /dev/hiddev raw HID device support

```

(I'm a bit of a n00b so maybe I've got extra stuff turned on, I'm using UDEV as well)

This UPS connects to the PC via USB port only, and dmesg states this upon connection to the PC:

```
usbcore: registered new driver hiddev

usbhid: probe of 2-2:1.0 failed with error -5

```

However, it still works.

Now, according to http://opensource.mgeups.com/ups.htm, the MGE Protection Center uses the newhidups driver and the most recent version of NUT (http://www.networkupstools.org/) in portage at the time of writing was www-apps/nut-2.0.1_pre4 which I believe doesn't have this newhidups driver, I installed it and the driver wasn't there, so I downloaded the source code for www-apps/nut-2.0.1 to /usr/portage/distfiles/ from the NUT homepage and created my own ebuild copying the /usr/portage/www-apps/nut/ directory to /usr/local/portage/, deleting all the ebuilds except one, all metadata, manifests, renaming the ebuild to nut-2.0.1.ebuild then running

```
ebuild nut-2.0.1.ebuild digest
```

and NUT 2.0.1 emerged just fine, so I moved on to the configuration part:

NOTE:

kdvgent wrote:

 *Quote:*   

> Downloading the nut source and building your own e-build is not necessary. I unmasked the latest nut version (nut-2.0.1_pre4) and did
> 
> Code:
> 
> ```
> ...

 

There are three files to mess around with, and a possible forth upsd.conf, upsmon.conf, upsd.users, ups.conf, all in the /etc/nut/ directory:

upsd.conf -->didn't change a thing

upsd.users --> didn't change a thing

ups.conf

```
[mge]   

        driver = newhidups

        port = auto

        desc = "MGE Protection Center"
```

upsmon.conf

```
RUN_AS_USER root --> tried with "nutmon" but the notices to all users and notifyme script didn't work, decided to risk it with root...

MONITOR mge@localhost 1 <user> <pass> master

MINSUPPLIES 1

SHUTDOWNCMD "/sbin/shutdown -h +0"

NOTIFYCMD /usr/local/bin/notifyme

POLLFREQ 5

POLLFREQALERT 5

HOSTSYNC 15

DEADTIME 15

POWERDOWNFLAG /etc/killpower

NOTIFYMSG ONLINE "UPS %s is getting line power"

NOTIFYMSG ONBATT "Someone pulled the plug on %s"

NOTIFYMSG LOWBATT "Battery is CRITICAL!"

NOTIFYMSG FSD "UPS is going down"

NOTIFYMSG COMMOK "UPS is responding properly"

NOTIFYMSG COMMBAD "UPS not responding"

NOTIFYMSG SHUTDOWN "The system will shutdown NOW"

NOTIFYMSG REPLBATT "Hurry up and change batteries!"

NOTIFYFLAG ONLINE EXEC+SYSLOG+WALL

NOTIFYFLAG ONBATT EXEC+SYSLOG+WALL

NOTIFYFLAG LOWBATT EXEC+SYSLOG+WALL

NOTIFYFLAG FSD EXEC+SYSLOG+WALL

NOTIFYFLAG COMMOK EXEC+SYSLOG

NOTIFYFLAG COMMBAD EXEC+SYSLOG

NOTIFYFLAG SHUTDOWN EXEC+SYSLOG+WALL

NOTIFYFLAG REPLBATT EXEC+SYSLOG+WALL

RBWARNTIME 43200

NOCOMMWARNTIME 300

FINALDELAY 2
```

I then changed the battery.battery.low parameter on the UPS to 20% (there will be a prompt for the value),

as root

```
grin linux # upsrw -s battery.charge.low -u <user> -p <pass> mge@localhost
```

this way the battery will assume critical state when reaching 20% of its battery uptime - and then the system shuts down accordingly.

/etc/init.d/upsd start

/etc.init.d/upsmon start

rc-update add upsd default

rc-update add upsmon default

I'm thinking that my logic behind this is ok... First I though of a way to, upon power failure, the system ignite a delayed shutdown - if the power returned before the delay, the UPS notified the system and the shutdown sequence would be aborted.

I then realised that it would be simpler to just use the critical parameter on the UPS: power is out, if it comes back before then, fine, the system never knew what went on and the power is back, the UPS recovers, if not, as the critical battery limit is reached, the system is notified and immediate shutdown takes place.

knutclient seems to be a very nice UPS client, allows to alter rw parameters such as the critical battery level however I've decided to use ups-monitor which only shows the state of the ups - it's more "gnomish", knutclient is KDE all the way.

So far I've been using the UPS just fine, sometimes I see a notice regarding loss of communication with the UPS but right after that I get another one informing that communication has been re-established, so I think things are under control...

I hope this helps setting things up, feel free to improve the How-to with tips and comments, my main reason in doing it was so that everyone else in doubt about UPS support would find this one to work under linux, as I've read in the forums that USB connection for this model might be tricky... well, it works!  :Smile: 

Also, forgot to mention, the UPS load is at 34% - one hdd, one DVD-writer, a 450W Be Quiet! PSU, Asus A7N8X Deluxe + AMD Athlon XP 2000+, 512MB DDR.

EDIT:

If set, WALL outputs the NOTIFYMSG to a running console I think, but I've set things up so that when something happens and a NOTIFYMSG is to come out, it gets mailed to a given user instead - with EXEC and the NOTIFYCMD.

I used sendmail and Thunderbird. Set up an email account with movemail in Thunderbird for the user in question, then go to upsmon.conf and set the NOTIFYCMD /usr/local/bin/notifyme (or whatever you want to call it), create the notifyme file (or the name you chose) under /usr/local/bin similar to this and chmod it to executable:

```

#! /bin/bash

(echo Subject: MGE Protection Center ; echo "$*"  )| sendmail -F"mge@localhost" grin@grin.gr.org

```

when a NOTIFYMSG shows up, if it has the EXEC set, an email is generated with the Subject and given msg and then sent to grin@grin.gr.org, with sender mge@localhost.Last edited by wickwire on Sun Aug 28, 2005 9:11 pm; edited 2 times in total

----------

## kdvgent

Your HOWTO has been a great help.  Thanks.  Some remarks, questions:

Downloading the nut source and building your own e-build is not necessary.  I unmasked the latest nut version (nut-2.0.1_pre4) and did

```
NUT_DRIVERS="newhidups" emerge www-apps/nut
```

For the configuration of the various files, I did follow the instructions in the NUT documentation (where it is explained how to define a specific user and group so that root is not needed): http://eu1.networkupstools.org/doc/2.0.1/INSTALL.html.

Remaining problems, questions:

I get regularly "data stale" messages although, as explained in the nut FAQ, I allready put MAXAGE to 30 in upsd.conf.

I am using enlightenment (E17) as windows manager.  In order to be able to run certain applications, I have parts of KDE and GNOME installed - but it happens to be more KDE than GNOME.  Hence, I installed knutclient to monitor the UPS instead of ups-monitor (that would require to install almost all gnome packages).  Strange enough, knutclient needs arts (although there is no dependency in the e-build).  But having installed arts (that I do not use), everything works fine.

I tried to install the gkrellm plug-in (gkrellmbups) but, in order to work with NUT, during the build one must run ./configure with the --enable-nut option.  I do not know how to pass this option via the emerge command.

Hope this helps.

----------

## wickwire

Hi there, thanks for the comments, I'll get right on correcting the How-To - I also get "data stale" messages and somehow my ups won't last the 30min or so advertised, what I mean is, it seems to be "set" at 15min top - I still haven't had the time to mess around with it and figure out if there's some option in there that I might be missing... as for the gkrellm plugin I haven't tried it yet, I'll do so whenever possible - not quite sure on how to perform the ./configure part as well, but maybe there's something you can alter on the ebuild itself and move it to /usr/local/portage...

Later!  :Smile: 

----------

## lpx

Hi,

I bought a UPS too and everything is fine until i reach the battery low point.

The systems starts to shutdown and the ups is imnediatly shuted down.

I cant understand what's happening because the halt script located in /etc/init.d seems to be just fine! 

Can someone help me in understanding what's happening?

Cheers,

----------

## wickwire

Well, I guess that if afterwards you boot the system and the filesystem shows as having been cleanly unmounted... you're safe. 

Unless I misunderstood your situation, if after new boot the filesystem indicates NOT having been cleanly umounted, I'm thinking the following: you set the shutdown signal too close to battery lower limit, and the shutdown sequence is taking more time than the power still left on the UPS upon shutdown signal being sent.

Hence the "crash", if so - battery is at, say, 1min of "dying", signal is sent, system starts shutting down, shutdown sequence itself lasts more than a minute... battery dies and the computer loses power before shutdown sequence completes.

Hope this helps... (and sorry for the late reply)

----------

## bobbix

Just to say that you need libusb to be able to compile the newhid driver. 

Bobbix

----------

## kamikaze04

Yeah, i was having problems trying to emerge nut,  but emergin libusb solved them...

 *Quote:*   

> 
> 
> Just to say that you need libusb to be able to compile the newhid driver. 
> 
> 

 

Thanks bobbix[/code]

----------

## phsdv

 *kdvgent wrote:*   

> 3. I tried to install the gkrellm plug-in (gkrellmbups) but, in order to work with NUT, during the build one must run ./configure with the --enable-nut option.  I do not know how to pass this option via the emerge command.
> 
> [/list]

 I enhanced the ebuild. It was not that difficult. Below the diff beteen the local ebuild and the one in portage. I will file a bug report to get this into portage. [edit]bug filed[/edit]

```
$ diff gkrellmbups-2.0.2.ebuild /usr/portage/x11-plugins/gkrellmbups/gkrellmbups-2.0.2.ebuild 

5c5

< IUSE="nut"

---

> IUSE=""

23c23

<       econf `use_enable nut` || die "configure failed"

---

>       econf || die
```

Now I need to get the plugin configured, because up to now it does not show me much... (only empty graphs).

----------

## kdvgent

Anybody experiencing the same problem?

When I use a version of sys-power/nut more recent than version 2.0.0, the software always looses, after a while, contact with the UPC.  With version 2.0.0, my computer can run forever without problems.

All suggestions welcome.

----------

## phsdv

 *Quote:*   

> sys-power/nut more recent than version 2.0.0, the software always looses, after a while, contact with the UPC

  yes very similar here. I was running nut 2.0.3-r1 and that did break often. I just dowgraded to 2.0.0 and that seems to work better, but time will tell.

----------

## arlequin

Tip : if you get in trouble with kernel 2.6.17+, unmask sys-power/nut-2.0.4. In /etc/portage/package.keywords :

```
dev-libs/libusb ~x86

sys-power/nut ~x86
```

----------

