Todd Wolven
Theme

EcoFlow DELTA 3 Plus as a Windows UPS — without EcoFlow's software

By Todd Wolven · Updated 2026-10-23 · Source on GitHub

Battery percentage in the taskbar, on-battery / low-battery notifications, and automatic shutdown for an EcoFlow DELTA 3 Plus (and RIVER 3 Plus / DELTA 3 Max Plus / Ultra Plus — same USB ID 3746:FFFF) on Windows 10/11, using Network UPS Tools and a ~15 KB tray app. No EcoFlow account, no 156 MB "Power Manager", no cloud.

tray icon

Why this exists

The DELTA 3 Plus has a USB-C port labelled for UPS/HID use. Plugged into Windows it should enumerate as a standard HID Power Device and show up under Batteries as "HID UPS Battery" with a battery icon — and on the firmware EcoFlow shipped in 2024 it did (Reddit report, hardware ID HID\VID_3746&PID_FFFF, a single-interface device).

Current firmware breaks that. The device is now a composite device — HID interface plus a CDC serial port (COM x) that EcoFlow's own Power Manager app talks to — and the HID interface fails on Windows with

USB Input Device   USB\VID_3746&PID_FFFF&MI_00   Code 10   NTSTATUS 0xC00000B9 (STATUS_COULD_NOT_INTERPRET)

0xC00000B9 is hidclass.sys refusing the HID report descriptor. The config descriptor advertises a 376-byte report descriptor, but the device returns nothing for the interface-level GET_DESCRIPTOR(HID) request (NUT's driver logs HID descriptor too short (expected 9, got 0) and falls back to the 376). Linux's HID parser and NUT tolerate that; Windows' does not. There is no user-mode fix for this — only EcoFlow (firmware) or a signed kernel filter driver could restore the native battery icon. docs/Dump-UsbDescriptors.ps1 reproduces the descriptor dump so you can verify your own unit.

So instead: put Microsoft's inbox WinUSB driver on that one interface, let NUT's usbhid-ups (which has had an EcoFlow HID subdriver since 2.8.5) read it, and draw our own icon.

What you get

Install

Requirements: Windows 10/11 x64, 7-Zip (winget install 7zip.7zip), a USB data cable from the EcoFlow's USB-C HID port to the PC.

# elevated PowerShell
git clone https://github.com/twolven/ecoflow-delta3-windows-ups
cd ecoflow-delta3-windows-ups
.\Install.ps1                      # -LowBatteryPercent 20  -InstallDir D:\NUT  -NoTray  -SkipZadig

The installer downloads NUT 2.8.5 for Windows, writes the config, opens Zadig for the one step that needs a click (select EF-UPS-DELTA 3 Plus (Interface 0) → Replace Driver → WinUSB), installs the Network UPS Tools service, verifies it reads the battery, builds NutTray.exe from source with the C# compiler that ships in Windows, registers it as a logon task, and flips the taskbar "always show" switch.

Interface 0 only. Interfaces 1/2 are the serial port; leave them on usbser if you ever want Power Manager.

USB link died? Use Bluetooth instead

On some units the USB HID link drops out after a while and stays gone until a power cycle. ble/ is a read-only Bluetooth LE bridge that feeds the same NUT service, so the tray, upsmon and upsc keep working without the USB cable. See ble/README.md.

Uninstall

.\Uninstall.ps1                    # removes service + tray; keeps C:\NUT
.\Uninstall.ps1 -RestoreHidDriver  # also drops the WinUSB binding so Windows retries its own HID stack
.\Uninstall.ps1 -Purge             # and deletes C:\NUT

Use -RestoreHidDriver after an EcoFlow firmware update to check whether the native "HID UPS Battery" is back.

Layout

Install.ps1                 one-shot installer (idempotent)
Uninstall.ps1
ble/                        optional Bluetooth bridge (no USB needed)
tray/NutTray.cs             tray app — single C# file, built by the installer with csc.exe
docs/Dump-UsbDescriptors.ps1  read a USB device's config/HID descriptors via the hub IOCTL (no admin, no driver)

Installed tree: C:\NUT\{bin,etc,tray} — etc\ups.conf (driver, LB override), etc\upsmon.conf (shutdown command), tray\NutTray.ini (poll/notify).

Notes

License

MIT.

This page is generated automatically from the GitHub README, which is the single source of truth.  ← Back to toddwolven.com