Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

EcoFlow River 3 Plus Support #2735

Open
notnarb opened this issue Dec 23, 2024 · 4 comments
Open

EcoFlow River 3 Plus Support #2735

notnarb opened this issue Dec 23, 2024 · 4 comments
Labels
FreeBSD issues related to FreeBSD and its derivatives (including pfSense) impacts-release-2.7.4 Issues reported against NUT release 2.7.4 (maybe vanilla or with minor packaging tweaks) impacts-release-2.8.2 Issues reported against NUT release 2.8.2 (maybe vanilla or with minor packaging tweaks) Incorrect or missing readings On some devices driver-reported values are systemically off (e.g. x10, x0.1, const+Value, etc.) USB
Milestone

Comments

@notnarb
Copy link

notnarb commented Dec 23, 2024

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...
@ykuksenko
Copy link

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.

@jimklimov
Copy link
Member

jimklimov commented Dec 26, 2024

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 ;)

@ykuksenko
Copy link

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

@ykuksenko
Copy link

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 plus to 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

@jimklimov jimklimov added FreeBSD issues related to FreeBSD and its derivatives (including pfSense) USB impacts-release-2.7.4 Issues reported against NUT release 2.7.4 (maybe vanilla or with minor packaging tweaks) Incorrect or missing readings On some devices driver-reported values are systemically off (e.g. x10, x0.1, const+Value, etc.) impacts-release-2.8.2 Issues reported against NUT release 2.8.2 (maybe vanilla or with minor packaging tweaks) labels Jan 2, 2025
@jimklimov jimklimov added this to the 2.8.4 milestone Jan 2, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
FreeBSD issues related to FreeBSD and its derivatives (including pfSense) impacts-release-2.7.4 Issues reported against NUT release 2.7.4 (maybe vanilla or with minor packaging tweaks) impacts-release-2.8.2 Issues reported against NUT release 2.8.2 (maybe vanilla or with minor packaging tweaks) Incorrect or missing readings On some devices driver-reported values are systemically off (e.g. x10, x0.1, const+Value, etc.) USB
Projects
None yet
Development

No branches or pull requests

3 participants