[Nut-upsuser] PowerCom BNT2000AT ups on nut 2.6.0 - second try

Angela Williams angierfw at gmail.com
Fri May 13 09:46:11 UTC 2011


Hi!
Normally nut was just worked and worked for me!
Not this time though!

Distro is Gentoo withe latest nut-2.6.0 emerged today.
Linux kernel version is 2.6.36
UPS is PowerCom BNT2000AT
"Driver" is powercom 
ups.conf looks like this! Okay so APC1 is not and APC!
 [APC1]       
        driver = powercom 
        type = BNT
        port = /dev/ttyS1
        numOfBytesFromUPS = 16
        methodOfFlowControl = no_flow_control
        validationSequence = {{11,0x42},{8,0},{8,0}}
        shutdownArguments = {{1,30},y}
        modelname = BNT2000APT
        serialnumber = 2233445566
        desc = Computer Room Small UPS

I running /lib/nut/powercom  -a APC1 -DDDDDDDDDD  (Okay so the debugs are 
overboard!!!)
Result is this!
Network UPS Tools - PowerCom protocol UPS driver 0.12 (2.6.0)
   0.000000     debug level is '10'
   0.002058     Flow control disable
   0.002408     Num of bytes requested for reading from UPS: 16
   0.147226     Num of bytes received from UPS: 16
Raw data from UPS:
 0 0x0f ( )
 1 0x64 (d)
 2 0x6b (k)
 3 0x6b (k)
 4 0x32 (2)
 5 0xff (ÿ)
 6 0x32 (2)
 7 0x00 ( )
 8 0x00 ( )
 9 0x00 ( )
10 0x00 ( )
11 0x4b (K)
12 0x98 ()
13 0x00 ( )
14 0x00 ( )
15 0x00 ( )
   0.147415     data receiving error (validation check)
   0.147460     send_to_all: SETINFO device.type "ups"
   0.147489     send_to_all: SETINFO driver.version "2.6.0"
   0.147516     send_to_all: SETINFO driver.version.internal "0.12"
   0.147543     send_to_all: SETINFO driver.name "powercom"
   0.147570     send_to_all: SETINFO ups.mfr "PowerCom"
   0.147596     send_to_all: SETINFO ups.model "BNT2000APT"
   0.147622     send_to_all: SETINFO ups.serial "2233445566"
   0.147649     send_to_all: SETINFO ups.model.type "BNT"
   0.147675     send_to_all: SETINFO input.voltage.nominal "230"
   0.147699     send_to_all: ADDCMD test.battery.start
   0.147722     send_to_all: ADDCMD shutdown.return
   0.147746     send_to_all: ADDCMD shutdown.stayoff
   0.147833     Num of bytes requested for reading from UPS: 16
   0.293224     Num of bytes received from UPS: 16

I did run an strace and saw this! Starting at sending the single char!
ioctl(4, SNDCTL_TMR_START or TCSETS, {B1200 -opost -isig -icanon -echo ...}) = 
0
write(4, "\1", 1)                       = 1
nanosleep({0, 0}, NULL)                 = 0
gettimeofday({1304946608, 723932}, NULL) = 0
write(2, "   0.013837\t", 12)           = 12
write(2, "Num of bytes requested for readi"..., 48) = 48
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 982709})
read(4, "\17", 16)                      = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992263})
read(4, "d", 15)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991229})
read(4, "l", 14)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992217})
read(4, "l", 13)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991206})
read(4, "2", 12)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992220})
read(4, "\377", 11)                     = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991215})
read(4, "2", 10)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992207})
read(4, "\0", 9)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991206})
read(4, "\0", 8)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992191})
read(4, "\0", 7)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991224})
read(4, "\0", 6)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991209})
read(4, "K", 5)                         = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992207})
read(4, "\230", 4)                      = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991207})
read(4, "\0", 3)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 992208})
read(4, "\0", 2)                        = 1
select(5, [4], NULL, NULL, {3, 0})      = 1 (in [4], left {2, 991208})
read(4, "\0", 1)
gettimeofday({1304946608, 869751}, NULL) = 0
write(2, "   0.159656\t", 12)           = 12
write(2, "Num of bytes received from UPS: "..., 35) = 35
write(1, "Raw data from UPS:\n", 19)    = 19
write(1, " 0 0x0f ( )\n", 12)           = 12
write(1, " 1 0x64 (d)\n", 12)           = 12
write(1, " 2 0x6c (l)\n", 12)           = 12
write(1, " 3 0x6c (l)\n", 12)           = 12
write(1, " 4 0x32 (2)\n", 12)           = 12
write(1, " 5 0xff (\377)\n", 12)        = 12
write(1, " 6 0x32 (2)\n", 12)           = 12
write(1, " 7 0x00 ( )\n", 12)           = 12
write(1, " 8 0x00 ( )\n", 12)           = 12
write(1, " 9 0x00 ( )\n", 12)           = 12
write(1, "10 0x00 ( )\n", 12)           = 12
write(1, "11 0x4b (K)\n", 12)           = 12
write(1, "12 0x98 (\230)\n", 12)        = 12
write(1, "13 0x00 ( )\n", 12)           = 12
write(1, "14 0x00 ( )\n", 12)           = 12
write(1, "15 0x00 ( )\n", 12)           = 12
gettimeofday({1304946608, 871867}, NULL) = 0
write(2, "   0.161772\t", 12)
write(2, "   0.161772\t", 12)           = 12
write(2, "data receiving error (validation"..., 40) = 40
gettimeofday({1304946608, 872193}, NULL) = 0
write(2, "   0.162098\t", 12) 

Only strange think I could see is the label on the back of the ups proclaims 
it to be BNT 2000 APT. The lable lists both AP and APT but the APT version is 
the selected one!

I'm not great c programmer otherwise I would have given it a go!

So anyone any ideas? I have just had a scsi disk scribbled over in the /var 
filesystem thanks to poor power on the site and NUT not working!

Cheers
Ang

-- 
Angela Williams
angierfw at gmail dot com
Linux/Networking Hacker
Blog http://angierfw.wordpress.com

Smile! Jesus Loves You!




More information about the Nut-upsuser mailing list