[Nut-upsdev] Belkin F6C900-UNV and the megatec driver

Christian Monkman c.b.monkman at gmail.com
Sat Mar 10 06:18:39 CET 2007


Greetings!

Thanks to all the developers who have made this project so far. 
Searching for a Linux based Belkin UPS monitor led me straight to the 
Network UPS Tools.

I have bought a Belkin F6C900-UNV (900VA) for use on a Slackware 10.2 
server to replace an older APC model that died suddenly.

So far I have successfully managed to get NUT 2.0.5 compiled and 
configured and found that this Belkin product uses the Megatec protocol 
over RS-232. The three daemons, megatec, upsd, and upsmon, start up 
properly, and using /usr/local/ups/bin/upsc will show the UPS voltage 
levels, load, etc, correctly. The problem I am having is that the 
monitor never changes from OL to OB when I tried testing pulling the 
plug from the wall.

Output from the NUT programs looks like this when connected to utility 
power:
root at myhost:~# /usr/local/ups/bin/upsc Belkin900 at localhost
battery.charge: 100.0
battery.voltage: 27.60
battery.voltage.nominal: 24.0
driver.name: megatec
driver.parameter.port: /dev/ttyS0
driver.version: 2.0.5
driver.version.internal: 1.5
input.frequency: 59.9
input.voltage: 122.5
input.voltage.fault: 122.8
output.voltage: 122.5
output.voltage.nominal: 120.0
ups.beeper.status: disabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 7.0
ups.mfr: unknown
ups.model: unknown
ups.serial: unknown
ups.status: OL
ups.temperature: 0.0

When disconnected from the wall I get this:
root at myhost:~# /usr/local/ups/bin/upsc Belkin900 at localhost
battery.charge: 98.2
battery.voltage: 26.50
battery.voltage.nominal: 24.0
driver.name: megatec
driver.parameter.port: /dev/ttyS0
driver.version: 2.0.5
driver.version.internal: 1.5
input.frequency: 59.9
input.voltage: 122.5
input.voltage.fault: 122.8
output.voltage: 122.5
output.voltage.nominal: 120.0
ups.beeper.status: disabled
ups.delay.shutdown: 0
ups.delay.start: 2
ups.load: 8.0
ups.mfr: unknown
ups.model: unknown
ups.serial: unknown
ups.status: OL
ups.temperature: 0.0

Using Minicom on the serial port the UPS is connected to set to 
2400-8-N-1 and sending the characters Q1<cr> produces this output when 
utility is connected:
(122.5 122.8 122.5 007 59.9 27.6 N/.A 00001001

And this output immediately after the unit is unplugged from the wall:
(122.5 122.8 122.5 008 59.9 27.4 N/.A 10001001

Sending the characters F<cr> produces this:
#120.0 006 24.00 60.0

Sending T<cr> makes the UPS test for 10 seconds. Sending T01 or T1 
doesn't seem to work, the UPS echoes it back. Sending I<cr> doesn't 
produce any output, but doesn't echo back "I" either. Sending D<cr> 
echoes D back. I have not tried sending S yet.

During the 10 second test, a Q1 returns this:
(122.8 122.8 122.8 009 59.9 27.5 N/.A 00001101

I think the stumbling block I have run into is that this UPS sends the 
characters "N/.A" where the temperature digits are expected, and the 
driver doesn't see the 8 status bits that follow.

I wish I was more of a programmer to be able to solve this and send in a 
patch to help anybody else who wants to monitor a F6C900-UNV. If this 
issue has been solved in a testing release, my apologies, I checked the 
ChangeLog but did not see it. If I can be of any more help with 
providing output from the UPS' serial port please let me know.


Thanks in advance for any advice or help,
Christian



More information about the Nut-upsdev mailing list