Description
Much higher than input.voltage
, often similar (not always equal) to High Transfer Voltage values where available. In many examples it is stuck at 265.0
, regardless of inputs being in 120V or 220-240V ranges.
While the issue was seen on some devices with NUT v2.7.4, it is possible that USB descriptor fix-ups introduced in #1245 (released in NUT v2.8.0) and updated by #2718 (to be released in NUT v2.8.3, currently requires custom builds to test or take advantage of) fixed some issues for one set of models/firmwares, and broke the behaviors for others that were good out of the box. This aspect can now be easily verified by use of disable_fix_report_desc
setting for usbhid-ups
driver.
It is however possible that those devices are botched in some other way that we still mis-interpret (do not compensate for vendor errors), or that the devices just lie to us and confuse the values internally. Comparative tests with older NUT releases (2.7.4, 2.8.0, current) would be helpful.
Per #1338 (comment) :
0.009244 [D1] Path: UPS.Output.LowVoltageTransfer, Type: Feature, ReportID: 0x10, Offset: 0, Size: 16, Value: 207 0.009253 [D1] Path: UPS.Output.LowVoltageTransfer, Type: Input, ReportID: 0x10, Offset: 0, Size: 16, Value: 207 0.009258 [D1] Path: UPS.Output.HighVoltageTransfer, Type: Feature, ReportID: 0x10, Offset: 16, Size: 16, Value: 253 0.009261 [D1] Path: UPS.**Output.HighVoltageTransfer**, Type: Input, **ReportID: 0x10, Offset: 16**, Size: 16, Value: **253** 0.009452 [D1] Path: UPS.**Output.Voltage**, Type: Feature, **ReportID: 0x12, Offset: 0**, Size: 16, Value: **253**
On line 4, there is ReportID 0x10 offset 16 - HighVoltageTransfer 253
On line 5, ReportID 12, offset 0, Output Voltage 253
Based on the debug - I'm not sure what ReportID exactly is, does NUT really read diferrent data and UPS reports the same value 253 or NUT actually reads the same data? Or ReportID 0x10 offset 16 is the same part of data as ReportID 12 offset 0 ?
Per #982 (comment) this looks like something #2718 and/or #1245 already could have fixed along the way:
NOTE Hex 0x74 is 116 not 140
8.350308 Report[buf]: (3 bytes) => 12 74 00 8.350325 PhyMax = 0, PhyMin = 0, LogMax = 142, LogMin = 136 8.350342 Unit = 00f0d121, UnitExp = 7 8.350359 Exponent = 0 8.350377 Path: UPS.Output.Voltage, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: 140 8.350396 send_to_all: SETINFO output.voltage "140.0"
Likewise for #982 (comment) :
Hex 7c = 124 but the value reported is 140.
0.653344 Entering libusb_get_report 0.654006 Report[get]: (3 bytes) => 12 7c 00 0.654049 PhyMax = 0, PhyMin = 0, LogMax = 142, LogMin = 136 0.654091 Unit = 00f0d121, UnitExp = 7 0.654125 Exponent = 0 0.654295 Path: UPS.Output.Voltage, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: 140
Or #581 (comment) which has same raw readings but may have different LogMin/LogMax (addressed by the PRs above later):
my CP900EPFCLCD reports the output voltage as being between 260 and 270 - though it sits at 260 most of the time. The input voltage averages around 240 as would be expected. I'm not entirely sure what to make of this, though it would appear that ef (239) is somehow being interpreted as 260?
0.010678 Report[get]: (3 bytes) => 0f ef 00 0.010687 Path: UPS.Input.Voltage, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 16, Value: 239 ... 0.011178 Report[get]: (3 bytes) => 12 ef 00 0.011188 Path: UPS.Output.Voltage, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: 260
This issue follows up from earlier reports, some closed over time, to track the problem with this specific reading:
driver.version: 20220328-3481-gccbf3eb6c6
driver.version.data: CyberPower HID 0.6
driver.version.internal: 0.47
input.voltage: 236.0
input.voltage.nominal: 230
output.voltage: 265.0 #BAD: expected near 236
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.voltage: 121.0
input.voltage.nominal: 120
output.voltage: 265.0 #BAD: expected near 120
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.transfer.high: 139
input.transfer.low: 88
input.voltage: 116.0
input.voltage.nominal: 120
output.voltage: 140.0 #BAD: expected near 120
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.voltage: 231.0
input.voltage.nominal: 230
output.voltage: 263.0 #BAD: expected near 230 (note not 265.0 either)
- CPS wrong output voltage #1338 OR1500ERM1U
### Version 2.7.4-5004-g1f143e5e (month before 2.8.0)
input.voltage: 232.0
input.voltage.nominal: 230
output.voltage: 253.0 #BAD: The value 253 in output.voltage is actually high transfer value. Probably easy to fix.
- CPS wrong output voltage #1338 OR1500ERM1U (same UPS, slightly newer NUT)
driver.version: 2.8.0-rc2-109-gbce1d5201
driver.version.data: CyberPower HID 0.6
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.24 (API: 0x1000108)
input.voltage: 230.0
input.voltage.nominal: 230
output.voltage: 253.0
- CPS wrong output voltage #1338 CP1500PFCLCDa
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.voltage: 120.0
input.voltage.nominal: 120
output.voltage: 136.0 #BAD: expected near 120
- CPS wrong output voltage #1338 OR500LCDRM1Ua
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.voltage: 118.0
input.voltage.nominal: 120
output.voltage: 135.0
driver.version: 2.7.4
driver.version.data: CyberPower HID 0.4
driver.version.internal: 0.41
input.voltage: 116.0
input.voltage.nominal: 120
output.voltage: 140.0
input.voltage: 122.0
input.voltage.nominal: 120
output.voltage: 253.0
- CPS: patch HID Report Descriptor to fix "output.voltage" #439 numerous ideas and readings and graphs, including some experimental heuristics that map the input voltage to error in reported output value
The dominating idea in those discussions is that for whatever reason NUT reads the output value as whatever is in that byte + 32 (may be or not be the value of some other HID report, especially one of not-yet-decoded ones), and then constrained by LogMin/LogMax values (which may be reported same as High (and maybe Low) Voltage Transfer's LogMin/LogMax values. This is directly the focus of #439 and #1245 (so really wondering if the problem is still seen on devices where the descriptor fix now does happen, especially with current master-branch NUT code base).
Metadata
Metadata
Assignees
Labels
Type
Projects
Status