August 22, 2025Aug 22 The little UPS is really cute and works great with UGOS.In Unraid I have activated it as APC and USB. But unfortunately it is not recognized. Has anyone managed to fix this?
September 21, 2025Sep 21 Author I found the solution (NUT-Plugin):[ugreenups]driver = usbhid-upsport = autovendorid = 2b89productid = ffffsubdriver = Arduinodesc = "Ugreen US3000 via USB" Edited September 21, 2025Sep 21 by Berzdorfer
October 8, 2025Oct 8 Thank you for posting this and saving me a headache! For future folks there is just one setting to change in the UI: Enable Manual Configuration -> For UPS Driver Then copy/paste Berzdorfers configuration to the config file at the bottom Then start the NUT service
November 5, 2025Nov 5 These posts are super helpful; many thanks to those who shared their insight on this conifguration.One clarifying question: has anyone figured out whether it is possible to have the UGreen NAS automatically reboot once mains power has been restored to the UGreen UPS?Graceful shutdown works properly with the configuration posted above.Many thanks.
December 4, 2025Dec 4 Hi, I assume you are talking about UGREEN US3000 right?I have an ASRock N100M with a picopsu (12V power brick).Can anyone tell me if the US3000 will also work with custom builds?
December 7, 2025Dec 7 I am actually struggling here to get it working on the DXP4800 Plus ugreen, with the ugreen US3000 UPS.However no details come back from the UPS?? Edited December 7, 2025Dec 7 by danielp1221
December 31, 2025Dec 31 You may want to try setting the line for "Enable Manual Configuration" from "Yes" to "for UPS Driver". I haven't been able to get mine to work either way, while some have.
January 5Jan 5 On 12/7/2025 at 5:56 PM, danielp1221 said:I am actually struggling here to get it working on the DXP4800 Plus ugreen, with the ugreen US3000 UPS.However no details come back from the UPS??I'm a noob Unraider with the same setup and this was puzzling me over the past few days. I've finally got it working on my end by using the config instructions from this page: https://forums.unraid.net/topic/60217-plugin-nut-v2-network-ups-tools/page/78/#comment-1584921
January 10Jan 10 On 11/5/2025 at 8:55 AM, OMedia said:One clarifying question: has anyone figured out whether it is possible to have the UGreen NAS automatically reboot once mains power has been restored to the UGreen UPS?If anyone still need this info.. I had to make quite some tests connecting UPS to my Mac, but they were succesfull :) To make this feature work you need to add additional option to config - allow_killpower = 1[ugreenups]driver = usbhid-upsport = autovendorid = 2b89productid = ffffsubdriver = Arduinodesc = "Ugreen US3000 via USB"allow_killpower = 1Also set Disable UPS Power after Shutdown: YesThen in your NAS Bios set Power Failure Recovery: ONIt will send shutdown.return command via NUT at the end of shutting down process. Then UPS will cut all power in 20sec (could be changed with NUT) and beep. When power is back - NAS will start normally.
January 16Jan 16 On 12/7/2025 at 6:56 PM, danielp1221 said:I am actually struggling here to get it working on the DXP4800 Plus ugreen, with the ugreen US3000 UPS.However no details come back from the UPS??I have the exact same issues and can't solve it. Did you or anyone else figure it out? Running a DXP2800 here.Besides the UI not showing anything, the shutdown logic does not work as well.Any help would be appreciated!
January 18Jan 18 23 minutes ago, unmix4 said:I have the exact same issues and can't solve it. Did you or anyone else figure it out? Running a DXP2800 here.Besides the UI not showing anything, the shutdown logic does not work as well.Any help would be appreciated!I found the solution to this!Unbelievable that I missed this, but maybe I'm not the only one. In the UI configuration there is also a UPS Name field, I somehow thought this is overriden with the config below but it's not. The names need to match, then it works fine.
March 4Mar 4 Thanks all, thought I'd end the post here with everything as a screenshot so any user can see on what settings they need to get a ugreen UPS working with NUT in unraid.Got it working good thanks to the above posts!Here's screenshots for any future unraid, ugreen ups :)Config:Display Settings:The rest of the settings:
April 6Apr 6 Here's a Docker Compose setup that worked for me. It's more involved than the NUT plugin, but might be useful if you prefer Compose for managing your containers.mkdir -p /boot/config/plugins/compose.manager/projects/nut-upsd #or wherever your Compose files liveCreate docker-compose.yaml:services: nut-upsd: image: instantlinux/nut-upsd:latest container_name: nut-upsd restart: unless-stopped privileged: true pid: host ports: - "3493:3493" volumes: - /mnt/cache/appdata/nut-upsd:/etc/nut entrypoint: /etc/nut/start.shNotes privileged: true is required for USB access and host shutdown pid: host allows the container to trigger a graceful host poweroff via nsenterNUT config files need Unix file permissions (e.g., 640 for passwords), so they must live on a POSIX filesystem. The UnRAID boot drive is FAT32, which doesn't support Unix permissions — so I put the config at /mnt/cache/appdata/nut-upsd/ instead of /boot/config/Config filesmkdir -p /mnt/cache/appdata/nut-upsdups.conf:inimaxretry = 3retrydelay = 5[ugreenups]driver = usbhid-upsport = autovendorid = 2b89productid = ffffsubdriver = Arduinodesc = "Ugreen US3000 via USB"pollinterval = 15user = rootupsd.conf:LISTEN 0.0.0.0 3493ALLOW_NOT_ALL_LISTENERS 1upsd.users:[upsmon]password = YOUR_PASSWORD_HEREupsmon primaryupsmon.conf:MONITOR ugreenups@localhost 1 upsmon YOUR_PASSWORD_HERE primaryMINSUPPLIES 1SHUTDOWNCMD "/bin/nsenter -t 1 -m -u -i -n -- /sbin/poweroff"POLLFREQ 5POLLFREQALERT 5HOSTSYNC 15DEADTIME 15FINALDELAY 5RBWARNTIME 43200NOCOMMWARNTIME 300POWERDOWNFLAG /etc/nut/killpowernut.conf:MODE=netserverstart.sh (custom entrypoint -- the default one has issues with duplicate config entries and restart loops):#!/bin/shmkdir -p /var/run/nutchown nut:nut /var/run/nutchown root:nut /etc/nut/*.confchmod 640 /etc/nut/*.conf/usr/sbin/upsdrvctl start/usr/sbin/upsd -F &sleep 2exec /usr/sbin/upsmon -DMake it executable:chmod +x /mnt/cache/appdata/nut-upsd/start.shTesting it out:cd /boot/config/plugins/compose.manager/projects/nut-upsddocker compose up -ddocker exec nut-upsd upsc ugreenups@localhostYou should see output like:battery.charge: 57device.mfr: UGREENdevice.model: US3000ups.status: OL DISCHRG CHRGFurther Notes upsmon inside the container monitors the UPS via upsdWhen battery hits the low threshold (20% by default), upsmon runs the SHUTDOWNCMDThe command uses nsenter -t 1 to execute poweroff on the host (not inside the container)No need to configure anything in UnRAID's Settings > UPS pageThe image's default entrypoint appends duplicate LISTEN lines to upsd.conf on every restart. The custom start.sh above avoids this.user = root in ups.conf is needed so the driver can access USB devices from inside the container. Without it, the default nut user gets "insufficient permissions" on USB. Separately, you should have a firewall rule to restrict port 3493 (NUT) to only trusted networks (e.g. LAN and Tailscale), so the UPS service isn't exposed to the internet.Since USB device paths can change across reboots, I also have vendorid and productid in ups.conf with port = auto , which is more reliable than hardcoding a /dev/bus/usb/ path.
May 9May 9 Thanks for all of the above posts - I've managed to get a setup that works pretty well!That said, I have been doing some testing and I am wondering if anyone has an answer to the following (it might just be that it's not possible).TL;DR: When the power returns to the UPS after it has kicked off the shutdown cycle, the NAS doesn't power back on. Is there some config to set to enable this?Scenario:Kill power to UPSWait the 4 minute timeout for it to kick off the shutdown cycleOnce shutdown begins, resume power to UPSObserve shutdownWait a decent amount of time and observe the NAS not powering back on.My ups.conf[ugreenups] driver = usbhid-ups port = auto vendorid = 2b89 productid = ffff subdriver = arduino desc = "Ugreen US3000 via USB" allow_killpower = 1I believe my config is aligned to what @MinoS posted above https://forums.unraid.net/topic/192997-ugreen-ups-with-unraid/#findComment-1600857Again, thanks for posting this stuff, has helped me greatly!
May 26May 26 Hi All,I finally managed to get the UGREEN US3000 UPS all setup and working, but i have noticed that the logs share and syslog are constantly getting the following, every second, which repeats endlessly. Happy to upload the diagnostics file if it helps.Anyone have any ideas?Thanks!May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] nut_libusb_get_interrupt: Connection timed out May 26 04:40:06 Urd usbhid-ups[1886523]: [D1:1886523:ugreenups] Got 0 HID objects (371415 times in a row, tolerance is -1)... May 26 04:40:06 Urd usbhid-ups[1886523]: [D1:1886523:ugreenups] Quick update... May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] refresh_report_buffer: investigating path: 00840004.00840024.00840056 May 26 04:40:06 Urd usbhid-ups[1886523]: [D4:1886523:ugreenups] Entering libusb_get_report May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[get]: (5 bytes) => 0a 00 00 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00001001, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.DelayBeforeStartup, Type: Feature, ReportID: 0x0a, Offset: 0, Size: 32, Value: 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.DelayBeforeStartup' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] refresh_report_buffer: investigating path: 00840004.00840024.00840057 May 26 04:40:06 Urd usbhid-ups[1886523]: [D4:1886523:ugreenups] Entering libusb_get_report May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[get]: (5 bytes) => 09 ff ff ff ff May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00001001, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.DelayBeforeShutdown, Type: Feature, ReportID: 0x09, Offset: 0, Size: 32, Value: -1 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.DelayBeforeShutdown' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] refresh_report_buffer: investigating path: 00840004.00840024.00840055 May 26 04:40:06 Urd usbhid-ups[1886523]: [D4:1886523:ugreenups] Entering libusb_get_report May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[get]: (5 bytes) => ee 00 00 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = -1 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00001001, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.DelayBeforeReboot, Type: Feature, ReportID: 0xee, Offset: 0, Size: 32, Value: 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.DelayBeforeReboot' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] refresh_report_buffer: investigating path: 00840004.00840024.00850068 May 26 04:40:06 Urd usbhid-ups[1886523]: [D4:1886523:ugreenups] Entering libusb_get_report May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[get]: (6 bytes) => 06 64 ff ff 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 2147483647, LogMin = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00001001, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.RunTimeToEmpty, Type: Feature, ReportID: 0x06, Offset: 8, Size: 32, Value: 65535 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.RunTimeToEmpty' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] refresh_report_buffer: investigating path: 00840004.00840024.00840002.008500d0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D4:1886523:ugreenups] Entering libusb_get_report May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[get]: (4 bytes) => 01 31 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00000000, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.PresentStatus.ACPresent, Type: Feature, ReportID: 0x01, Offset: 0, Size: 1, Value: 1 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] hu_find_infoval: found online (value: 1) May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.PresentStatus.ACPresent' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] process_boolean_info: online May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] process_boolean_info: !offline May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[buf]: (4 bytes) => 01 31 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00000000, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.PresentStatus.Discharging, Type: Feature, ReportID: 0x01, Offset: 4, Size: 1, Value: 1 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] hu_find_infoval: found dischrg (value: 1) May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.PresentStatus.Discharging' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] process_boolean_info: dischrg May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[buf]: (4 bytes) => 01 31 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00000000, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.PresentStatus.Charging, Type: Feature, ReportID: 0x01, Offset: 2, Size: 1, Value: 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] hu_find_infoval: found !chrg (value: 0) May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.PresentStatus.Charging' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] process_boolean_info: !chrg May 26 04:40:06 Urd usbhid-ups[1886523]: [D3:1886523:ugreenups] Report[buf]: (4 bytes) => 01 31 00 00 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] PhyMax = 0, PhyMin = 0, LogMax = 1, LogMin = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Unit = 00000000, UnitExp = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] Exponent = 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D2:1886523:ugreenups] Path: UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit, Type: Feature, ReportID: 0x01, Offset: 1, Size: 1, Value: 0 May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] hu_find_infoval: found !lowbatt (value: 0) May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_infoval_set: report descriptor mapping for 'UPS.PowerSummary.PresentStatus.BelowRemainingCapacityLimit' (Feature) was already set as handled May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] process_boolean_info: !lowbatt May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] ups_status_set: current battery.charge=100 is okay compared to onlinedischarge_log_throttle_hovercharge=100 (previous onlinedischarge_log_throttle_charge=99): charging May 26 04:40:06 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] send_to_all: SETINFO driver.state "quiet" May 26 04:40:06 Urd usbhid-ups[1886523]: [D6:1886523:ugreenups] send_to_all: write 29 bytes to socket 5 succeeded (ret=29): SETINFO driver.state "quiet" May 26 04:40:07 Urd usbhid-ups[1886523]: [D5:1886523:ugreenups] send_to_all: SETINFO driver.state "updateinfo" May 26 04:40:07 Urd usbhid-ups[1886523]: [D6:1886523:ugreenups] send_to_all: write 34 bytes to socket 5 succeeded (ret=34): SETINFO driver.state "updateinfo" May 26 04:40:07 Urd usbhid-ups[1886523]: [D1:1886523:ugreenups] upsdrv_updateinfo...
Tuesday at 03:28 AM5 days I just setup the US3000 on a DXP4800 Plus, has anyone found a solution to the excessive logging other than changing it to log to file and not syslog? Edited Tuesday at 12:25 PM5 days by Trent Curtis
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.