Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login
    Introducing Netgate Nexus: Multi-Instance Management at Your Fingertips.

    pfSense 2.8.1, NUT 2.8.2_5 package, EcoFlow UPS

    Scheduled Pinned Locked Moved UPS Tools
    4 Posts 2 Posters 538 Views 2 Watching
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • RahzadanR Offline
      Rahzadan
      last edited by Rahzadan

      I have a new EcoFLow Delta3 Plus UPS which has USB HID function. Unfortunately pfSense and the NUT package are unable to see it. I was previously using a CyberPower UPS, which worked without issue.

      According to the NUT Compatibility List, The EcoFlow Delta 3 Plus is supported using the usbhid-ups driver. FreeBSD appears to be able to see the USB HID device, but isn't doing anything with it.

      I tried running the driver using user=root to see if it was a USB quirk issue, but even then it doesn't seem to be detected.

      Running usbconfig -v results in the following output regarding the UPS:

      ugen2.2: <EcoFlow EF-UPS-DELTA 3 Plus> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps                                                                                                                                                                                                                                            ) pwr=ON (100mA)
      ugen2.2.0: uhid0: <EcoFlow EF-UPS-DELTA 3 Plus, class 239/2, rev 2.00/1.00, addr                                                                                                                                                                                                                                              2>
      ugen2.2.1: umodem0: <EcoFlow EF-UPS-DELTA 3 Plus, class 239/2, rev 2.00/1.00, ad                                                                                                                                                                                                                                             dr 2>
      
        bLength = 0x0012
        bDescriptorType = 0x0001
        bcdUSB = 0x0200
        bDeviceClass = 0x00ef  <Miscellaneous device>
        bDeviceSubClass = 0x0002
        bDeviceProtocol = 0x0001
        bMaxPacketSize0 = 0x0040
        idVendor = 0x3746
        idProduct = 0xffff
        bcdDevice = 0x0100
        iManufacturer = 0x0001  <EcoFlow>
        iProduct = 0x0002  <EF-UPS-DELTA 3 Plus>
        iSerialNumber = 0x0003  <*redacted*>
        bNumConfigurations = 0x0001
      
      

      Running usbconfig -d ugen2.2 show_ifdrv shows the following:

      ugen2.2: <EcoFlow EF-UPS-DELTA 3 Plus> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
      ugen2.2.0: uhid0: <EcoFlow EF-UPS-DELTA 3 Plus, class 239/2, rev 2.00/1.00, addr 2>
      ugen2.2.1: umodem0: <EcoFlow EF-UPS-DELTA 3 Plus, class 239/2, rev 2.00/1.00, addr 2>
      

      If I attempt to detatch the kernel driver (uhid0) by running usbconfig -d ugen2.2 detach_kernel_driver, it results in this:

      ugen2.2: <EcoFlow EF-UPS-DELTA 3 Plus> at usbus2, cfg=0 md=HOST spd=FULL (12Mbps) pwr=ON (100mA)
      ugen2.2.1: umodem0: <EcoFlow EF-UPS-DELTA 3 Plus, class 239/2, rev 2.00/1.00, addr 2>
      

      The ugen2.2.0: uhid0 entry disappears, but the ugen2.2.1 umodem0 entry remains.

      Running nut-scanner I get:

      Scanning USB bus.
      No start IP, skipping SNMP
      Scanning XML/HTTP bus.
      No start IP, skipping NUT bus (old connect method)
      Scanning NUT simulation devices.
      Scanning NUT bus (avahi method).
      Error sending Eaton <SCAN_REQUEST/> to <broadcast>, #1/3
      Failed to create Avahi client: Daemon not running
      Error sending Eaton <SCAN_REQUEST/> to <broadcast>, #2/3
      Error sending Eaton <SCAN_REQUEST/> to <broadcast>, #3/3
      

      NUT does not appear to be able to "see" the UPS.

      According to the USB quirks and NUT thread, there should only be 1 "ugenX.X" line when detatching the kernel driver. Could this be the issue? Anyone have any ideas?

      Running the usbhid-ups driver in debug mode shows the following for the UPS:

       0.003941     [D2] Checking device 7 of 8 (3746/FFFF)
         0.027853     [D2] - VendorID: 3746
         0.027884     [D2] - ProductID: ffff
         0.027892     [D2] - Manufacturer: EcoFlow
         0.027898     [D2] - Product: EF-UPS-DELTA 3 Plus
         0.027904     [D2] - Serial Number: *redacted*
         0.027911     [D2] - Bus: 002
         0.027916     [D2] - Bus Port: 002
         0.027923     [D2] - Device: 002
         0.027929     [D2] - Device release number: 0100
         0.027935     [D2] Trying to match device
         0.027946     [D2] match_function_subdriver (non-SHUT mode): matching a device...
         0.027962     [D2] match_function_subdriver (non-SHUT mode): failed to match a subdriver to vendor and/or product ID
         0.027969     [D2] Device does not match - skipping
      
         0.031122     [D2] libusb1: No appropriate HID device found
         0.031134     libusb1: Could not open any HID devices: insufficient permissions on everything
         0.031142     No matching HID UPS found
         0.031180     [D5] send_to_all: SETINFO driver.state "cleanup.exit"
         0.031191     upsnotify: failed to notify about state 4: no notification tech defined, will not spam more about it
      
      

      Thanks in advance!

      dennypageD 1 Reply Last reply Reply Quote 0
      • dennypageD Offline
        dennypage @Rahzadan
        last edited by

        @Rahzadan said in pfSense 2.8.1, NUT 2.8.2_5 package, EcoFlow UPS:

        According to the NUT Compatibility List, The EcoFlow Delta 3 Plus is supported using the usbhid-ups driver.

        EcoFlow is new, and I don't believe that support is present in 2.8.1. I believe support was introduced Circa 2.8.3.

        RahzadanR 1 Reply Last reply Reply Quote 0
        • RahzadanR Offline
          Rahzadan @dennypage
          last edited by

          @dennypage

          I think you're right.

          Running the following:

          /usr/local/libexec/nut/usbhid-ups -DD -a ups -x productid=ffff -x vendorid=3746 -x explore=1
          

          Results in:

           0.002783     [D2] Checking device 7 of 8 (3746/FFFF)
             0.026637     [D2] - VendorID: 3746
             0.026670     [D2] - ProductID: ffff
             0.026678     [D2] - Manufacturer: EcoFlow
             0.026685     [D2] - Product: EF-UPS-DELTA 3 Plus
             0.026691     [D2] - Serial Number: *redacted*
             0.026697     [D2] - Bus: 002
             0.026703     [D2] - Bus Port: 002
             0.026709     [D2] - Device: 002
             0.026715     [D2] - Device release number: 0100
             0.026721     [D2] Trying to match device
             0.026732     [D2] match_function_subdriver (non-SHUT mode): matching a device...
             0.026759     [D2] Device matches
             0.026767     [D2] Reading configuration descriptor 1 of 1
             0.026946     [D2] Claimed interface 0 successfully
             0.032627     [D2] HID descriptor too short (expected 9, got 0)
             0.032669     [D2] HID descriptor length 376
             0.038631     [D2] Report Descriptor size = 376
             0.038823     Using subdriver: EXPLORE HID 0.2
             0.038835     [D1] 52 HID objects found
             0.044654     [D1] Path: UPS.Flow.[4].ConfigActivePower, Type: Feature, ReportID: 0x01, Offset: 0, Size: 16, Value: 1024
             0.050649     [D1] Path: UPS.PowerSummary.Rechargeable, Type: Feature, ReportID: 0x06, Offset: 0, Size: 8, Value: 0
             0.116853     nut_libusb_get_report: No device
             0.116912     [D1] Can't retrieve Report 1f: Interrupted system call
             0.116952     [D1] Path: UPS.PowerSummary.iDeviceChemistry, Type: Feature, ReportID: 0x1f, Offset: 0, Size: 8
             0.185846     nut_libusb_get_report: No device
             0.185893     [D1] Can't retrieve Report 20: Interrupted system call
             0.185908     [D1] Path: UPS.PowerSummary.iOEMInformation, Type: Feature, ReportID: 0x20, Offset: 0, Size: 8
             0.191697     [D1] Path: UPS.PowerSummary.CapacityMode, Type: Feature, ReportID: 0x16, Offset: 0, Size: 8, Value: 2
             0.197621     [D1] Path: UPS.PowerSummary.CapacityGranularity1, Type: Feature, ReportID: 0x10, Offset: 0, Size: 8, Value: 1
             0.203642     [D1] Path: UPS.PowerSummary.CapacityGranularity2, Type: Feature, ReportID: 0x18, Offset: 0, Size: 8, Value: 1
             0.209626     [D1] Path: UPS.PowerSummary.FullChargeCapacity, Type: Feature, ReportID: 0x0e, Offset: 0, Size: 8, Value: 100
             0.215515     [D1] Path: UPS.PowerSummary.DesignCapacity, Type: Feature, ReportID: 0x17, Offset: 0, Size: 8, Value: 100
             0.221631     [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Input, ReportID: 0x0c, Offset: 0, Size: 8, Value: 79
             0.221667     [D1] Path: UPS.PowerSummary.RemainingCapacity, Type: Feature, ReportID: 0x0c, Offset: 0, Size: 8, Value: 79
             0.227639     [D1] Path: UPS.PowerSummary.WarningCapacityLimit, Type: Feature, ReportID: 0x0f, Offset: 0, Size: 8, Value: 5
             0.233617     [D1] Path: UPS.PowerSummary.RemainingCapacityLimit, Type: Feature, ReportID: 0x11, Offset: 0, Size: 8, Value: 15
             0.239476     [D2] refresh_report_buffer: expected 3 bytes, but got 2 instead
             0.239522     [D1] Path: UPS.PowerSummary.ManufacturerDate, Type: Feature, ReportID: 0x09, Offset: 0, Size: 16, Value: 0
             0.245526     [D1] Path: UPS.PowerSummary.AverageTimeToFull, Type: Feature, ReportID: 0x1a, Offset: 0, Size: 16, Value: 7200
             0.251527     [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Input, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
             0.251563     [D1] Path: UPS.PowerSummary.AverageTimeToEmpty, Type: Feature, ReportID: 0x1c, Offset: 0, Size: 16, Value: 7200
             0.257475     [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Input, ReportID: 0x0d, Offset: 0, Size: 16, Value: 3160
             0.257513     [D1] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x0d, Offset: 0, Size: 16, Value: 3160
             0.263624     [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Input, ReportID: 0x08, Offset: 0, Size: 16, Value: 120
             0.263660     [D1] Path: UPS.PowerSummary.RemainingTimeLimit, Type: Feature, ReportID: 0x08, Offset: 0, Size: 16, Value: 120
             0.269630     [D1] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x12, Offset: 0, Size: 16, Value: -1
             0.275644     [D1] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0x13, Offset: 0, Size: 16, Value: -1
             0.281546     [D1] Path: UPS.PowerSummary.ConfigVoltage, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 16, Value: 13.8
             0.287626     [D1] Path: UPS.PowerSummary.Voltage, Type: Input, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
             0.287663     [D1] Path: UPS.PowerSummary.Voltage, Type: Feature, ReportID: 0x0b, Offset: 0, Size: 16, Value: 13
             0.293638     [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Input, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
             0.293674     [D1] Path: UPS.PowerSummary.AudibleAlarmControl, Type: Feature, ReportID: 0x14, Offset: 0, Size: 8, Value: 2
             0.299575     [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Input, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
             0.299611     [D1] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x07, Offset: 0, Size: 1, Value: 0
             0.299624     [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Input, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
             0.299636     [D1] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x07, Offset: 1, Size: 1, Value: 0
             0.299650     [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Input, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
             0.299663     [D1] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x07, Offset: 2, Size: 1, Value: 1
             0.299675     [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Input, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
             0.299686     [D1] Path: UPS.PowerSummary.PresentStatus.BatteryPresent, Type: Feature, ReportID: 0x07, Offset: 3, Size: 1, Value: 1
             0.299697     [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Input, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
             0.299707     [D1] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x07, Offset: 4, Size: 1, Value: 0
             0.299718     [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Input, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
             0.299728     [D1] Path: UPS.PowerSummary.PresentStatus.RemainingTimeLimitExpired, Type: Feature, ReportID: 0x07, Offset: 5, Size: 1, Value: 0
             0.299739     [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Input, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
             0.299750     [D1] Path: UPS.PowerSummary.PresentStatus.NeedReplacement, Type: Feature, ReportID: 0x07, Offset: 6, Size: 1, Value: 0
             0.299761     [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Input, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
             0.299771     [D1] Path: UPS.PowerSummary.PresentStatus.VoltageNotRegulated, Type: Feature, ReportID: 0x07, Offset: 7, Size: 1, Value: 0
             0.299782     [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Input, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
             0.299792     [D1] Path: UPS.PowerSummary.PresentStatus.FullyCharged, Type: Feature, ReportID: 0x07, Offset: 8, Size: 1, Value: 0
             0.299802     [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Input, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
             0.299824     [D1] Path: UPS.PowerSummary.PresentStatus.FullyDischarged, Type: Feature, ReportID: 0x07, Offset: 9, Size: 1, Value: 0
             0.299835     [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Input, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
             0.299847     [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownRequested, Type: Feature, ReportID: 0x07, Offset: 10, Size: 1, Value: 0
             0.299859     [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Input, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
             0.299869     [D1] Path: UPS.PowerSummary.PresentStatus.ShutdownImminent, Type: Feature, ReportID: 0x07, Offset: 11, Size: 1, Value: 0
             0.299918     [D2] Report descriptor retrieved (Reportlen = 376)
             0.299925     [D2] Found HID device
             0.299950     [D1] Detected a UPS: EcoFlow/EF-UPS-DELTA 3 Plus
             0.299978     [D2] find_nut_info: unknown info type: load.off.delay
             0.299985     [D2] find_nut_info: unknown info type: load.on.delay
             0.299991     [D2] find_nut_info: unknown info type: load.off.delay
             0.300018     [D1] upsdrv_initinfo...
             0.300046     [D1] upsdrv_updateinfo...
             1.038253     [D2] nut_libusb_get_interrupt: Connection timed out
             1.038286     [D1] Got 0 HID objects...
             1.038300     [D1] Quick update...
             1.038424     [D2] dstate_init: sock /var/db/nut/usbhid-ups-ecoflow open on fd 8
             1.038513     [D1] Group and/or user account for this driver was customized ('root:nut') compared to built-in defaults. Fixing socket '/var/db/nut/usbhid-ups-ecoflow' ownership/access.
             1.038543     [D1] WARNING: opening socket file for stat/chown failed (45), which is rather typical for Unix socket handling: Operation not supported
             1.038572     [D1] Group access for this driver successfully fixed (using file name based methods)
             1.038614     Running as foreground process, not saving a PID file
             1.038643     [D1] Driver initialization completed, beginning regular infinite loop
             1.038654     upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it
             1.038665     [D1] upsdrv_updateinfo...
             1.784171     [D2] nut_libusb_get_interrupt: Connection timed out
             1.784205     [D1] Got 0 HID objects...
             1.784219     [D1] Quick update...
             3.050158     [D1] upsdrv_updateinfo...
             3.790268     [D2] nut_libusb_get_interrupt: Connection timed out
             3.790304     [D1] Got 0 HID objects...
             3.790318     [D1] Quick update...
             5.051418     [D1] upsdrv_updateinfo...
             5.788164     [D2] nut_libusb_get_interrupt: Connection timed out
             5.788197     [D1] Got 0 HID objects...
             5.788212     [D1] Quick update...
             7.064934     [D1] upsdrv_updateinfo...
             7.806325     [D2] nut_libusb_get_interrupt: Connection timed out
             7.806350     [D1] Got 0 HID objects...
             7.806358     [D1] Quick update...
             9.072269     [D1] upsdrv_updateinfo...
             9.819295     [D2] nut_libusb_get_interrupt: Connection timed out
             9.819332     [D1] Got 0 HID objects...
             9.819347     [D1] Quick update...
            11.082610     [D1] upsdrv_updateinfo...
            11.833940     [D2] nut_libusb_get_interrupt: Connection timed out
            11.833972     [D1] Got 0 HID objects...
            11.833986     [D1] Quick update...
            13.095988     [D1] upsdrv_updateinfo...
          

          I guess the fact that it does something with explore=1 means that the EcoFlow isn't implemented in 2.8.2?

          Is there a way to upgrade NUT to a newer version in pfSense?

          dennypageD 1 Reply Last reply Reply Quote 0
          • dennypageD Offline
            dennypage @Rahzadan
            last edited by

            @Rahzadan said in pfSense 2.8.1, NUT 2.8.2_5 package, EcoFlow UPS:

            Is there a way to upgrade NUT to a newer version in pfSense?

            I expect it will be updated in the next pfSense release cycle.

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Copyright 2026 Rubicon Communications LLC (Netgate). All rights reserved.