Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Ugreen UPS with Unraid

Featured Replies

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?

  • 5 weeks later...
  • Author

I found the solution (NUT-Plugin):

[ugreenups]
driver = usbhid-ups
port = auto
vendorid = 2b89
productid = ffff
subdriver = Arduino
desc = "Ugreen US3000 via USB"

Edited by Berzdorfer

Thanks for sharing, it could help someone in the future. 👍🏻

  • 3 weeks later...

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

  • 4 weeks later...

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.

  • 5 weeks later...

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?

I am actually struggling here to get it working on the DXP4800 Plus ugreen, with the ugreen US3000 UPS.

MMrr5I.png
VbKtmv.png

However no details come back from the UPS??
4rMBB4.png

Edited by danielp1221

  • 4 weeks later...

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.

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.

MMrr5I.png
VbKtmv.png

However no details come back from the UPS??
4rMBB4.png

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

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-ups

port = auto

vendorid = 2b89

productid = ffff

subdriver = Arduino

desc = "Ugreen US3000 via USB"

allow_killpower = 1

Also set Disable UPS Power after Shutdown: Yes

Then in your NAS Bios set Power Failure Recovery: ON

It 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.

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.

MMrr5I.png
VbKtmv.png

However no details come back from the UPS??
4rMBB4.png

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!

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.

  • 1 month later...

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:

image.png

Display Settings:
image.pngimage.png

The rest of the settings:

image.pngimage.png

  • 1 month later...

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 live

Create 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.sh

Notes

  • privileged: true is required for USB access and host shutdown

  • pid: host allows the container to trigger a graceful host poweroff via nsenter

  • NUT 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 files

mkdir -p /mnt/cache/appdata/nut-upsd

ups.conf:

ini

maxretry = 3

retrydelay = 5

[ugreenups]

driver = usbhid-ups

port = auto

vendorid = 2b89

productid = ffff

subdriver = Arduino

desc = "Ugreen US3000 via USB"

pollinterval = 15

user = root

upsd.conf:

LISTEN 0.0.0.0 3493

ALLOW_NOT_ALL_LISTENERS 1

upsd.users:

[upsmon]

password = YOUR_PASSWORD_HERE

upsmon primary

upsmon.conf:

MONITOR ugreenups@localhost 1 upsmon YOUR_PASSWORD_HERE primary

MINSUPPLIES 1

SHUTDOWNCMD "/bin/nsenter -t 1 -m -u -i -n -- /sbin/poweroff"

POLLFREQ 5

POLLFREQALERT 5

HOSTSYNC 15

DEADTIME 15

FINALDELAY 5

RBWARNTIME 43200

NOCOMMWARNTIME 300

POWERDOWNFLAG /etc/nut/killpower

nut.conf:

MODE=netserver

start.sh (custom entrypoint -- the default one has issues with duplicate config entries and restart loops):

#!/bin/sh

mkdir -p /var/run/nut

chown nut:nut /var/run/nut

