Discussion:
[Nut-upsdev] [HCL] Riello IPG 600 supported by riello_usb / incorrect battery.charge and ups.temperature values
Andrés Valdaliso
2017-11-16 11:30:26 UTC
Permalink
Hello everyone,

I recently bought a Riello IPG 600 UPS (
http://www.riello-ups.com/products/1-ups/39-iplug) to prevent hardware
damage to my server in case of power outages (already lost two hard drives
because of this) and I managed to successfully configure it with NUT
version 2.7.4 available for Ubuntu 17.04:

nut/zesty-updates,zesty-updates,now 2.7.4-5ubuntu2.1 all [installed]
nut-cgi/zesty-updates,now 2.7.4-5ubuntu2.1 amd64 [installed]
nut-client/zesty-updates,now 2.7.4-5ubuntu2.1 amd64 [installed]
nut-server/zesty-updates,now 2.7.4-5ubuntu2.1 amd64 [installed]

However, the command upsc returns incorrect values for battery.charge and
ups.temperature:

battery.capacity: 5
battery.charge: 255
battery.runtime: 3932100
battery.voltage: 13.5
battery.voltage.nominal: 12
device.mfr: RPS S.p.a.
device.model: USV5
device.serial:
device.type: ups
driver.name: riello_usb
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.internal: 0.03
input.bypass.frequency: 409.50
input.bypass.voltage: 4095
input.frequency: 50.10
input.voltage: 235
output.frequency: 50.10
output.frequency.nominal: 50.0
output.L1.current: 0
output.L1.power: 0
output.L1.realpower: 0
output.L2.current: 0
output.L2.power: 0
output.L2.realpower: 0
output.L3.current: 0
output.L3.power: 0
output.L3.realpower: 0
output.power.percent: 0
output.voltage: 233
output.voltage.nominal: 230
ups.firmware: SWM036-01-02
ups.load: 0
ups.mfr: RPS S.p.a.
ups.model: USV5
ups.power.nominal: 600
ups.productid: 5500
ups.realpower.nominal: 360
ups.serial:
ups.status: OL
ups.temperature: 255
ups.vendorid: 04b4

The CGI interface is showing 255% battery level and 255 ºC temperature
values, as well.

I ran a test and disconnected the UPS from the mains while monitoring these
values to see if they changed, and while ups.status changed to "OB", I
could not see any differences in ups.temperature and battery.charge values
over the course of 10 minutes (I have a modem-router connected to the UPS
as well as the server, so I would expect to at least see the battery.charge
value change a bit, as both of them kept running). This is what upsc
returns after 10 minutes on battery:

battery.capacity: 5
battery.charge: 255
battery.runtime: 3932100
battery.voltage: 12.3
battery.voltage.nominal: 12
device.mfr: RPS S.p.a.
device.model: USV5
device.serial:
device.type: ups
driver.name: riello_usb
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.version: 2.7.4
driver.version.internal: 0.03
input.bypass.frequency: 409.50
input.bypass.voltage: 4095
input.frequency: 0.00
input.voltage: 6
output.frequency: 50.00
output.frequency.nominal: 50.0
output.L1.current: 0
output.L1.power: 0
output.L1.realpower: 0
output.L2.current: 0
output.L2.power: 0
output.L2.realpower: 0
output.L3.current: 0
output.L3.power: 0
output.L3.realpower: 0
output.power.percent: 0
output.voltage: 230
output.voltage.nominal: 230
ups.firmware: SWM036-01-02
ups.load: 0
ups.mfr: RPS S.p.a.
ups.model: USV5
ups.power.nominal: 600
ups.productid: 5500
ups.realpower.nominal: 360
ups.serial:
ups.status: OB
ups.temperature: 255
ups.vendorid: 04b4

It looks as if the driver riello_usb might not be reading the values
correctly? This seems to be supported by report #1 on this link, showing a
different UPS from the same manufacturer using the same riello_usb driver:
http://networkupstools.org/ddl/Riello/iDialog_800_IDG_800.html

I got this UPS model in particular because it was readily available in my
country and showed with support level green (vendor provided protocol and
hardware) in networkupstools.org stable hardware compatibility list, so it
seemed like a good choice. However, not being able to monitor the battery
charge value is a real show-stopper (I can live with inaccurate temperature
readings, though).

According to github, last modification on riello_usb.c was commited 3 years
ago, so I'm not sure if it's being maintained. Is there something that can
be done about this, or am I better off getting a different UPS altogether?

Thanks and regards,
Andrés Valdaliso.
Charles Lepple
2017-11-21 15:44:26 UTC
Permalink
[when responding, please use Reply-All to include the list. Thanks!]
Post by Andrés Valdaliso
Hello everyone,
nut/zesty-updates,zesty-updates,now 2.7.4-5ubuntu2.1 all [installed]
nut-cgi/zesty-updates,now 2.7.4-5ubuntu2.1 amd64 [installed]
nut-client/zesty-updates,now 2.7.4-5ubuntu2.1 amd64 [installed]
nut-server/zesty-updates,now 2.7.4-5ubuntu2.1 amd64 [installed]
Thank you for providing the exact distribution and version information for NUT. You may want to monitor the status of this bug on Launchpad for shutdowns under systemd: https://bugs.launchpad.net/bugs/1603609
...

It looks like a number of other values are scaled versions of 4095 (0xFFF), which probably means that the driver should not publish those values, either.

Note that by default, upsmon does not use any of these values to decide when to shut down - it only looks for "ups.status: OB LB" (which is determined by the UPS firmware).
Post by Andrés Valdaliso
It looks as if the driver riello_usb might not be reading the values correctly? This seems to be supported by report #1 on this link, showing a different UPS from the same manufacturer using the same riello_usb driver: http://networkupstools.org/ddl/Riello/iDialog_800_IDG_800.html
I will note that the IDG and IPG models are not listed in the protocol documentation files that are published here: http://networkupstools.org/ups-protocols.html#_riello
Post by Andrés Valdaliso
I got this UPS model in particular because it was readily available in my country and showed with support level green (vendor provided protocol and hardware) in networkupstools.org stable hardware compatibility list, so it seemed like a good choice. However, not being able to monitor the battery charge value is a real show-stopper (I can live with inaccurate temperature readings, though).
You are starting to see the difficulty of maintaining a simple rating system for these units, which is what led to the creation of the DDL.

I think we can move the support level from 5 to 4 for IDG and IPG models, though, since they are not explicitly mentioned in the protocol documentation.
Post by Andrés Valdaliso
According to github, last modification on riello_usb.c was commited 3 years ago, so I'm not sure if it's being maintained. Is there something that can be done about this, or am I better off getting a different UPS altogether?
The age of the code is not necessarily a great indication of anything, really. The microcontrollers in an UPS are typically not upgradable (either due to lack of vendor updates, or because they are one-time programmable), so updates to drivers often come in bursts: when a user reports a problem, or when a new model comes out that breaks compatibility.

Since you are a customer of Riello, I would recommend that you contact them to ask whether they can publish additional protocol documentation for the IPG series. It might be that the UPS simply needs a calibration command to enable the battery.charge value, or the UPS might not support it at all. You might also want to ask if there is a firmware update, just in case (though I did not see any indication of that on the vendor website).

You may also want to consider your level of investment with this UPS. Your decision may be different if you have these units deployed throughout your network, or if you only have one system which needs reliable power/shutdown. While I have no hard data for this, my instinct is that most of the mid- to upper-tier models pay for themselves in the time saved debugging issues like missing values, as compared to inexpensive models.

There are ways to estimate the battery charge percentage, but they really require a bit more knowledge of the state of the system, and without actual current or power measurements from the UPS, I don't think we should add such an estimate to the driver. (For a fixed load, you can estimate this from the battery voltage, until the battery gets too old.)
Loading...