[Nut-upsuser] bcmxcp_usb can not communicate with Eaton Powerware 5110

Arnaud Quette aquette.dev at gmail.com
Wed Jul 18 10:59:25 UTC 2012


2012/7/13 Greg Vickers <daehenoc at iinet.net.au>

> Hi,
>

Hi Greg,

I have set up a RaspberryPi computer to do monitoring of two UPSs. One is
> an MGE evolution 800, one is an Eaton Powerware 5110.  The MGE was being
> monitored by another Linux (Ubuntu 12.04) computer, and I just copied and
> pasted in the relevant nut config and it works just fine with nut.
>
> I've tried to set up the Powerware 5110 with nut, and the bcmxcp_usb
> driver can't communicate with the 5110.
>
> Here are the details of the RaspberryPi (I'm running the pre-built Debian
> distribution):
> $ uname -a
> Linux monitor 3.1.9+ #90 Wed Apr 18 18:23:05 BST 2012 armv6l GNU/Linux
>
> Here is details of the nut package:
> $ dpkg -l nut
> ||/ Name               Version            Description
> +++-==================-=======**===========-==================**
> ==============================**====
> ii  nut                2.4.3-1.1squeeze1  network UPS tools - core system
>
> Here is the ups.conf file:
> $ sudo cat /etc/nut/ups.conf
> [pw5110]
> driver = bcmxcp_usb
> port = auto
>
> Here's what happens when I try to get the driver to talk to the UPS:
> $ sudo /lib/nut/bcmxcp_usb -DD -a pw5110
> Network UPS Tools - BCMXCP UPS driver 0.23 (2.4.3)
> USB communication subdriver 0.18
>    0.000000    debug level is '2'
>    0.008810    device 004 opened successfully
>    0.011517    entering get_answer(31)
>    0.013401    get_answer: (8 bytes) => ab 01 79 01 02 50 00 50
>    0.014623    get_answer: block_number = 1
>    0.015972    get_answer: need to read 118 more data
>    0.017549    get_answer: (16 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.018769    get_answer: block_number = 1
>    0.019927    get_answer: need to read 110 more data
>    0.030671    get_answer: (24 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.031399     4f 57 45 52 57 41 52 45
>    0.031564    get_answer: block_number = 1
>    0.032179    get_answer: need to read 102 more data
>    0.046680    get_answer: (32 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.047836     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c
>    0.048017    get_answer: block_number = 1
>    0.048165    get_answer: need to read 94 more data
>    0.062676    get_answer: (40 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.063836     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00
>    0.064508    get_answer: block_number = 1
>    0.064703    get_answer: need to read 86 more data
>    0.078676    get_answer: (48 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.079436     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.080076     00 00 00 00 00 00 00
>    0.080230    get_answer: block_number = 1
>    0.080842    get_answer: need to read 78 more data
>    0.094677    get_answer: (56 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.095441     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.096094     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
>    0.096245    get_answer: block_number = 1
>    0.097018    get_answer: need to read 70 more data
>    0.110676    get_answer: (64 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.111436     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.111642     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00
>    0.112272    get_answer: block_number = 1
>    0.112436    get_answer: need to read 62 more data
>    0.126675    get_answer: (72 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.127825     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.128075     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.128694     00 00 00 00 00 00
>    0.128843    get_answer: block_number = 1
>    0.128980    get_answer: need to read 54 more data
>    0.142678    get_answer: (80 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.143436     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.144122     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.144361     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0
>    0.145140    get_answer: block_number = 1
>    0.145314    get_answer: need to read 46 more data
>    0.158684    get_answer: (88 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.159443     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.160119     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.160332     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0 00 00 00 00 00
> 00 00 00
>    0.160956    get_answer: block_number = 1
>    0.161109    get_answer: need to read 38 more data
>    0.174685    get_answer: (96 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.175448     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.176120     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.176798     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0 00 00 00 00 00
> 00 00 00 f0 00 00
>    0.176962     00 00 00 00 00
>    0.177545    get_answer: block_number = 1
>    0.177722    get_answer: need to read 30 more data
>    0.190678    get_answer: (104 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.191441     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.192119     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.192339     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0 00 00 00 00 00
> 00 00 00 f0 00 00
>    0.192986     00 00 00 00 00 00 51 00 00 51 00 00 00
>    0.193137    get_answer: block_number = 1
>    0.193879    get_answer: need to read 22 more data
>    0.206681    get_answer: (112 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.207443     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.208120     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.208338     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0 00 00 00 00 00
> 00 00 00 f0 00 00
>    0.209013     00 00 00 00 00 00 51 00 00 51 00 00 00 00 00 00 00 00 00
> f0 00
>    0.209754    get_answer: block_number = 1
>    0.209948    get_answer: need to read 14 more data
>    0.222681    get_answer: (120 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.223448     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.224117     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.224409     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0 00 00 00 00 00
> 00 00 00 f0 00 00
>    0.224616     00 00 00 00 00 00 51 00 00 51 00 00 00 00 00 00 00 00 00
> f0 00 00 00 00 00
>    0.225261     00 00 00 00
>    0.225409    get_answer: block_number = 1
>    0.225552    get_answer: need to read 6 more data
>    0.238682    get_answer: (128 bytes) => ab 01 79 01 02 50 00 50 01 00 0e
> 00 01 00 10 50
>    0.239445     4f 57 45 52 57 41 52 45 20 55 50 53 20 20 20 5c 00 00 00
> 00 00 00 00 00 00
>    0.240107     00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 51
> 51 00 00 00 00 51
>    0.240351     00 00 00 00 00 00 00 f0 00 f0 00 00 00 f0 00 00 00 00 00
> 00 00 00 f0 00 00
>    0.240558     00 00 00 00 00 00 51 00 00 51 00 00 00 00 00 00 00 00 00
> f0 00 00 00 00 00
>    0.241334     00 00 00 00 00 00 00 f0 18 3b ab 01
>    0.241969    get_answer: block_number = 1
>    0.242121    get_answer: sequence number (1) is ok
>    0.242254    get_answer: checksum is ok
>    0.242891    get_answer: block_number = 1
>    0.243072    Communications with UPS lost: get_answer: not the right
> sequence received 0!!!
>
> It looks like the above is repeated four times, then:
>
>    1.267930    Communications with UPS lost: Error executing command
>    1.268240    Could not communicate with the ups: Resource temporarily
> unavailable
>    1.268420    CLOSING
>
> I've taken out all the config relating to the MGE UPS, and there is only
> config for the 5110 in the nut config files.  I've also used the old
> chestnut of turning everything off and back on again (RaspberryPi and the
> 5110), but with no luck, the same driver error happens.
>
> I've searched the nut mail list and googled around a bit, but haven't been
> able to find a solution.  Any assistance would be greatly appreciated!  (I
> hope it's not an issue with this driver on the arm architecture!)
>
> Thanks,
> Greg
>

I've just made a quick test on an Opengear ACM 50004-2 (ARM supervision
appliance).
For the record:
- uname -a: Linux acm5004-2 2.6.30.2-uc0 #1 Tue Feb 15 09:30:54 EST 2011
armv4tl unknown
- nut version: 2.4.3 (so bcmxcp_usb 0.23)
- tried with a PW5110 (ups.firmware: Cont:00.50 Inve:01.50)

and everything worked like a charm.
That said, Charles and Kjell comments are fully valid.
That is, try with the latest version (2.6.4). It has at least more debug
traces to help getting visibility.
Could you perhaps test the 5110 on your Ubuntu system, with a recent NUT?

As a side note, I still hope to rewrite this driver, part of 2.8.0.
It will however depend on my available time, and the progress on the main
2.8.0 items...

cheers,
Arnaud
-- 
Linux / Unix / Opensource Engineering Expert - Eaton -
http://opensource.eaton.com
Network UPS Tools (NUT) Project Leader - http://www.networkupstools.org
Debian Developer - http://www.debian.org
Free Software Developer - http://arnaud.quette.fr
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.alioth.debian.org/pipermail/nut-upsuser/attachments/20120718/6230d36d/attachment-0001.html>


More information about the Nut-upsuser mailing list