nut on TrueNas
Status
root@nass:~# systemctl status nut-monitor
● nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller
Loaded: loaded (/lib/systemd/system/nut-monitor.service; enabled; preset: disabled)
Active: active (running) since Thu 2026-03-26 17:51:50 PDT; 5min ago
Main PID: 748885 (upsmon)
Tasks: 2 (limit: 38017)
Memory: 812.0K
CPU: 23ms
CGroup: /system.slice/nut-monitor.service
├─748885 /lib/nut/upsmon -F
└─748887 /lib/nut/upsmon -F
Mar 26 17:51:50 nass systemd[1]: Started nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller.
Mar 26 17:51:50 nass nut-monitor[748885]: fopen /run/nut/upsmon.pid: No such file or directory
Mar 26 17:51:50 nass nut-monitor[748885]: Could not find PID file to see if previous upsmon instance is already running!
Mar 26 17:51:50 nass nut-monitor[748885]: UPS: ups@localhost:3493 (primary) (power value 1)
Mar 26 17:51:50 nass nut-monitor[748887]: Init SSL without certificate database
root@nass:~# systemctl status nut-server
● nut-server.service - Network UPS Tools - power devices information server
Loaded: loaded (/lib/systemd/system/nut-server.service; enabled; preset: disabled)
Active: active (running) since Thu 2026-03-26 17:51:50 PDT; 3min 44s ago
Main PID: 748828 (upsd)
Tasks: 1 (limit: 38017)
Memory: 572.0K
CPU: 317ms
CGroup: /system.slice/nut-server.service
└─748828 /lib/nut/upsd -F
Mar 26 17:51:50 nass upsd[748828]: not listening on 0.0.0.0 port 3493
Mar 26 17:51:50 nass nut-server[748828]: not listening on 0.0.0.0 port 3493
Mar 26 17:51:50 nass nut-server[748828]: /run/nut is world readable
Mar 26 17:51:50 nass upsd[748828]: /run/nut is world readable
Mar 26 17:51:50 nass upsd[748828]: Connected to UPS [ups]: usbhid-ups-ups
Mar 26 17:51:50 nass nut-server[748828]: Connected to UPS [ups]: usbhid-ups-ups
Mar 26 17:51:50 nass nut-server[748828]: Running as foreground process, not saving a PID file
Mar 26 17:51:50 nass upsd[748828]: Running as foreground process, not saving a PID file
Mar 26 17:51:50 nass nut-server[748828]: User upsmon@::ffff:127.0.0.1 logged into UPS [ups]
Mar 26 17:51:50 nass upsd[748828]: User upsmon@::ffff:127.0.0.1 logged into UPS [ups]
Configuration
Configured via GUI. Which results in….
/etc/nut/ups.conf:
[ups]
driver = usbhid-ups
port = auto
desc = ""
/etc/nut/nut.conf:
MODE=netserver
/etc/nut/upsd.conf:
LISTEN 0.0.0.0 3493
LISTEN ::0 3493
/etc/nut/upsd.users:
[upsmon]
password = UpsMon
upsmon master
/etc/nut/upsmon.conf:
MONITOR ups@localhost:3493 1 upsmon UpsMon MASTER
NOTIFYCMD /usr/sbin/upssched
NOTIFYFLAG ONBATT SYSLOG+EXEC
NOTIFYFLAG LOWBATT SYSLOG+EXEC
NOTIFYFLAG ONLINE SYSLOG+EXEC
NOTIFYFLAG COMMBAD SYSLOG+EXEC
NOTIFYFLAG COMMOK SYSLOG+EXEC
NOTIFYFLAG REPLBATT SYSLOG+EXEC
NOTIFYFLAG NOCOMM SYSLOG+EXEC
NOTIFYFLAG FSD SYSLOG+EXEC
NOTIFYFLAG SHUTDOWN SYSLOG+EXEC
SHUTDOWNCMD "/sbin/shutdown -P now"
HOSTSYNC 15
Use
root@nass[~]# upsc ups
Init SSL without certificate database
battery.charge: 100
battery.charge.low: 10
battery.charge.warning: 50
battery.date: not set
battery.mfr.date: 2011/07/24
battery.runtime: 150
battery.runtime.low: 120
battery.type: PbAc
battery.voltage: 13.5
battery.voltage.nominal: 12.0
device.mfr: APC
device.model: Back-UPS ES 550
device.serial: 4B1130P52215
device.type: ups
driver.name: usbhid-ups
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: auto
driver.parameter.synchronous: auto
driver.version: 2.8.0
driver.version.data: APC HID 0.98
driver.version.internal: 0.47
driver.version.usb: libusb-1.0.26 (API: 0x1000109)
input.sensitivity: medium
input.transfer.high: 139
input.transfer.low: 92
input.voltage: 121.0
input.voltage.nominal: 120
ups.beeper.status: enabled
ups.delay.shutdown: 20
ups.firmware: 843.K2 .D
ups.firmware.aux: K2
ups.load: 23
ups.mfr: APC
ups.mfr.date: 2011/07/24
ups.model: Back-UPS ES 550
ups.productid: 0002
ups.serial: 4B1130P52215
ups.status: OL
ups.timer.reboot: 0
ups.timer.shutdown: -1
ups.vendorid: 051d
List supported commands:
> upscmd -l ups
Instant commands supported on UPS [ups]:
beeper.disable - Disable the UPS beeper
beeper.enable - Enable the UPS beeper
beeper.mute - Temporarily mute the UPS beeper
beeper.off - Obsolete (use beeper.disable or beeper.mute)
beeper.on - Obsolete (use beeper.enable)
load.off - Turn off the load immediately
load.off.delay - Turn off the load with a delay (seconds)
shutdown.reboot - Shut down the load briefly while rebooting the UPS
shutdown.stop - Stop a shutdown in progress
test.panel.start - Start testing the UPS panel
test.panel.stop - Stop a UPS panel test
Unfortunately:
root@nass:~# upscmd -u upsmon -p UpsMon ups beeper.disable
Unexpected response from upsd: ERR ACCESS-DENIED
Battery Maintenance
Read values:
# upsrw -u upsmon -p UpsMon ups
[battery.charge.low]
Remaining battery level when UPS switches to LB (percent)
Type: STRING
Maximum length: 10
Value: 10
[battery.mfr.date]
Battery manufacturing date
Type: STRING
Maximum length: 10
Value: 2011/07/24
[battery.runtime.low]
Remaining battery runtime when UPS switches to LB (seconds)
Type: STRING
Maximum length: 10
Value: 120
[input.sensitivity]
Input power sensitivity
Type: STRING
Maximum length: 10
Value: medium
[input.transfer.high]
High voltage transfer point (V)
Type: STRING
Maximum length: 10
Value: 139
[input.transfer.low]
Low voltage transfer point (V)
Type: STRING
Maximum length: 10
Value: 92
[ups.delay.shutdown]
Interval to wait after shutdown with delay command (seconds)
Type: STRING
Maximum length: 10
Value: 20
After the battery is updated, update the battery.mfr.date setting:
upsrw -s battery.mfr.date=2026/03/01 -u upsmon -p UpsMon ups
got:
Unexpected response from upsd: ERR ACCESS-DENIED