[Nut-upsuser] Cyberpower BRG1350AVRLCD with powerpanel driver timeouts
Greg Troxel
gdt at lexort.com
Sun May 14 00:56:12 BST 2023
Arturo Javier Alejandro MorĂ¡n Rouzaud via Nut-upsuser
<nut-upsuser at alioth-lists.debian.net> writes:
> This is my first time using a mailing list, so please let me know if I
> missed something.
You are doing great! Your message is well-formatted, readable, and on
topic.
I know nothing about Proxmox and have never used a cyberpower UPS, so I
held back but you deserve some help so here goes:
> - OS name and version: Proxmox Virtual Environment 7.4-3
> - NUT version: 2.7.4-13
> - NUT installation method: Debian package/apt
> - Exact device name and related information: Cyberpower BRG1350AVRLCD
> https://www.cyberpowersystems.com/product/ups/intelligent-lcd/brg1350avrlcd/
That has USB and serial. usbhid is likely better, but it likely does
not work well in 2.7.4.
> - Complete problem description:
2.7.4 is ancient. The current release is 2.8.0, from a year ago, and
there are fixes since then. But so much was fixed from 2.7.4 to 2.8.0
that it just does not make sense to run 2.7.4, especially on a UPS that
is newer than 10 years old. (I use UPS units manufactured in 1995, but
I'm odd!)
Building nut is not super hard, and I would recommend that you do that.
I am not clear on exactly where the docs are, but peruse:
https://networkupstools.org/
https://github.com/networkupstools/nut/
I have been building from git, running autogen.sh and configure. I have
attached my script; it's for NetBSD instead of Debian but it will not be
hard to adjust.
> I'm trying to use this UPS over a serial connection with a Lenovo computer
> running Proxmox. I've already been successful in using it over the USB
> connection with a Raspberry Pi and both Raspbian and OpenWRT, but given
> this computer has a built-in (and as of yet non-functional) serial port, I
> wanted to try it out and see if I'm able to free up a USB port after all.
Do you mean that
- running ups-nut on a RPI with Raspbian
- using a USB/serial adaptor on the RPI
- connecting the adaptor to the UPS with say a DB9 cable
then you can "upsc foo" and see UPS status?
and what version of nut?
Note to others: "man powerpanel" to understand that text is a flavor of
communications protocol that the powerpanel driver supports.
> I am able to connect successfully using the text protocol, however, it
> seems the driver times out after negotiating a link over the serial
> connection. At the moment I am testing it over a USB to Serial adapter, but
> even through this method the official Powerpanel is unable to detect the
> UPS at all, so only NUT seems to be the option here.
Are you sure the virtual USB device is really connected to the serial
lines? I'm jumping to conclusions but this smells like a virtualization
interface issue. On the other hand you seem to be getting bits.
> If I'm able to get the UPS working over the USB adapter, I'll be able to
> discard the powerpanel driver as a potential issue and move on to
> diagnosing the onboard RS-232, but for the moment I hope I've included
> enough information as a starting point.
You have, but this points to the port. I suggest running the driver
with debugging.
> Thanks for the help!
>
> Settings:
> /etc/nut/ups.conf
> maxretry = 5
> [cyberpower]
> driver = powerpanel
> protocol = text
> port = /dev/ttyUSB0
man page says protocol is autodetected, so presumably you set it in the UPS.
> Debug trace:
> /lib/nut/powerpanel -a cyberpower -DDDDDD
> Network UPS Tools - CyberPower text/binary protocol UPS driver 0.27 (2.7.4)
> Warning: This is an experimental driver.
> Some features may not function correctly.
>
> 0.000000 debug level is '6'
> 0.011614 Trying text protocol...
> 0.112022 send: (2 bytes) => 0d 0d
> 0.212152 read: (3 bytes) => 23 2d 33
> 0.362686 send: (3 bytes) => 50 34 0d
> 0.762718 read: (66 bytes) => 23 42 52 47 31 33 35 30 41 56 52 4c 43
> 44 2c 42 46 30
> 0.762744 31 34 30 31 42 41 33 31 2c 42 47 38 4b 50 32 30 30 30 30
> 30 32 2c 43 79 62
> 0.762752 65 72 50 6f 77 65 72 20 53 79 73 74 65 6d 73 20 49 6e 63
> 2e 2c 2c 2c
> 0.762771 CyberPower UPS with text protocol on /dev/ttyUSB0 detected
that's a good sign.
> 0.762792 send_to_all: SETINFO device.type "ups"
> 0.762814 send_to_all: SETINFO driver.version "2.7.4"
> 0.762819 send_to_all: SETINFO driver.version.internal "0.27"
> 0.762828 send_to_all: SETINFO driver.name "powerpanel"
> 0.762833 send_to_all: SETINFO ups.mfr "CyberPower"
> 0.762837 send_to_all: SETINFO ups.model "[unknown]"
> 0.762842 send_to_all: SETINFO ups.serial "[unknown]"
> 0.762847 send_to_all: SETINFO ups.delay.start "60"
> 0.762852 send_to_all: SETINFO ups.delay.shutdown "60"
> 0.762858 send_to_all: SETINFO ups.model "BRG1350AVRLCD"
> 0.762863 send_to_all: SETINFO ups.firmware "BF01401BA31"
> 0.762868 send_to_all: SETINFO ups.serial "BG8KP2000002"
> 0.762872 send_to_all: SETINFO ups.mfr "CyberPower Systems Inc."
> 0.913265 send: (3 bytes) => 50 33 0d
> 1.013433 read: (16 bytes) => 23 31 32 2c 32 78 31 2c 31 32 2c 30 2c
> 33 2c 38
> 1.013449 send_to_all: SETINFO battery.voltage.nominal "12"
> 1.013468 send_to_all: SETINFO battery.packs "2"
> 1.013473 send_to_all: SETINFO battery.capacity "12"
> 1.163985 send: (3 bytes) => 50 32 0d
> 1.264124 read: (24 bytes) => 23 31 33 35 30 2c 38 31 30 2c 31 32 30
> 2c 35 37 2c 36
> 1.264136 33 2c 31 31 2e 33
> 1.264144 send_to_all: SETINFO ups.power.nominal "1350"
> 1.264164 send_to_all: SETINFO ups.realpower.nominal "810"
> 1.264169 send_to_all: SETINFO input.voltage.nominal "120"
> 1.264174 send_to_all: SETINFO input.frequency.low "57"
> 1.264179 send_to_all: SETINFO input.frequency.high "63"
> 1.414690 send: (3 bytes) => 50 31 0d
> 1.514887 read: (18 bytes) => 23 31 32 30 2c 31 32 39 2c 31 30 33 2c
> 30 2c 33 30 30
> 1.514903 send_to_all: SETINFO input.transfer.high "129"
> 1.514921 send_to_all: SETINFO input.transfer.low "103"
> 1.514926 send_to_all: SETINFO battery.charge.low "0"
> 1.514943 send_to_all: ADDCMD test.battery.start.quick
> 1.514948 send_to_all: ADDCMD test.battery.stop
> 1.514967 send_to_all: ADDCMD beeper.enable
> 1.514972 send_to_all: ADDCMD beeper.disable
> 1.514977 send_to_all: ADDCMD beeper.on
> 1.514981 send_to_all: ADDCMD beeper.off
> 1.514986 send_to_all: ADDCMD shutdown.stop
> 1.665448 send: (3 bytes) => 50 36 0d
> 1.765626 read: (8 bytes) => 23 31 32 39 2b 31 2a 36
> 1.765639 send_to_all: SETFLAGS input.transfer.high RW
> 1.765659 send_to_all: ADDENUM input.transfer.high "129"
> 1.916165 send: (3 bytes) => 50 37 0d
> 2.016345 read: (7 bytes) => 23 39 37 2b 31 2a 36
> 2.016359 send_to_all: SETFLAGS input.transfer.low RW
> 2.016380 send_to_all: ADDENUM input.transfer.low "97"
> 2.166804 send: (3 bytes) => 50 38 0d
> 2.267000 read: (3 bytes) => 23 2d 33
> 2.267029 send_to_all: SETFLAGS battery.charge.low RW
> 2.267035 send_to_all: ADDENUM battery.charge.low "-3"
that looks wrong but minor.
> 2.417484 send: (3 bytes) => 50 35 0d
> 2.517639 read: (4 bytes) => 23 31 32 30
> 2.668106 send: (3 bytes) => 50 39 0d
> 2.768317 read: (4 bytes) => 23 de d7 c0
> 2.868582 send: (2 bytes) => 43 0d
> 2.968682 read: (4 bytes) => 23 2d 31 30
> 2.968709 send_to_all: ADDCMD shutdown.return
> 2.968714 send_to_all: ADDCMD shutdown.stayoff
> 2.968719 send_to_all: ADDCMD shutdown.reboot
> 3.069074 send: (2 bytes) => 44 0d
> 3.269214 read: (35 bytes) => 23 49 31 31 38 2e 39 4f 31 31 38 2e 39
> 4c 39 42 31 30
> 3.269241 30 56 32 37 2e 36 46 36 30 2e 30 48 46 36 30 2e 30
> 3.519628 read: timeout
> 3.519661 \_: (23 bytes) => 52 31 34 31 51 30 2e 35 53 80 84 c0 88
> 80 57 00 0d 00
> 3.519666 00 00 00 00 00
> 3.519670 Communications with UPS lost: Status read failed!
looks like the read timeout is very much too aggressive.
> 3.519740 dstate_init: sock /run/nut/powerpanel-cyberpower open on fd
> 5
> 3.519758 send_to_all: SETINFO driver.parameter.pollinterval "2"
> 3.519763 send_to_all: SETINFO driver.parameter.synchronous "no"
> 3.519768 send_to_all: SETINFO device.mfr "CyberPower Systems Inc."
> 3.519772 send_to_all: SETINFO device.model "BRG1350AVRLCD"
> 3.519776 send_to_all: SETINFO device.serial "BG8KP2000002"
> 3.620077 send: (2 bytes) => 44 0d
> 3.820259 read: (35 bytes) => 23 49 31 31 38 2e 39 4f 31 31 38 2e 39
> 4c 37 42 31 30
> 3.820286 30 56 32 37 2e 36 46 36 30 2e 30 48 46 36 30 2e 30
> 4.070655 read: timeout
> 4.070686 \_: (23 bytes) => 52 36 30 51 30 2e 36 53 80 84 c0 88 80
> 57 00 0d 00 00
> 4.070690 00 00 00 00 00
> 4.070696 Communications with UPS lost: Status read failed!
> 5.620922 send: (2 bytes) => 44 0d
> 5.821119 read: (35 bytes) => 23 49 31 31 38 2e 38 4f 31 31 38 2e 38
> 4c 39 42 31 30
> 5.821130 30 56 32 37 2e 36 46 36 30 2e 30 48 46 36 30 2e 30
> 6.071446 read: timeout
> 6.071489 \_: (23 bytes) => 52 31 33 32 51 30 2e 35 53 80 84 c0 88
> 80 57 00 0d 00
> 6.071508 00 00 00 00 00
> 6.071512 Communications with UPS lost: Status read failed!
> 7.622016 send: (2 bytes) => 44 0d
> 7.822199 read: (35 bytes) => 23 49 31 31 38 2e 38 4f 31 31 38 2e 38
> 4c 39 42 31 30
> 7.822211 30 56 32 37 2e 36 46 36 30 2e 30 48 46 36 30 2e 30
> 8.072581 read: timeout
> 8.072613 \_: (23 bytes) => 52 31 32 37 51 30 2e 35 53 80 84 c0 88
> 80 57 00 0d 00
> 8.072618 00 00 00 00 00
> 8.072623 Communications with UPS lost: Status read failed!
> ^C
Overall, you may be running into driver bugs that others have fixed
already. Get on git master and try again. Learn to use -D on the
driver. Then ask again with what you've learned.
-------------- next part --------------
#!/bin/sh
export PYTHON=/usr/pkg/bin/python3.10
export MAKE=make
# \todo Make optional.
#PAR="-j6"
export V=1
PATH=/home/gdt/bin/ccache:$PATH
sudo rm -rf BUILD DESTDIR OUT.*
mkdir BUILD DESTDIR
# nut-scanner has dups
find . -name \*.[ch] | egrep -v nut-scanner | etags -
time ./autogen.sh > OUT.00.autogen 2>&1
(cd BUILD &&
# Try to match pgksrc.
CPPFLAGS=-I/usr/pkg/include \
LDFLAGS="-L/usr/pkg/lib -Wl,-R/usr/pkg/lib" \
time ../configure --prefix=/usr/pkg \
--prefix=/usr/pkg \
--with-drvpath=/usr/pkg/libexec/nut \
--with-pidpath=/var/db/nut \
--with-altpidpath=/var/db/nut \
--with-user=nut --with-group=nut \
--with-doc=man \
--without-python2 \
--with-python=${PYTHON} \
> ../OUT.01.configure 2>&1 &&
time ${MAKE} ${PAR} \
> ../OUT.10.make 2>&1 &&
time ${MAKE} ${PAR} \
check > ../OUT.20.check 2>&1 &&
time ${MAKE} ${PAR} DESTDIR=/home/gdt/SOFTWARE/IOT/nut/DESTDIR install \
> ../OUT.30.install 2>&1 &&
# distcheck-light
CPPFLAGS=-I/usr/pkg/include \
LDFLAGS="-L/usr/pkg/lib -Wl,-R/usr/pkg/lib" \
time ${MAKE} ${PAR} dist \
> ../OUT.40.dist 2>&1 &&
(cp -p nut-*.tar.gz /usr/pkgsrc/distfiles;
if [ "$PUBLISH" = yes ]; then
./_publish
fi)
)
More information about the Nut-upsuser
mailing list