chown root:nut /etc/nut/*.conf

chmod 640 /etc/nut/*.conf

/usr/sbin/upsdrvctl start

/usr/sbin/upsd -F &

sleep 2

exec /usr/sbin/upsmon -D

Make it executable:

chmod +x /mnt/cache/appdata/nut-upsd/start.sh

Testing it out:

cd /boot/config/plugins/compose.manager/projects/nut-upsd

docker compose up -d

docker exec nut-upsd upsc ugreenups@localhost

You should see output like:

battery.charge: 57

device.mfr: UGREEN

device.model: US3000

ups.status: OL DISCHRG CHRG

Further Notes

  • upsmon inside the container monitors the UPS via upsd

  • When battery hits the low threshold (20% by default), upsmon runs the SHUTDOWNCMD

  • The 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 page

  • The 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.

  • 1 month later...

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:

  1. Kill power to UPS

  2. Wait the 4 minute timeout for it to kick off the shutdown cycle

  3. Once shutdown begins, resume power to UPS

  4. Observe shutdown

  5. Wait 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 = 1

I believe my config is aligned to what @MinoS posted above https://forums.unraid.net/topic/192997-ugreen-ups-with-unraid/#findComment-1600857

Again, thanks for posting this stuff, has helped me greatly!

  • 3 weeks later...

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...
  • 1 month later...

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 by Trent Curtis

  • 2 months later...
On 6/30/2026 at 4:28 AM, Trent Curtis said:

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?


I removed
debug_min = 6
from the config and that seems to have helped?

so my config just reads
[US3000]

driver = usbhid-ups

port = auto

vendorid = 2b89

productid = ffff

subdriver = Arduino

desc = "Ugreen US3000 via USB"

onlinedischarge_log_throttle_sec = -1

lowbatt=20

ignorelb

override.battery.charge.low = 20

override.battery.runtime.low = 100

  • 1 month later...

Following on from the NUT config in this thread: I enabled it on a UGREEN DXP4800 Plus with the US3000, and a couple of days later the syslog was filling the log tmpfs. If left alone it would eventually have hung the server. Here is what I found and how I fixed it, in case it helps anyone else.

Setup

  • Unraid 7.3.3

  • NUT plugin (nut-dw) 2026.10.16, NUT 2.8.5

  • "Enable Manual Configuration" set to For UPS Driver, with the ups.conf from earlier in this thread (usbhid-ups, vendorid = 2b89, productid = ffff, subdriver = Arduino)

Symptom /var/log (a tmpfs, 1 GB on my box) was growing at roughly 5 KB/s, about 430 MB a day. About 90% of /var/log/syslog was NUT lines like:

Code block

usbhid-ups: [D5:...:ugreenups] Exponent = 0
usbhid-ups: [D4:...:ugreenups] Entering libusb_get_report
upsmon: [D3:...:mono] get_var: [email protected] / status

Cause (in my case) I had NUT debug logging switched on, at level 6, in two places:

  1. debug_min = 6 in ups.conf.

  2. The plugin's upsmon debug level setting (DEBLEVELMON="6"), which writes DEBUG_MIN 6 into upsmon.conf.

On most UPSes that would be noisy but tolerable. The US3000 exposes a large vendor-specific HID descriptor (hundreds of ffff00xx usages), and at debug level 5/6 the driver dumps it on every poll. That is where most of the volume came from.

Why it eventually fills /var/log: Unraid's logrotate only runs from cron.daily, with rotate 2 and no compression. At that rate the live syslog plus two rotated copies can exceed the tmpfs.

How to check yours:

Code block

ls -laS /var/log | head
grep -E "usbhid-ups|upsmon|upsd" /var/log/syslog | grep -c "\[D[0-9]"
sed -E 's/^[A-Z][a-z]{2} +[0-9]+ [0-9:]+ //; s/\[[0-9]+\]//g' /var/log/syslog | sort | uniq -c | sort -rn | head

The OL DISCHRG oddity The US3000 reports ups.status: OL DISCHRG all the time, even on mains. In the raw HID data I saw ACPresent = 1, Discharging = 1, Charging = 0, BelowRemainingCapacityLimit = 0, so the firmware itself sets those flags and NUT is not misreading them. My guess is that "Discharging" just means "not charging" on this firmware. battery.runtime is always 65535, which is a placeholder, so don't rely on it.

NUT logs a warning for OL+DISCHRG, but only at startup and when battery.charge changes. It is not a flood on its own. I added onlinedischarge_log_throttle_hovercharge = 95 so 98/99 wobble doesn't trigger it.

The fix, and where it has to be made to persist On Unraid, /etc is in RAM. The NUT plugin keeps its real config on the flash drive and regenerates parts of /etc/nut on every start, so where you edit matters:

Setting

Edit here

Why

upsmon debug off

DEBLEVELMON="default" in /boot/config/plugins/nut-dw/nut-dw.cfg (or the "upsmon debug level" setting in the plugin GUI)

rc.nut rewrites line 8 of upsmon.conf from this on every start. If you edit upsmon.conf directly, it is overwritten.

driver debug off

Remove debug_min = ... from ups.conf (NUT Editor, or edit the file)

In "For UPS Driver" manual mode the GUI's driver debug setting is ignored, so the line lives in your own ups.conf.

anti-spam filter

SYSLOGFILTER="enable" in nut-dw.cfg

The plugin recreates the rsyslog filter and its logrotate file on each start.

The plugin copies /etc/nut/* to /boot/config/plugins/nut-dw/ups/ whenever it writes its config, so after editing ups.conf I restarted NUT via the plugin and checked the two copies matched:

Code block

cmp /etc/nut/ups.conf /boot/config/plugins/nut-dw/ups/ups.conf && echo identical

My ups.conf now (the lowbatt / override lines are my own choices, not required):

Code block

[ugreenups]
driver = usbhid-ups
port = auto
vendorid = 2b89
productid = ffff
subdriver = Arduino
desc = "Ugreen US3000 via USB"
allow_killpower = 1
onlinedischarge_log_throttle_sec = -1
lowbatt=20
ignorelb
override.battery.charge.low = 20
override.battery.runtime.low = 100
onlinedischarge_log_throttle_hovercharge = 95
pollinterval = 5

Then restart NUT and clear the old flood with : > /var/log/syslog.

Result Before: about 5 KB/s, thousands of NUT debug lines. After: 1 line in the first 60 seconds (my own test message), 0 debug lines, and /var/log at about 8 MB of 1 GB, almost all from an unrelated plugin log.

Caveats, so you don't take this as gospel

  • I verified this over a short period right after the change. (I'll update this post after 12+ hours with the log growth rate, whether any OL+DISCHRG warnings appeared, and confirmation after a reboot that the settings survived.)

  • I have not tested a real power-loss shutdown with this setup.

  • pollinterval = 5 is an optional tweak to reduce USB traffic; I haven't measured its effect on shutdown responsiveness.

  • Debug level 6 was my own setting. If you didn't enable debug yourself and still see flooding, post your top repeated lines rather than assuming it's the same cause.

  • Also worth doing: upsd listens on 0.0.0.0 with default NUT passwords. If only Unraid itself needs the UPS data, bind it to 127.0.0.1 and change the passwords.

Possible extra hardening (not done yet) Because logrotate runs once a day, any future logging flood can still fill /var/log. An hourly logrotate run, for example from the User Scripts plugin, would cap that. I'll add it after the system has run clean for a while.

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.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.