EcoFlow River 3 Plus Support
EcoFlow is one of the more popular companies amongst the recent wave cheaper, consumer-facing LiFePo power station / batteries.
Their new "River 3 Plus" has a USB-B port and acts as a USB HID UPS device.
I recently purchased one and would love to see NUT support eventually.
Product Page: https://www.ecoflow.com/us/river-3-series-portable-power-station (note: only the "plus" & "max" variant on this page support USB HID UPS functionality)
The device I have it hooked up to is running an older version of NUT (2.7.x) on FreeBSD which I don't have as a compiler target but I wanted to dump what limited info I have so far:
./nut-ddl-dump.sh output (usbhid-ups, explore = 1, vendorId = 3746)
File contents
EcoFlow__EF-UPS-R3P__usbhid-ups__2.7.4__01.dev generated using ups on Sun, 22 Dec 2024 19:38:06 -0800
Please revise and post as a pull request to https://github.com/networkupstools/nut-ddl/
root@twonas[~]# less EcoFlow__EF-UPS-R3P__usbhid-ups__2.7.4__01.dev
# Please add if relevant: DEVICE:URL:REPORT: <GitHub issue/PR or Mailing list archive entry URL>
# Please add if relevant: DEVICE:URL:VENDOR: <Vendor/Manufacturer/Product page URL>
# Please add comments for humans here and perhaps raise concerns about the data points,
# see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax
# strip sensitive data (passwords, SNMP community, serial number, IP address, host name...)
# and post as a pull request to https://github.com/networkupstools/nut-ddl/
# DEVICE:COMMENT:
# Device dump generated by ./nut-ddl-dump.sh on Sun, 22 Dec 2024 19:38:06 -0800
# DEVICE:EOC
# :; upsc ups
device.mfr: EcoFlow
device.model: EF-UPS-R3P
device.serial: <SNIP>
device.type: ups
driver.name: usbhid-ups
driver.parameter.explore: 1
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: no
driver.parameter.vendorid: 3746
driver.version: 2.7.4
driver.version.data: EXPLORE HID 0.1
driver.version.internal: 0.41
ups.mfr: EcoFlow
ups.model: EF-UPS-R3P
ups.productid: ffff
ups.serial: <SNIP>
ups.status: OB
ups.vendorid: 3746
# DEVICE:COMMENT-BLOCK:FIXME:UPSRW: ups
#
# DEVICE:EOC
# DEVICE:COMMENT-BLOCK:FIXME:UPSCMD: ups
# Instant commands supported on UPS [ups]:
# DEVICE:EOC
/usr/local/libexec/nut/usbhid-ups -DD -a ups -x productid=ffff -x vendorid=3746 -x explore=1 output:
Command output:
0.004043 Checking device (3746/FFFF) (/dev/usb//dev/ugen0.2)
0.006440 - VendorID: 3746
0.006450 - ProductID: ffff
0.006454 - Manufacturer: EcoFlow
0.006457 - Product: EF-UPS-R3P
0.006460 - Serial Number: <SNIP>
0.006463 - Bus: /dev/usb
0.006467 - Device release number: 0100
0.006470 Trying to match device
0.006481 Device matches
0.006694 HID descriptor length 403
0.007419 Report Descriptor size = 403
0.007582 Using subdriver: EXPLORE HID 0.1
0.007592 56 HID objects found
0.007772 Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 260
0.008017 Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 1
0.008171 Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8, Value: 0
0.008268 Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8, Value: 0
0.008421 Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 1
0.008518 Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
0.008674 Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
0.008892 Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
0.009018 Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
0.009142 Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 80
0.009152 Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 80
0.009267 Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 10
0.009392 Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 20
0.009513 refresh_report_buffer: expected 3 bytes, but got 2 instead
0.009523 Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
0.009673 Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
0.009892 Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.009903 Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.010017 Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 1928
0.010028 Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 1928
0.010143 Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.010153 Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.010390 Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
0.010516 Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
0.010641 Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
0.010766 Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.010776 Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.011047 Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.011057 Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.011142 Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.011152 Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.011160 Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.011167 Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.011175 Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.011183 Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.011190 Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.011198 Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.011206 Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.011213 Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.011220 Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.011228 Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.011235 Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.011242 Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.011250 Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.011257 Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.011265 Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.011273 Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.011280 Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.011287 Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.011295 Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.011302 Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.011309 Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.011316 Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Feature, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.011323 Path: UPS.PowerSummary.PresentStatus.CommunicationLost, Type: Input, ReportID: 0x07, Offset: 12, Size: 1, Value: 0
0.011331 Path: UPS.PowerSummary.PresentStatus.CommunicationLost, Type: Feature, ReportID: 0x07, Offset: 12, Size: 1, Value: 0
0.011338 Path: UPS.PowerSummary.PresentStatus.Overload, Type: Input, ReportID: 0x07, Offset: 13, Size: 1, Value: 0
0.011346 Path: UPS.PowerSummary.PresentStatus.Overload, Type: Feature, ReportID: 0x07, Offset: 13, Size: 1, Value: 0
0.011362 Report descriptor retrieved (Reportlen = 403)
0.011366 Found HID device
0.011370 Detected a UPS: EcoFlow/EF-UPS-R3P
0.011376 find_nut_info: unknown info type: load.off.delay
0.011380 find_nut_info: unknown info type: load.on.delay
0.011383 find_nut_info: unknown info type: load.off.delay
0.011392 upsdrv_initinfo...
0.011400 upsdrv_updateinfo...
0.257337 libusb_get_interrupt: Connection timed out
0.257359 Got 0 HID objects...
0.257365 Quick update...
0.257469 dstate_init: sock /var/db/nut/usbhid-ups-ups open on fd 6
0.257494 upsdrv_updateinfo...
0.519005 libusb_get_interrupt: Connection timed out
0.519019 Got 0 HID objects...
0.519024 Quick update...
The EcoFlow Delta 3 Plus model seems to be almost identical. It has a USB-C port that provides UPS functions. Product page: https://us.ecoflow.com/products/delta-3-series-portable-power-station Using NUT 2.8.2.
# lsusb
Bus 001 Device 025: ID 3746:ffff EcoFlow EF-UPS-DELTA
`./nut-ddl-dump.sh` output
# Please add if relevant: DEVICE:URL:REPORT: <GitHub issue/PR or Mailing list archive entry URL>
# Please add if relevant: DEVICE:URL:VENDOR: https://us.ecoflow.com/products/delta-3-series-portable-power-station
# Please add comments for humans here and perhaps raise concerns about the data points,
# see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax
# strip sensitive data (passwords, SNMP community, serial number, IP address, host name...)
# and post as a pull request to https://github.com/networkupstools/nut-ddl/
# DEVICE:COMMENT:
# Device dump generated by ./nut-ddl-dump.sh on Wed, 25 Dec 2024 17:46:22 -0600
# DEVICE:EOC
# :; upsc ecoflow
device.mfr: EcoFlow
device.model: EF-UPS-DELTA
device.serial: <SNIP>
device.type: ups
driver.debug: 2
driver.flag.allow_killpower: 0
driver.name: usbhid-ups
driver.parameter.explore: 1
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 1
driver.parameter.port: auto
driver.parameter.productid: ffff
driver.parameter.synchronous: auto
driver.parameter.vendorid: 3746
driver.state: updateinfo
driver.version: 2.8.2
driver.version.data: EXPLORE HID 0.2
driver.version.internal: 0.53
driver.version.usb: libusb-1.0.27 (API: 0x100010a)
ups.mfr: EcoFlow
ups.model: EF-UPS-DELTA
ups.productid: ffff
ups.serial: <SNIP>
ups.status: OB
ups.vendorid: 3746
# DEVICE:COMMENT-BLOCK:FIXME:UPSRW: ecoflow
# [driver.debug]
# Current debug verbosity level of the driver program
# Type: NUMBER
# Value: 2
#
# [driver.flag.allow_killpower]
# Safety flip-switch to allow the driver daemon to send UPS shutdown command (accessible via driver.killpower)
# Type: NUMBER
# Value: 0
# DEVICE:EOC
# DEVICE:COMMENT-BLOCK:FIXME:UPSCMD: ecoflow
# Instant commands supported on UPS [ecoflow]:
#
# driver.killpower - Tell the driver daemon to initiate UPS shutdown; should be unlocked with driver.flag.allow_killpower option or variable setting
# driver.reload - Reload running driver configuration from the file system (only works for changes in some options)
# driver.reload-or-error - Reload running driver configuration from the file system (only works for changes in some options); return an error if something changed and could not be applied live (so the caller can restart it with new options)
# driver.reload-or-exit - Reload running driver configuration from the file system (only works for changes in some options); exit the running driver if something changed and could not be applied live (so service management framework can restart it with new options)
# DEVICE:EOC
`/usr/lib/nut/usbhid-ups -DD -a ecoflow -x productid=ffff -x vendorid=3746 -x explore=1` output
0.000000 [D1] upsdrv_makevartable...
0.000109 [D1] Using USB implementation: libusb-1.0.27 (API: 0x100010a)
0.000397 [D1] testval_reloadable: setting 'pollinterval' exists and differs: new value '1' vs. '2'
0.000481 [D1] Network UPS Tools version 2.8.2 (release/snapshot of 2.8.2) built with aarch64-unknown-linux-gnu-gcc (GCC) 14.1.1 20240507 and configured with flags: --prefix=/usr --datadir=/usr/share/nut --libexecdir=/usr/lib/nut --sbindir=/usr/bin --sysconfdir=/etc/nut --disable-static --with-user=nut --with-group=nut --with-altpidpath=/run/nut --with-cgipath=/usr/share/nut/cgi --with-drvpath=/usr/lib/nut --with-htmlpath=/usr/share/nut/html --with-pidpath=/run/nut --with-statepath=/var/lib/nut --with-systemdsystemunitdir=/usr/lib/systemd/system --with-udev-dir=/usr/lib/udev --with-cgi --with-dev --with-doc=man --with-libltdl --with-neon --with-openssl --with-serial --with-snmp --with-usb --without-avahi --without-ipmi --without-freeipmi --without-powerman --without-wrap
0.000566 [D1] debug level is '2'
0.004349 [D1] Succeeded to become_user(nut): now UID=969 GID=969
0.004480 [D1] upsdrv_initups (non-SHUT)...
0.004503 [D2] Initializing an USB-connected UPS with library libusb-1.0.27 (API: 0x100010a) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.47')
<SNIP>
0.016262 [D2] Checking device 4 of 6 (3746/FFFF)
0.023700 [D2] - VendorID: 3746
0.023731 [D2] - ProductID: ffff
0.023747 [D2] - Manufacturer: EcoFlow
0.023763 [D2] - Product: EF-UPS-DELTA
0.023779 [D2] - Serial Number: <SNIP>
0.023795 [D2] - Bus: 001
0.023811 [D2] - Bus Port: 002
0.023826 [D2] - Device: 023
0.023842 [D2] - Device release number: 0100
0.023858 [D2] Trying to match device
0.023877 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.023959 [D2] Device matches
0.023979 [D2] Reading configuration descriptor 1 of 1
0.024005 [D2] successfully set kernel driver auto-detach flag
0.024603 [D2] Claimed interface 0 successfully
0.026735 [D2] HID descriptor too short (expected 9, got 0)
0.026783 [D2] HID descriptor length 401
0.029249 [D2] Report Descriptor size = 401
0.029468 Using subdriver: EXPLORE HID 0.2
0.029499 [D1] 56 HID objects found
0.032314 [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 1024
0.035283 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 1
0.036233 [D2] nut_libusb_get_report: Overflow
0.036274 [D1] Can't retrieve Report 1f: Success
0.036296 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8
0.037614 [D2] nut_libusb_get_report: Overflow
0.037674 [D1] Can't retrieve Report 20: Success
0.037697 [D1] Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8
0.039085 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 2
0.040080 [D1] Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
0.041097 [D1] Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
0.042095 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
0.043083 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
0.044081 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 84
0.044104 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 84
0.045081 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 5
0.046085 [D1] Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 30
0.047081 [D2] refresh_report_buffer: expected 3 bytes, but got 2 instead
0.047105 [D1] Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
0.048086 [D1] Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
0.049085 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.049109 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.050086 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 3359
0.050110 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 3359
0.051085 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 120
0.051108 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 120
0.052083 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
0.053083 [D1] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
0.054084 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
0.055084 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.055107 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.056083 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.056105 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.057107 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.057154 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.057177 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 1
0.057198 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 1
0.057218 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 0
0.057238 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 0
0.057257 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.057276 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.057307 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.057338 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.057368 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.057399 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.057461 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.057492 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.057522 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.057601 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.057631 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.057651 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.057670 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.057699 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.057729 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.057759 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.057788 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.057818 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Feature, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.057847 [D1] Path: UPS.PowerSummary.PresentStatus.CommunicationLost, Type: Input, ReportID: 0x07, Offset: 12, Size: 1, Value: 0
0.057877 [D1] Path: UPS.PowerSummary.PresentStatus.CommunicationLost, Type: Feature, ReportID: 0x07, Offset: 12, Size: 1, Value: 0
0.057907 [D1] Path: UPS.PowerSummary.PresentStatus.Overload, Type: Input, ReportID: 0x07, Offset: 13, Size: 1, Value: 0
0.057926 [D1] Path: UPS.PowerSummary.PresentStatus.Overload, Type: Feature, ReportID: 0x07, Offset: 13, Size: 1, Value: 0
Network UPS Tools - Generic HID driver 0.53 (2.8.2)
USB communication driver (libusb 1.0) 0.47
0.057970 [D2] Report descriptor retrieved (Reportlen = 401)
0.057987 [D2] Found HID device
0.058006 [D1] Detected a UPS: EcoFlow/EF-UPS-DELTA
0.058036 [D2] find_nut_info: unknown info type: load.off.delay
0.058053 [D2] find_nut_info: unknown info type: load.on.delay
0.058069 [D2] find_nut_info: unknown info type: load.off.delay
0.058097 [D1] upsdrv_initinfo...
0.058122 [D1] upsdrv_updateinfo...
0.808518 [D2] nut_libusb_get_interrupt: Connection timed out
0.808588 [D1] Got 0 HID objects...
0.808610 [D1] Quick update...
0.808913 [D2] dstate_init: sock /var/lib/nut/usbhid-ups-ecoflow open on fd 9
0.808951 Running as foreground process, not saving a PID file
0.808980 [D1] Driver initialization completed, beginning regular infinite loop
0.808999 upsnotify: notify about state 2 with libsystemd: was requested, but not running as a service unit now, will not spam more about it
0.809027 upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it
0.809044 upsnotify: logged the systemd watchdog situation once, will not spam more about it
0.809063 [D1] upsdrv_updateinfo...
1.559459 [D2] nut_libusb_get_interrupt: Connection timed out
1.559523 [D1] Got 0 HID objects...
1.559545 [D1] Quick update...
1.559619 sock_connect: enabling asynchronous mode (auto)
1.559670 [D2] send_to_one: sending SETINFO device.mfr "EcoFlow"
1.559705 [D2] send_to_one: sending SETINFO device.model "EF-UPS-DELTA"
1.559728 [D2] send_to_one: sending SETINFO device.serial "<SNIP>"
1.559751 [D2] send_to_one: sending SETINFO device.type "ups"
1.559774 [D2] send_to_one: sending SETINFO driver.debug "2"
1.559796 [D2] send_to_one: sending SETFLAGS driver.debug RW NUMBER
1.559819 [D2] send_to_one: sending SETINFO driver.flag.allow_killpower "0"
1.559841 [D2] send_to_one: sending SETFLAGS driver.flag.allow_killpower RW NUMBER
1.559864 [D2] send_to_one: sending SETINFO driver.name "usbhid-ups"
1.559886 [D2] send_to_one: sending SETINFO driver.parameter.explore "1"
1.559908 [D2] send_to_one: sending SETINFO driver.parameter.pollfreq "30"
1.559931 [D2] send_to_one: sending SETINFO driver.parameter.pollinterval "1"
1.560006 [D2] send_to_one: sending SETINFO driver.parameter.port "auto"
1.560034 [D2] send_to_one: sending SETINFO driver.parameter.productid "ffff"
1.560059 [D2] send_to_one: sending SETINFO driver.parameter.synchronous "auto"
1.560082 [D2] send_to_one: sending SETINFO driver.parameter.vendorid "3746"
1.560104 [D2] send_to_one: sending SETINFO driver.state "quiet"
1.560128 [D2] send_to_one: sending SETINFO driver.version "2.8.2"
1.560150 [D2] send_to_one: sending SETINFO driver.version.data "EXPLORE HID 0.2"
1.560173 [D2] send_to_one: sending SETINFO driver.version.internal "0.53"
1.560195 [D2] send_to_one: sending SETINFO driver.version.usb "libusb-1.0.27 (API: 0x100010a)"
1.560217 [D2] send_to_one: sending SETINFO ups.mfr "EcoFlow"
1.560238 [D2] send_to_one: sending SETINFO ups.model "EF-UPS-DELTA"
1.560260 [D2] send_to_one: sending SETINFO ups.productid "ffff"
1.560288 [D2] send_to_one: sending SETINFO ups.serial "<SNIP>"
1.560312 [D2] send_to_one: sending SETINFO ups.status "OB"
1.560333 [D2] send_to_one: sending SETINFO ups.vendorid "3746"
1.560355 [D2] send_to_one: sending ADDCMD driver.killpower
1.560377 [D2] send_to_one: sending ADDCMD driver.reload
1.560398 [D2] send_to_one: sending ADDCMD driver.reload-or-error
1.560435 [D2] send_to_one: sending ADDCMD driver.reload-or-exit
1.560458 [D2] send_to_one: sending DATAOK
1.560479 [D2] send_to_one: sending DUMPDONE
1.809381 [D1] upsdrv_updateinfo...
2.559844 [D2] nut_libusb_get_interrupt: Connection timed out
2.559913 [D1] Got 0 HID objects...
2.559935 [D1] Quick update...
2.809677 [D1] upsdrv_updateinfo...
3.560098 [D2] nut_libusb_get_interrupt: Connection timed out
Let me know if any other output would be useful. (I can get output for River 3 Plus also)
Hope this helps. Thank you.
Hello, thanks for the reports. I think an additional one would not hurt, although I'm not at a computer to actually look at them during the holiday season. If anyone (of you?) has time to follow through with the NUT sources' docs and script to generate the HID subdriver, you might have one sooner ;)
Here is the data for EcoFlow River 3 Plus that I have access to. I am using the same machine(pi4)/software for both the Delta and River models - just swapping USB port from one to the other.
# lsusb
Bus 001 Device 026: ID 3746:ffff EcoFlow EF-UPS-R3P
`./nut-ddl-dump.sh` output
cat EcoFlow__EF-UPS-R3P__usbhid-ups__2.8.2__01.dev
# Please add if relevant: DEVICE:URL:REPORT: <GitHub issue/PR or Mailing list archive entry URL>
# Please add if relevant: DEVICE:URL:VENDOR: <Vendor/Manufacturer/Product page URL>
# Please add comments for humans here and perhaps raise concerns about the data points,
# see https://networkupstools.org/ddl/#devseq-files for comment-tag syntax
# strip sensitive data (passwords, SNMP community, serial number, IP address, host name...)
# and post as a pull request to https://github.com/networkupstools/nut-ddl/
# DEVICE:COMMENT:
# Device dump generated by ./nut-ddl-dump.sh on Wed, 25 Dec 2024 17:38:55 -0600
# DEVICE:EOC
# :; upsc ecoflow
device.mfr: EcoFlow
device.model: EF-UPS-R3P
device.serial: <SNIP>
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: usbhid-ups
driver.parameter.explore: 1
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.pollonly: enabled
driver.parameter.port: auto
driver.parameter.productid: ffff
driver.parameter.synchronous: auto
driver.parameter.vendorid: 3746
driver.state: quiet
driver.version: 2.8.2
driver.version.data: EXPLORE HID 0.2
driver.version.internal: 0.53
driver.version.usb: libusb-1.0.27 (API: 0x100010a)
ups.mfr: EcoFlow
ups.model: EF-UPS-R3P
ups.productid: ffff
ups.serial: <SNIP>
ups.status: OB
ups.vendorid: 3746
# DEVICE:COMMENT-BLOCK:FIXME:UPSRW: ecoflow
# [driver.debug]
# Current debug verbosity level of the driver program
# Type: NUMBER
# Value: 0
#
# [driver.flag.allow_killpower]
# Safety flip-switch to allow the driver daemon to send UPS shutdown command (accessible via driver.killpower)
# Type: NUMBER
# Value: 0
# DEVICE:EOC
# DEVICE:COMMENT-BLOCK:FIXME:UPSCMD: ecoflow
# Instant commands supported on UPS [ecoflow]:
#
# driver.killpower - Tell the driver daemon to initiate UPS shutdown; should be unlocked with driver.flag.allow_killpower option or variable setting
# driver.reload - Reload running driver configuration from the file system (only works for changes in some options)
# driver.reload-or-error - Reload running driver configuration from the file system (only works for changes in some options); return an error if something changed and could not be applied live (so the caller can restart it with new options)
# driver.reload-or-exit - Reload running driver configuration from the file system (only works for changes in some options); exit the running driver if something changed and could not be applied live (so service management framework can restart it with new options)
# DEVICE:EOC
`/usr/lib/nut/usbhid-ups -DD -a ecoflow -x productid=ffff -x vendorid=3746 -x explore=1` output
0.000001 [D1] upsdrv_makevartable...
0.000107 [D1] Using USB implementation: libusb-1.0.27 (API: 0x100010a)
0.000400 [D1] testval_reloadable: setting 'pollinterval' exists and differs: new value '1' vs. '2'
0.000451 [D1] Network UPS Tools version 2.8.2 (release/snapshot of 2.8.2) built with aarch64-unknown-linux-gnu-gcc (GCC) 14.1.1 20240507 and configured with flags: --prefix=/usr --datadir=/usr/share/nut --libexecdir=/usr/lib/nut --sbindir=/usr/bin --sysconfdir=/etc/nut --disable-static --with-user=nut --with-group=nut --with-altpidpath=/run/nut --with-cgipath=/usr/share/nut/cgi --with-drvpath=/usr/lib/nut --with-htmlpath=/usr/share/nut/html --with-pidpath=/run/nut --with-statepath=/var/lib/nut --with-systemdsystemunitdir=/usr/lib/systemd/system --with-udev-dir=/usr/lib/udev --with-cgi --with-dev --with-doc=man --with-libltdl --with-neon --with-openssl --with-serial --with-snmp --with-usb --without-avahi --without-ipmi --without-freeipmi --without-powerman --without-wrap
0.000533 [D1] debug level is '2'
0.004314 [D1] Succeeded to become_user(nut): now UID=969 GID=969
0.004402 [D1] upsdrv_initups (non-SHUT)...
0.004423 [D2] Initializing an USB-connected UPS with library libusb-1.0.27 (API: 0x100010a) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.47')
<SNIP>
0.015891 [D2] Checking device 4 of 6 (3746/FFFF)
0.021137 [D2] - VendorID: 3746
0.021169 [D2] - ProductID: ffff
0.021186 [D2] - Manufacturer: EcoFlow
0.021202 [D2] - Product: EF-UPS-R3P
0.021218 [D2] - Serial Number: <SNIP>
0.021233 [D2] - Bus: 001
0.021249 [D2] - Bus Port: 002
0.021264 [D2] - Device: 021
0.021280 [D2] - Device release number: 0100
0.021296 [D2] Trying to match device
0.021315 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.021400 [D2] Device matches
0.021420 [D2] Reading configuration descriptor 1 of 1
0.021479 [D2] Claimed interface 0 successfully
0.023914 [D2] Retrieved HID descriptor (expected 9, got 9)
0.023957 [D2] HID descriptor length 403
0.026167 [D2] Report Descriptor size = 403
0.026317 Using subdriver: EXPLORE HID 0.2
0.026337 [D1] 56 HID objects found
0.028913 [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 260
0.029643 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 1
0.030393 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8, Value: 0
0.031143 [D1] Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8, Value: 0
0.031895 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 1
0.032646 [D1] Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
0.033438 [D1] Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
0.034152 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
0.034894 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
0.035643 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 81
0.035666 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 81
0.036395 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 10
0.037156 [D1] Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 20
0.037928 [D2] refresh_report_buffer: expected 3 bytes, but got 2 instead
0.037982 [D1] Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
0.038774 [D1] Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
0.039520 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.039543 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.040270 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 2043
0.040294 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 2043
0.041031 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.041058 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.041801 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
0.042559 [D1] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
0.043307 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
0.044025 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.044049 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.044771 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.044793 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.045519 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.045542 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.045561 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.045581 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.045601 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.045620 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.045639 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.045658 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.045689 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.045719 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.045785 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.045815 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.045845 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.045875 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.045905 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.045935 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.045964 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.046030 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.046053 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.046083 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.046113 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.046143 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.046173 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.046202 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Feature, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.046232 [D1] Path: UPS.PowerSummary.PresentStatus.CommunicationLost, Type: Input, ReportID: 0x07, Offset: 12, Size: 1, Value: 0
0.046261 [D1] Path: UPS.PowerSummary.PresentStatus.CommunicationLost, Type: Feature, ReportID: 0x07, Offset: 12, Size: 1, Value: 0
0.046291 [D1] Path: UPS.PowerSummary.PresentStatus.Overload, Type: Input, ReportID: 0x07, Offset: 13, Size: 1, Value: 0
0.046310 [D1] Path: UPS.PowerSummary.PresentStatus.Overload, Type: Feature, ReportID: 0x07, Offset: 13, Size: 1, Value: 0
Network UPS Tools - Generic HID driver 0.53 (2.8.2)
USB communication driver (libusb 1.0) 0.47
0.046354 [D2] Report descriptor retrieved (Reportlen = 403)
0.046371 [D2] Found HID device
0.046390 [D1] Detected a UPS: EcoFlow/EF-UPS-R3P
0.046420 [D2] find_nut_info: unknown info type: load.off.delay
0.046437 [D2] find_nut_info: unknown info type: load.on.delay
0.046453 [D2] find_nut_info: unknown info type: load.off.delay
0.046480 [D1] upsdrv_initinfo...
0.046505 [D1] upsdrv_updateinfo...
0.796924 [D2] nut_libusb_get_interrupt: Connection timed out
0.796993 [D1] Got 0 HID objects...
0.797015 [D1] Quick update...
0.797392 [D2] dstate_init: sock /var/lib/nut/usbhid-ups-ecoflow open on fd 9
0.797436 Running as foreground process, not saving a PID file
0.797464 [D1] Driver initialization completed, beginning regular infinite loop
0.797484 upsnotify: notify about state 2 with libsystemd: was requested, but not running as a service unit now, will not spam more about it
0.797511 upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it
0.797528 upsnotify: logged the systemd watchdog situation once, will not spam more about it
0.797546 [D1] upsdrv_updateinfo...
1.547910 [D2] nut_libusb_get_interrupt: Connection timed out
1.547981 [D1] Got 0 HID objects...
1.548004 [D1] Quick update...
1.797846 [D1] upsdrv_updateinfo...
2.548295 [D2] nut_libusb_get_interrupt: Connection timed out
I tried to create a sub driver for the delta 3 plus with firmware V6.31.48.29.
- the output data is quirky.
- I was not able to control the load or beeper - not sure if it is possible or if I just do not understand how. Any suggestions welcome.
- I will try to get a PR filed when I have more time. I'll document quirks in the sub driver .c file - not sure where to do it for now.
- Also need to test with
river 3 plusto see if quirks are the same.
here are sample output data from `upsc` with some quirks documented for the curious
battery.capacity: 100 //unit is percent - NUT docs say this should be Ah but percent may still be useful
battery.capacity.nominal: 100 //unit is percent
battery.charge: 31 //accurate to display, shuts of at battery.charge.low +1% (might be due to slow update rate)
battery.charge.low: 30 //matches APP's battery discharge limit setting
battery.charge.warning: 5 //fixed value AFAICT -- seems useless
battery.runtime: 32 //seems to be for total battery capacity, ignoring discharge limit setting, unit is minutes
battery.runtime.low: 120 //fixed value in minutes AFAICT -- seems useless
device.mfr: EcoFlow
device.model: EF-UPS-DELTA
device.serial: <SNIP>
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: usbhid-ups
driver.parameter.interrupt_pipe_no_events_tolerance: -1
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 1
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.state: updateinfo
driver.version: 2.8.2.1775-1775-g4e9eb9ad1
driver.version.data: EcoFlow HID 0.2
driver.version.internal: 0.60
driver.version.usb: libusb-0.1 (or compat)
ups.beeper.status: enabled
ups.mfr: EcoFlow
ups.model: EF-UPS-DELTA
ups.productid: ffff
ups.serial: <SNIP>
ups.status: OB
ups.vendorid: 3746
A new firmware was released for the River 3+ v.1.32.76.52 that add support for power management software.
`/usr/lib/nut/usbhid-ups -DD -a ecoflow -x productid=ffff -x vendorid=3746 -x explore=1` output:
Network UPS Tools - Generic HID driver 0.47 (2.8.0)
USB communication driver (libusb 1.0) 0.43
0.000000 [D1] debug level is '2'
0.000174 [D2] Initializing an USB-connected UPS with library libusb-1.0.26 (API: 0x1000109) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.43')
0.000181 [D1] upsdrv_initups (non-SHUT)...
0.005024 [D2] Checking device 3 of 7 (3746/FFFF)
0.022028 [D2] - VendorID: 3746
0.022039 [D2] - ProductID: ffff
0.022042 [D2] - Manufacturer: EcoFlow
0.022045 [D2] - Product: EF-UPS-RIVER 3 Plus
0.022048 [D2] - Serial Number: <snip>
0.022052 [D2] - Bus: 003
0.022055 [D2] - Device: unknown
0.022058 [D2] - Device release number: 0100
0.022062 [D2] Trying to match device
0.022066 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.022125 [D2] Device matches
0.022129 [D2] Reading first configuration descriptor
0.022138 [D2] successfully set kernel driver auto-detach flag
0.022236 [D2] Claimed interface 0 successfully
0.025109 [D2] Warning: two different HID descriptors retrieved (Reportlen = 403 vs. 376)
0.025125 [D2] HID descriptor length 376
0.033037 [D2] Report Descriptor size = 376
0.033081 Using subdriver: EXPLORE HID 0.2
0.033086 [D1] 51 HID objects found
0.036044 [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 286
0.039032 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 1
0.042038 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8, Value: 0
0.045028 [D1] Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8, Value: 0
0.048030 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 1
0.051036 [D1] Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
0.054033 [D1] Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
0.057099 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
0.060043 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
0.063035 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 100
0.063043 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 100
0.066033 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 10
0.069037 [D1] Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 0
0.072031 [D2] refresh_report_buffer: expected 3 bytes, but got 2 instead
0.072039 [D1] Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
0.075033 [D1] Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
0.078033 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.078041 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.081033 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 2559
0.081041 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 2559
0.084033 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.084040 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.087037 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
0.090037 [D1] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
0.093037 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
0.096040 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.096082 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.099047 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.099098 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.102041 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.102082 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.102118 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.102125 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.102131 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.102136 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.102142 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.102148 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.102154 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.102160 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.102166 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.102172 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.102177 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.102183 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.102189 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.102194 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.102200 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.102206 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.102211 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.102217 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.102222 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.102228 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.102233 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.102249 [D2] Report descriptor retrieved (Reportlen = 376)
0.102252 [D2] Found HID device
0.102258 [D1] Detected a UPS: EcoFlow/EF-UPS-RIVER 3 Plus
0.102267 [D2] find_nut_info: unknown info type: load.off.delay
0.102271 [D2] find_nut_info: unknown info type: load.on.delay
0.102275 [D2] find_nut_info: unknown info type: load.off.delay
0.102285 [D1] upsdrv_initinfo...
0.102292 [D1] upsdrv_updateinfo...
0.852428 [D2] nut_libusb_get_interrupt: Connection timed out
0.852513 [D1] Got 0 HID objects...
0.852530 [D1] Quick update...
0.852599 [D2] dstate_init: sock /run/nut/usbhid-ups-ecoflow open on fd 9
0.852696 [D1] upsdrv_updateinfo...
1.603181 [D2] nut_libusb_get_interrupt: Connection timed out
1.603267 [D1] Got 0 HID objects...
1.603285 [D1] Quick update...
Currently plugged and being used as an UPS, 100% charged.
A new firmware was released for the River 3+ v.1.32.76.52 that add support for power management software.
/usr/lib/nut/usbhid-ups -DD -a ecoflow -x productid=ffff -x vendorid=3746 -x explore=1output:
Sorry if I'm just being dense but does this mean you have nut successfully working with your river 3+? I'm also on the latest ecoflow firmware and running nut 2.8.2 but haven't had any success.
Do you mind sharing the relevant parts of your working configuration?
No I didn't create a driver myself for my unit, I'm merely providing the debug infos in case it can help someone without a River3+ to implement it.
On a side note reading the manual for the upcoming official power manager https://manuals.ecoflow.com/eu/product/power-manager?lang=en_US&source=desktop I suspect nut may already come installed on the River3+ itself.
Well, having a NUT (or compatible) data server on the UPS itself is a neat idea, just asking for itself to be implemented for ages; part of why RFC 9271 came along to codify the NUT network protocol. That way numerous computers could just be running an upsmon, with the UPS itself being responsible for FSD, waiting on clients to go away, and its own ultimate powerdown/powercycle.
But can you please point where in those docs you saw suggestions that NUT could be part of the UPS? I only saw mentions of adding packages/plugins into NAS appliances...
I don't think he's saying that NUT could be part of the UPS, but rather that NUT supports the River 3+ natively. The link he added shows how to install NUT in a Synology NAS.
Both, my OP is just providing raw USB debugging infos for nut to support the ecoflow if plugged directly by USB, as previously provided by @notnarb and @ykuksenko
@jimklimov in the manual https://manuals.ecoflow.com/eu/product/power-manager?lang=en_US&source=desktop#e8dd82a5-094f-48be-a9fe-0f94739367c9 section "Connected devices" then subsection "Remote mode".
I may be misunderstanding it, and the install would activate a nutserver on the NAS plugged to the R3+ that then could be accessed by a Win computer.
Anyway judging by the install instructions looks like we may just be able to setup upsmon with a line such as
MONITOR nutdev1@<ecoflow_or_NAS_IP>:3496 1 efsz <password_to_figure_out_from_GUI> <primary/secondary> and something would act as a nut server which would be a good start.
Worst case, if the nutserver run on the NAS, it mean that they will be making a driver themselves to run on NAS, so if they don't contribute to an official nut driver maybe we can extract some infos from theirs.
I've just picked up a River 3 Plus. My unit is running (the latest) firmware version V1.32.76.52
At the risk of adding nothing new or useful, here's the info I've been able to gather from my unit:
journal prints on attach:
Mar 06 19:38:59 box kernel: usb 3-6: new full-speed USB device number 7 using xhci_hcd
Mar 06 19:38:59 box kernel: usb 3-6: New USB device found, idVendor=3746, idProduct=ffff, bcdDevice= 1.00
Mar 06 19:38:59 box kernel: usb 3-6: New USB device strings: Mfr=1, Product=2, SerialNumber=3
Mar 06 19:38:59 box kernel: usb 3-6: Product: EF-UPS-RIVER 3 Plus
Mar 06 19:38:59 beans kernel: usb 3-6: Manufacturer: EcoFlow
Mar 06 19:38:59 box kernel: usb 3-6: SerialNumber: REDACTED
Mar 06 19:38:59 box kernel: hid-generic 0003:3746:FFFF.0003: unbalanced collection at end of report description
Mar 06 19:38:59 box kernel: hid-generic 0003:3746:FFFF.0003: probe with driver hid-generic failed with error -22
Mar 06 19:38:59 box kernel: cdc_acm 3-6:1.1: ttyACM0: USB ACM device
Mar 06 19:38:59 box mtp-probe[46033]: checking bus 3, device 7: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-6"
Mar 06 19:38:59 box mtp-probe[46033]: bus: 3, device: 7 was not an MTP device
Mar 06 19:38:59 box mtp-probe[46042]: checking bus 3, device 7: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-6"
Mar 06 19:38:59 box mtp-probe[46042]: bus: 3, device: 7 was not an MTP device
$ sudo lsusb -vv -d 3746:
Bus 003 Device 007: ID 3746:ffff EcoFlow EF-UPS-RIVER 3 Plus
Negotiated speed: Full Speed (12Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 239 Miscellaneous Device
bDeviceSubClass 2 [unknown]
bDeviceProtocol 1 Interface Association
bMaxPacketSize0 64
idVendor 0x3746 EcoFlow
idProduct 0xffff EF-UPS-RIVER 3 Plus
bcdDevice 1.00
iManufacturer 1 EcoFlow
iProduct 2 EF-UPS-RIVER 3 Plus
iSerial 3 REDACTED
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x006b
bNumInterfaces 3
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 3 Human Interface Device
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 0
HID Device Descriptor:
bLength 9
bDescriptorType 33
bcdHID 1.11
bCountryCode 0 Not supported
bNumDescriptors 1
bDescriptorType 34 (null)
wDescriptorLength 376
Report Descriptors:
** UNAVAILABLE **
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 32
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x01 EP 1 OUT
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 32
Interface Association:
bLength 8
bDescriptorType 11
bFirstInterface 1
bInterfaceCount 2
bFunctionClass 2 Communications
bFunctionSubClass 2 Abstract (modem)
bFunctionProtocol 1 AT-commands (v.25ter)
iFunction 0
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 1
bAlternateSetting 0
bNumEndpoints 1
bInterfaceClass 2 Communications
bInterfaceSubClass 2 Abstract (modem)
bInterfaceProtocol 1 AT-commands (v.25ter)
iInterface 0
CDC Header:
bcdCDC 1.10
CDC Call Management:
bmCapabilities 0x00
bDataInterface 2
CDC ACM:
bmCapabilities 0x02
line coding and serial state
CDC Union:
bMasterInterface 1
bSlaveInterface 2
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0008 1x 8 bytes
bInterval 10
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 2
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 10 CDC Data
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x03 EP 3 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x84 EP 4 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
can't get device qualifier: Resource temporarily unavailable
can't get debug descriptor: Resource temporarily unavailable
Device Status: 0x0000
(Bus Powered)
sudo tee -a /etc/nut/ups.conf << EOF
[ecoflow]
driver = usbhid-ups
port = auto
vendorid = 3746
desc = "River 3 Plus"
EOF
$ sudo /usr/lib/nut/usbhid-ups -DD -a ecoflow -x productid=ffff -x vendorid=3746 -x explore=1
Network UPS Tools 2.8.2.2324-2324-ged967d659 (development iteration after 2.8.2) - Generic HID driver 0.60
USB communication driver (libusb 1.0) 0.50
0.000000 [D1] upsdrv_makevartable...
0.000035 [D1] Using USB implementation: libusb-1.0.27 (API: 0x0100010A)
0.000183 [D1] Network UPS Tools version 2.8.2.2324-2324-ged967d659 (development iteration after 2.8.2) built with gcc (GCC) 14.2.1 20250207 and configured with flags: --prefix=/usr --datadir=/usr/share/nut --libexecdir=/usr/lib/nut --sbindir=/usr/bin --sysconfdir=/etc/nut --disable-static --with-user=nut --with-group=nut --with-altpidpath=/run/nut --with-cgipath=/usr/share/nut/cgi --with-drvpath=/usr/lib/nut --with-htmlpath=/usr/share/nut/html --with-pidpath=/run/nut --with-statepath=/var/lib/nut --with-systemdsystemunitdir=/usr/lib/systemd/system --with-udev-dir=/usr/lib/udev --with-cgi --with-dev --with-doc=man --with-libltdl --with-neon --with-openssl --with-serial --with-snmp --with-usb --without-avahi --without-ipmi --without-freeipmi --without-powerman --without-wrap
0.000206 [D1] debug level is '2'
0.001046 [D1] Succeeded to become_user(nut): now UID=949 GID=949
0.001075 [D1] Signalling UPS [ecoflow]: driver.exit (quietly, no fuss if no driver is running or responding)
0.001087 Can't open /var/lib/nut/usbhid-ups-ecoflow: No such file or directory
0.001092 [D1] Request for other driver to exit returned code -1
0.001096 [D1] Socket dialog with the other driver instance (may be absent) failed: No such file or directory
0.001107 [D1] upsdrv_initups (non-SHUT)...
0.001112 [D2] Initializing an USB-connected UPS with library libusb-1.0.27 (API: 0x0100010A) (NUT subdriver name='USB communication driver (libusb 1.0)' ver='0.50')
0.005492 [D2] Checking device 1 of 8 (1D6B/0003)
0.005515 [D1] Failed to open device (1D6B/0003), skipping: Access denied (insufficient permissions)
0.005520 [D2] Checking device 2 of 8 (04F2/B805)
0.005527 [D1] Failed to open device (04F2/B805), skipping: Access denied (insufficient permissions)
0.005530 [D2] Checking device 3 of 8 (06CB/00F9)
0.005536 [D1] Failed to open device (06CB/00F9), skipping: Access denied (insufficient permissions)
0.005540 [D2] Checking device 4 of 8 (3746/FFFF)
0.006699 [D2] - VendorID: 3746
0.006709 [D2] - ProductID: ffff
0.006711 [D2] - Manufacturer: EcoFlow
0.006712 [D2] - Product: EF-UPS-RIVER 3 Plus
0.006714 [D2] - Serial Number: REDACTED
0.006716 [D2] - Bus: 003
0.006718 [D2] - Bus Port: 006
0.006719 [D2] - Device: 008
0.006721 [D2] - Device release number: 0100
0.006723 [D2] Trying to match device
0.006727 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.006799 [D2] Device matches
0.006801 [D2] Reading configuration descriptor 1 of 1
0.006824 [D2] Claimed interface 0 successfully
0.007004 [D2] Retrieved HID descriptor (expected 9, got 9)
0.007008 [D2] Warning: two different HID descriptors retrieved (Reportlen = 403 vs. 376)
0.007010 [D2] HID descriptor length 376
0.007608 [D2] Report Descriptor size = 376
0.007671 Using subdriver: EXPLORE HID 0.2
0.007674 [D1] 51 HID objects found
0.007938 [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 286
0.008149 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 1
0.008335 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8, Value: 0
0.008508 [D1] Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8, Value: 0
0.008920 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 1
0.009175 [D1] Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
0.009327 [D1] Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
0.009456 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
0.009621 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
0.009856 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 80
0.009861 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 80
0.010015 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 10
0.010257 [D1] Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 20
0.010437 [D2] refresh_report_buffer: expected 3 bytes, but got 2 instead
0.010442 [D1] Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
0.010616 [D1] Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
0.010849 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.010854 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.011030 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 1897
0.011035 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 1897
0.011229 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.011235 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.011463 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
0.011689 [D1] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
0.011883 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
0.012095 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.012101 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.012263 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.012267 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.012443 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.012448 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.012450 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.012453 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.012457 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.012460 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.012463 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.012465 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.012469 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.012473 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.012477 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.012481 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.012485 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.012489 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.012493 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.012496 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.012500 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.012503 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.012506 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.012509 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.012513 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.012518 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.012521 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.012534 [D2] Report descriptor retrieved (Reportlen = 376)
0.012536 [D2] Found HID device
0.012538 [D1] Detected a UPS: EcoFlow/EF-UPS-RIVER 3 Plus
0.012546 [D2] find_nut_info: unknown info type: load.off.delay
0.012549 [D2] find_nut_info: unknown info type: load.on.delay
0.012552 [D2] find_nut_info: unknown info type: load.off.delay
0.012563 [D1] upsdrv_initinfo...
0.012572 [D1] upsdrv_updateinfo...
0.762900 [D2] nut_libusb_get_interrupt: Connection timed out
0.762918 [D1] Got 0 HID objects (1 times in a row, tolerance is -1)...
0.762924 [D1] Quick update...
0.763122 Listening on socket /var/lib/nut/usbhid-ups-ecoflow
0.763127 [D2] dstate_init: sock /var/lib/nut/usbhid-ups-ecoflow open on fd 9
0.763139 Running as foreground process, not saving a PID file
0.763147 [D1] Driver initialization completed, beginning regular infinite loop
0.763152 upsnotify: notify about state NOTIFY_STATE_READY_WITH_PID with libsystemd: was requested, but not running as a service unit now, will not spam more about it
0.763157 [D1] On systems without service units, consider `export NUT_QUIET_INIT_UPSNOTIFY=true`
0.763160 upsnotify: failed to notify about state NOTIFY_STATE_READY_WITH_PID: no notification tech defined, will not spam more about it
0.763165 upsnotify: logged the systemd watchdog situation once, will not spam more about it
0.763168 [D1] upsdrv_updateinfo...
1.513808 [D2] nut_libusb_get_interrupt: Connection timed out
1.513839 [D1] Got 0 HID objects (2 times in a row, tolerance is -1)...
1.513845 [D1] Quick update...
2.764480 [D1] upsdrv_updateinfo...
3.515118 [D2] nut_libusb_get_interrupt: Connection timed out
3.515154 [D1] Got 0 HID objects (3 times in a row, tolerance is -1)...
I think I've got this working. My PR is here: https://github.com/networkupstools/nut/pull/2837
Here are some screenshots of nut-monitor for my River 3 Plus:
The Windows and NAS applications have now been released, if this helps intergrate the ecoflow river. Hopefully the Delta 3 Plus as well. https://www.ecoflow.com/us/support/download/index
They do not act as a USB HID UPS on Windows. There's no driver at all before their software that pushes through some kind of proprietary driver. I've tested both plus units. What a disappointment, all they had to do was use a USB HID UPS driver. I'm returning them.
@BitPopCoin : did you have a chance to check them with a recent NUT for Windows build? If the code proposed in this tread and related PRs was good for other platforms, NUT CI artifacts of master branch builds like https://ci.appveyor.com/project/nut-travis/nut/builds/51793727/artifacts might just work (possibly after fiddling with Zadig to attach libusb to needed VID:PID), see https://github.com/networkupstools/nut/wiki/NUT-for-Windows
Guys, excuse my ignorance. I just received a River 3 plus, and show on their web page that it would be supposingly support connection with Synology NAS 923+. I followed all their steps ,installed extra software but the NAS itself is not able to identify it as connected UPS device. Is the above proposed PRs going to be handy for the Synology part? Any guide on how I could install them?
@peros550 : What is the "extra software" - does it seem to involve NUT? If yes - which version?
The "above proposed PRs" were merged, so are now part of NUT master branch on GitHub and will be in 2.8.3 release shortly (going through release candidate cycles now).
How to get that built into Synology specifically - sorry, got no clue on this one...
@peros550 : What is the "extra software" - does it seem to involve NUT? If yes - which version?
The "above proposed PRs" were merged, so are now part of NUT master branch on GitHub and will be in 2.8.3 release shortly (going through release candidate cycles now).
How to get that built into Synology specifically - sorry, got no clue on this one...
I followed the instructions here. It looks, they instruct you to have some sort of NUT server running on your NAS, which runs on 3496 port. Then , their Desktop app can connect to it and pull data.
I was succesful in connecting a Home Assistant NUT integration, after I got the port, username and password from the Desktop app. However, the Synology NAS UI couldn't connect to it, probably because it only accepts an IP address for an external NUT and it didn't accept "Syno 923 LAN IP":3496. I dont know which version runs in Ecoflow's nut server version, sorry.
Hi! Any chance to get the current load?
Hi! Any chance to get the current load?
I was seeing a live power reading appear in the ups.power.nominal variable while I was putting things together (see my above comment: https://github.com/networkupstools/nut/issues/2735#issuecomment-2705700983). I can't honestly remember if this number is power drawn from the wall by the UPS unit or power delivered by the UPS unit to the load.
@greyltc It's actualyt the battery capacity in Wh:
I actually have other problem: upsrw doesn't save value even though it confirmed "OK".
Also, the driver.flag.allow_killpower flag value was reset after restart, is it the desired behaviour? Sorry, it's my first experience with nut.
In general even though I set driver.flag.allow_killpower=1 when I do upsdrvctl shutdown the ecoflow doesnt shut down. It would be nice to have a feature so it can be actually shutdown and then when the power outage is gone to power on the AC.
"OK" with upsrw and upscmd means only that the server connection worked and command was not instantly rejected, you may want -w to wait for its result.
Writes with these commands may be or not be saved by the device (depends on its firmware and whether there's R/W flash on board or only RAM), and are not saved by NUT (recommended ownership/permission on config files should forbid it too). You can explicitly configure options in ups.conf, as well as default or override values for device readings.
A nominal power/current/charge/voltage/... is just that - max safe rating burned into the device/firmware (if any).
It would be nice to have a feature so it can be actually shutdown and then when the power outage is gone to power on the AC.
Depends on device ability and driver support (if someone found and coded a way to call the device commands for this).
@greyltc It's actualyt the battery capacity in Wh:
oh!
Funny coincidence that is pretty much what my typical load is.
Capacity (energy) being reported into a variable with "power" in the name is annoying nonsense...
Anyhow, I think we'll need a new firmware from ecoflow that exposes load monitoring. Is there anything newer than V1.32.76.52 yet?
For named value definitions, check dosc/nut-names.adoc in sources.
"Power" is the "apparent" one, in VA. There may be "realpower" in Watts (power modulo crest factor). Capacity is in Ah, etc.
That said, there may be errors in mapping from device reports to chosen NUT-standard names, and generally speaking, there have been errors in firmwares too. Code is code.
Anyhow, I think we'll need a new firmware from ecoflow that exposes load monitoring. Is there anything newer than V1.32.76.52 yet?
I have 1.33.81.53 installed since end of March, looks pretty much the same in explore but may have other changes under the hood .
`/usr/lib/nut/usbhid-ups -u root -DD -a ecoflow -x productid=ffff -x vendorid=3746 -x explore=1` output:
0.031402 [D2] Checking device 3 of 7 (3746/FFFF)
0.048601 [D2] - VendorID: 3746
0.048625 [D2] - ProductID: ffff
0.048633 [D2] - Manufacturer: EcoFlow
0.048642 [D2] - Product: EF-UPS-RIVER 3 Plus
0.048650 [D2] - Serial Number: <snip>
0.048658 [D2] - Bus: 003
0.048661 [D2] - Device: unknown
0.048664 [D2] - Device release number: 0100
0.048666 [D2] Trying to match device
0.048668 [D2] match_function_subdriver (non-SHUT mode): matching a device...
0.048742 [D2] Device matches
0.048745 [D2] Reading first configuration descriptor
0.048767 [D2] Claimed interface 0 successfully
0.051604 [D2] Warning: two different HID descriptors retrieved (Reportlen = 403 vs. 376)
0.051609 [D2] HID descriptor length 376
0.059601 [D2] Report Descriptor size = 376
0.059627 Using subdriver: EXPLORE HID 0.2
0.059630 [D1] 51 HID objects found
0.062606 [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 286
0.065602 [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 1
0.068601 [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8, Value: 0
0.071598 [D1] Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8, Value: 0
0.074602 [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 1
0.077606 [D1] Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
0.080602 [D1] Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
0.083605 [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
0.086603 [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
0.089604 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 100
0.089609 [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 100
0.092618 [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 10
0.095605 [D1] Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 0
0.098607 [D2] refresh_report_buffer: expected 3 bytes, but got 2 instead
0.098613 [D1] Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
0.101604 [D1] Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
0.104604 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.104609 [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
0.107604 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 2229
0.107609 [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 2229
0.110603 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.110608 [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 600
0.113599 [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
0.116604 [D1] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
0.119606 [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
0.122608 [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.122614 [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
0.125611 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.125616 [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
0.128607 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.128612 [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
0.128616 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.128620 [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
0.128623 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.128627 [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
0.128631 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.128634 [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
0.128639 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.128643 [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
0.128647 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.128651 [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
0.128655 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.128658 [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
0.128662 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.128666 [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
0.128670 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.128674 [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
0.128678 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.128682 [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
0.128685 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.128689 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
0.128693 [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
0.128704 [D2] Report descriptor retrieved (Reportlen = 376)
0.128706 [D2] Found HID device
0.128710 [D1] Detected a UPS: EcoFlow/EF-UPS-RIVER 3 Plus
0.128716 [D2] find_nut_info: unknown info type: load.off.delay
0.128719 [D2] find_nut_info: unknown info type: load.on.delay
0.128721 [D2] find_nut_info: unknown info type: load.off.delay
0.128728 [D1] upsdrv_initinfo...
0.128732 [D1] upsdrv_updateinfo...
0.878862 [D2] nut_libusb_get_interrupt: Connection timed out
0.878882 [D1] Got 0 HID objects...
0.878886 [D1] Quick update...
0.878937 [D2] dstate_init: sock /run/nut/usbhid-ups-ecoflow open on fd 9
0.878970 [D1] Group and/or user account for this driver was customized ('root:nut') compared to built-in defaults. Fixing socket '/run/nut/usbhid-ups-ecoflow' ownership/access.
0.878982 [D1] Group access for this driver successfully fixed
0.878992 [D1] upsdrv_updateinfo...
1.629751 [D2] nut_libusb_get_interrupt: Connection timed out
1.629769 [D1] Got 0 HID objects...
0.062606 [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 286
God only knows why their firmware engineer(s) chose to write the design capacity into a variable called ConfigActivePower and then a value of 100 into the variable called DesignCapacity. Is there a chance there's anything wrong with the HID scanner?
I have 1.33.81.53
After looking over that, it looks like there's not much (if anything) new and useful is exposed, unsure if I'll bother with the upgrade from V1.32.76.52...
Is there a chance there's anything wrong with the HID scanner?
Generally, AFAIK no. There are issues with certain vendors' LogMin/LogMax encodings and/or some other bogus data - mitigation of these started around #1024 and later was streamlined for usbhid-ups with standardized fix-up methods; see cps-hid.c and apc-hid.c (IIRC) for implemented fixups.
...
0.048745 [D2] Reading first configuration descriptor
0.048767 [D2] Claimed interface 0 successfully
0.051604 [D2] Warning: two different HID descriptors retrieved (Reportlen = 403 vs. 376)
0.051609 [D2] HID descriptor length 376
0.059601 [D2] Report Descriptor size = 376
0.059627 Using subdriver: EXPLORE HID 0.2
0.059630 [D1] 51 HID objects found
...
Is two different HID descriptors retrieved (Reportlen = 403 vs. 376) of any concern?