[SOLVED] NUT UPS stopped working after upgrade from PVE 8 to 9

fcarneiro

New Member
Oct 1, 2026
3
4
3
Hello,
I just upgraded a server running Proxmox version 8 (PVE 8.4.19, Debian 12.14, kernel 6.8.12-30-pve) to version 9 (PVE 9.2.21, Debian 13.7, kernel 7.0.14-20-pve) and the NUT UPS server/monitor stopped working. It doesn't connect to the UPS anymore and doesn't even detect it with nut-scanner.

Everything was working fine just before the upgrade. There were no physical changes or any change on the UPS, just the OS upgrade/reboot.

I've checked the nut group assignments and udev rules and everything seems to be right. The UPS is connected through a Serial-USB converter, which is shown on dmesg and lsusb.

I've seen some related threads about this same issue, but nothing worked for me so far.

Does anyone else have a clue on how to fix this?

PS: I've already tried rebooting, physically disconnecting/reconnecting the USB adapter and serial cable, completely powering off/on the server, reinstalling the nut packages, reconfiguring using the default configuration, restoring the old configuration files...


Here is my configuration (nothing has changed, I kept the old configuration files while upgrading):

/etc/nut/nut.conf
Code:
MODE=standalone

/etc/nut/ups.conf
Code:
maxretry = 3

[UPS-NAME]
    driver = nutdrv_qx
    port = /dev/ttyUSB0
    pollinterval = 2

MONITOR UPS-NAME@localhost 0 upsmonuser xxxxxxxxxxxxxxxxx primary


dmesg output:
Code:
[   19.871354] usbserial: USB Serial support registered for FTDI USB Serial Device
[   19.872401] ftdi_sio 1-7:1.0: FTDI USB Serial Device converter detected
[   19.872918] usb 1-7: Detected FT2232C/D
[   19.873343] usb 1-7: FTDI USB Serial Device converter now attached to ttyUSB0
[   19.873630] ftdi_sio 1-7:1.1: FTDI USB Serial Device converter detected
[   19.873896] usb 1-7: Detected FT2232C/D
[   19.874260] usb 1-7: FTDI USB Serial Device converter now attached to ttyUSB1

lsusb:
Code:
Bus 001 Device 002: ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC

$ sudo service nut-server status
Code:
× nut-server.service - Network UPS Tools - power devices information server
     Loaded: loaded (/usr/lib/systemd/system/nut-server.service; enabled; preset: enabled)
     Active: failed (Result: exit-code) since Thu 2026-10-01 08:12:01 UTC; 11min ago
   Duration: 6ms
 Invocation: fd841a0a19674524b103df6816ad2658
    Process: 1669 ExecStartPre=/usr/bin/systemd-tmpfiles --create /usr/lib/tmpfiles.d/nut-common-tmpfiles.conf (code=exited, status=0/SUCCESS)
    Process: 1672 ExecStart=/usr/sbin/upsd -F (code=exited, status=1/FAILURE)
   Main PID: 1672 (code=exited, status=1/FAILURE)

Oct 01 08:12:01 [hostname] systemd[1]: nut-server.service: Scheduled restart job, restart counter is at 5.
Oct 01 08:12:01 [hostname] systemd[1]: nut-server.service: Start request repeated too quickly.
Oct 01 08:12:01 [hostname] systemd[1]: nut-server.service: Failed with result 'exit-code'.
Oct 01 08:12:01 [hostname] systemd[1]: Failed to start nut-server.service - Network UPS Tools - power devices information server.

$ ls -l /dev/ttyUSB0
Code:
crw-rw---- 1 root dialout 188, 0 Oct  1 08:24 /dev/ttyUSB0

$ sudo nut-scanner -U
Code:
Cannot load IPMI library (libfreeipmi.so.17) : file not found. IPMI search disabled.
Scanning USB bus.

$ sudo nut-scanner
Code:
Cannot load IPMI library (libfreeipmi.so.17) : file not found. IPMI search disabled.
Scanning USB bus.
No start IP, skipping SNMP
Scanning XML/HTTP bus.
No start IP, skipping NUT bus (old connect method)
Scanning NUT bus (avahi method).
Failed to create Avahi client: Daemon not running


cat /etc/udev/rules.d/62-nut-usbups.rules
Code:
# This file is generated and installed by the Network UPS Tools package.

ACTION=="remove", GOTO="nut-usbups_rules_end"
SUBSYSTEM=="usb_device", GOTO="nut-usbups_rules_real"
SUBSYSTEM=="usb", GOTO="nut-usbups_rules_real"
GOTO="nut-usbups_rules_end"

LABEL="nut-usbups_rules_real"
#  SNR-UPS-LID-XXXX UPSes  - nutdrv_qx
ATTR{idVendor}=="0001", ATTR{idProduct}=="0000", MODE="664", GROUP="nut"

[...]


# ID 0403:6010 Future Technology Devices International, Ltd FT2232C/D/H Dual UART/FIFO IC
# (added this line:)
ATTR{idVendor}=="0403", ATTR{idProduct}=="6010", MODE="664", GROUP="nut"

LABEL="nut-usbups_rules_end"



grep nut /var/log/syslog:
Code:
2026-10-01T08:24:59.681711+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:04.681913+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:09.682172+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:14.682362+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:19.682551+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:24.682715+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:29.682921+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:34.683164+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:39.683317+00:00 hostname nut-monitor[1556]: UPS [UPS-NAME@localhost]: connect failed: Connection failure: Connection refused
2026-10-01T08:25:42.185841+00:00 hostname nut-monitor[1556]: Signal 15: exiting
2026-10-01T08:25:42.186035+00:00 hostname systemd[1]: Stopping nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller...
2026-10-01T08:25:42.186817+00:00 hostname nut-monitor[1556]: Network UPS Tools upsmon 2.8.1
2026-10-01T08:25:42.187583+00:00 hostname systemd[1]: nut-monitor.service: Deactivated successfully.
2026-10-01T08:25:42.187788+00:00 hostname systemd[1]: Stopped nut-monitor.service - Network UPS Tools - power device monitor and shutdown controller.
2026-10-01T08:25:45.643526+00:00 hostname systemd[1]: Starting nut-server.service - Network UPS Tools - power devices information server...
2026-10-01T08:25:45.663522+00:00 hostname systemd[1]: Started nut-server.service - Network UPS Tools - power devices information server.
2026-10-01T08:25:45.669906+00:00 hostname nut-server[8515]: fopen /run/nut/upsd.pid: No such file or directory
2026-10-01T08:25:45.669961+00:00 hostname nut-server[8515]: Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
2026-10-01T08:25:45.670011+00:00 hostname nut-server[8515]: not listening on ::1 port 3493
2026-10-01T08:25:45.670116+00:00 hostname nut-server[8515]: listening on 127.0.0.1 port 3493
2026-10-01T08:25:45.670136+00:00 hostname nut-server[8515]: no listening interface available
2026-10-01T08:25:45.670153+00:00 hostname nut-server[8515]: Network UPS Tools upsd 2.8.1
2026-10-01T08:25:45.670608+00:00 hostname systemd[1]: nut-server.service: Main process exited, code=exited, status=1/FAILURE
2026-10-01T08:25:45.670726+00:00 hostname systemd[1]: nut-server.service: Failed with result 'exit-code'.
2026-10-01T08:25:45.814848+00:00 hostname systemd[1]: nut-server.service: Scheduled restart job, restart counter is at 1.
2026-10-01T08:25:45.815972+00:00 hostname systemd[1]: Starting nut-server.service - Network UPS Tools - power devices information server...
2026-10-01T08:25:45.832549+00:00 hostname systemd[1]: Started nut-server.service - Network UPS Tools - power devices information server.
2026-10-01T08:25:45.838421+00:00 hostname nut-server[8548]: fopen /run/nut/upsd.pid: No such file or directory
2026-10-01T08:25:45.838480+00:00 hostname nut-server[8548]: Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
2026-10-01T08:25:45.838508+00:00 hostname nut-server[8548]: not listening on ::1 port 3493
2026-10-01T08:25:45.838523+00:00 hostname nut-server[8548]: listening on 127.0.0.1 port 3493
2026-10-01T08:25:45.838537+00:00 hostname nut-server[8548]: no listening interface available
2026-10-01T08:25:45.838553+00:00 hostname nut-server[8548]: Network UPS Tools upsd 2.8.1
2026-10-01T08:25:45.838936+00:00 hostname systemd[1]: nut-server.service: Main process exited, code=exited, status=1/FAILURE
2026-10-01T08:25:45.839063+00:00 hostname systemd[1]: nut-server.service: Failed with result 'exit-code'.
2026-10-01T08:25:46.064806+00:00 hostname systemd[1]: nut-server.service: Scheduled restart job, restart counter is at 2.
2026-10-01T08:25:46.065972+00:00 hostname systemd[1]: Starting nut-server.service - Network UPS Tools - power devices information server...
2026-10-01T08:25:46.079871+00:00 hostname systemd[1]: Started nut-server.service - Network UPS Tools - power devices information server.
2026-10-01T08:25:46.086103+00:00 hostname nut-server[8553]: fopen /run/nut/upsd.pid: No such file or directory
2026-10-01T08:25:46.086164+00:00 hostname nut-server[8553]: Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
2026-10-01T08:25:46.086213+00:00 hostname nut-server[8553]: not listening on ::1 port 3493
2026-10-01T08:25:46.086227+00:00 hostname nut-server[8553]: listening on 127.0.0.1 port 3493
2026-10-01T08:25:46.086241+00:00 hostname nut-server[8553]: no listening interface available
2026-10-01T08:25:46.086331+00:00 hostname nut-server[8553]: Network UPS Tools upsd 2.8.1
2026-10-01T08:25:46.086806+00:00 hostname systemd[1]: nut-server.service: Main process exited, code=exited, status=1/FAILURE
2026-10-01T08:25:46.086921+00:00 hostname systemd[1]: nut-server.service: Failed with result 'exit-code'.
2026-10-01T08:25:46.314805+00:00 hostname systemd[1]: nut-server.service: Scheduled restart job, restart counter is at 3.
2026-10-01T08:25:46.315996+00:00 hostname systemd[1]: Starting nut-server.service - Network UPS Tools - power devices information server...
2026-10-01T08:25:46.329607+00:00 hostname systemd[1]: Started nut-server.service - Network UPS Tools - power devices information server.
2026-10-01T08:25:46.335818+00:00 hostname nut-server[8560]: fopen /run/nut/upsd.pid: No such file or directory
2026-10-01T08:25:46.335881+00:00 hostname nut-server[8560]: Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
2026-10-01T08:25:46.335907+00:00 hostname nut-server[8560]: not listening on ::1 port 3493
2026-10-01T08:25:46.335923+00:00 hostname nut-server[8560]: listening on 127.0.0.1 port 3493
2026-10-01T08:25:46.335935+00:00 hostname nut-server[8560]: no listening interface available
2026-10-01T08:25:46.336019+00:00 hostname nut-server[8560]: Network UPS Tools upsd 2.8.1
2026-10-01T08:25:46.336194+00:00 hostname systemd[1]: nut-server.service: Main process exited, code=exited, status=1/FAILURE
2026-10-01T08:25:46.336302+00:00 hostname systemd[1]: nut-server.service: Failed with result 'exit-code'.
2026-10-01T08:25:46.564829+00:00 hostname systemd[1]: nut-server.service: Scheduled restart job, restart counter is at 4.
2026-10-01T08:25:46.566078+00:00 hostname systemd[1]: Starting nut-server.service - Network UPS Tools - power devices information server...
2026-10-01T08:25:46.579784+00:00 hostname systemd[1]: Started nut-server.service - Network UPS Tools - power devices information server.
2026-10-01T08:25:46.585788+00:00 hostname nut-server[8565]: fopen /run/nut/upsd.pid: No such file or directory
2026-10-01T08:25:46.585831+00:00 hostname nut-server[8565]: Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
2026-10-01T08:25:46.585873+00:00 hostname nut-server[8565]: not listening on ::1 port 3493
2026-10-01T08:25:46.585889+00:00 hostname nut-server[8565]: listening on 127.0.0.1 port 3493
2026-10-01T08:25:46.585944+00:00 hostname nut-server[8565]: no listening interface available
2026-10-01T08:25:46.585963+00:00 hostname nut-server[8565]: Network UPS Tools upsd 2.8.1
2026-10-01T08:25:46.586208+00:00 hostname systemd[1]: nut-server.service: Main process exited, code=exited, status=1/FAILURE
2026-10-01T08:25:46.586317+00:00 hostname systemd[1]: nut-server.service: Failed with result 'exit-code'.
2026-10-01T08:25:46.814934+00:00 hostname systemd[1]: nut-server.service: Scheduled restart job, restart counter is at 5.
2026-10-01T08:25:46.815036+00:00 hostname systemd[1]: nut-server.service: Start request repeated too quickly.
2026-10-01T08:25:46.815074+00:00 hostname systemd[1]: nut-server.service: Failed with result 'exit-code'.
2026-10-01T08:25:46.815107+00:00 hostname systemd[1]: Failed to start nut-server.service - Network UPS Tools - power devices information server.


Thanks!
 
Is nut on the dialout group ?
cat /etc/group | grep nut

if not (result = nut:x:119:), try to add it : adduser nut dialout
It is just an idea.
 
Is nut on the dialout group ?
cat /etc/group | grep nut

if not (result = nut:x:119:), try to add it : adduser nut dialout
It is just an idea.

Hi, thanks.
Yes, it is. I’ve even tried removing and adding it to the group again (usermod -a -G dialout nut), with no luck.

Also, I replicated this exact same configuration to another server running the same old version of PVE 8 and it worked. Just can get it working on PVE9/Debian 13.
 
  • Like
Reactions: ghusson
Since you've already tried adding the nut user to the dialout group and it didn't work, you might be running into a classic Debian upgrade trap: interference from the brltty service.

I checked my own Proxmox 9 lab environment (which was a fresh install) and verified that brltty isn't included by default. However, since you performed an in-place upgrade from PVE 8 to 9 (Debian 12 to 13), it's very common for this package to get pulled in automatically during the upgrade process.

brltty is a background driver for Braille displays, and it is notorious for aggressively claiming USB-to-Serial converter chips (like the FTDI one you are using). When it runs in the background, it exclusively locks the serial port. As a result, even if your NUT user and udev permissions are perfectly configured, your nutdrv_qx driver will be denied access to /dev/ttyUSB0 and fail to start.

You can easily check if this package is installed by running:
Code:
dpkg -l | grep brltty
If it shows up in the output, you can completely remove it with:
Code:
apt-get remove --purge brltty
apt-get autoremove
After uninstalling, simply unplug and reconnect your USB-to-Serial adapter, then try starting the NUT service again.

Hope this helps!
 
Last edited:
  • Like
Reactions: ghusson
Hello,
Thanks for all the replies. I Finally figured out what the error was.

As advised here, I tried running /usr/sbin/upsd -F -DDDDD in foreground with the debug options and found that the problem was related to the interface binding. The binding configurations was on default and it was trying to bind to the localhost IPv4 and IPv6 addresses. IPv6 is disabled in this server (as it was before). It was binding to IPv4 127.0.0.1:3493 but still gave this error: no listening interface available.
(Maybe this is a bug, or misconfiguration?)

Code:
$ sudo /usr/sbin/upsd -F -DDDDDDDDD
Network UPS Tools upsd 2.8.1
   0.000000    fopen /run/nut/upsd.pid: No such file or directory
   0.000006    Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
   0.000211    [D1] debug level is '9'
   0.000269    [D1] server_load: No LISTEN configuration provided, will try IPv6 localhost
   0.000279    [D3] listen_add: added ::1:3493
   0.000299    [D1] server_load: No LISTEN configuration provided, will try IPv4 localhost
   0.000322    [D3] listen_add: added 127.0.0.1:3493
   0.000328    [D3] setuptcp: try to bind to ::1 port 3493
   0.000350    [D3] setuptcp: bind: Cannot assign requested address
   0.000365    not listening on ::1 port 3493
   0.000386    [D3] setuptcp: try to bind to 127.0.0.1 port 3493
   0.000422    listening on 127.0.0.1 port 3493
   0.000430    no listening interface available


So I manually set /etc/nut/upsd.conf to bind only to the local IPv4 address :
Code:
LISTEN 127.0.0.1 3493

Then I also needed to fix the ownership of /etc/nut back to nut. It was probably changed during the upgrade/reconfiguration process and I still got a permission error after fixing the listening part.
Code:
$ sudo /usr/sbin/upsd -F -DDDDDDDDD
Network UPS Tools upsd 2.8.1
   0.000000    fopen /run/nut/upsd.pid: No such file or directory
   0.000006    Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
   0.000119    [D3] listen_add: added 127.0.0.1:3493
   0.000197    [D1] debug level is '9'
   0.000205    [D3] setuptcp: try to bind to 127.0.0.1 port 3493
   0.000254    listening on 127.0.0.1 port 3493
   0.000988    [D1] Succeeded to become_user(nut): now UID=111 GID=118
   0.001002    [D1] chdired into statepath /run/nut for driver sockets
   0.001021    Can't open /etc/nut/ups.conf: Can't open /etc/nut/ups.conf: Permission denied

$ ls -l /etc/nut/ups.conf
-rw-r----- 1 root root 9586 Oct  1 08:54 /etc/nut/ups.conf

$ sudo chown -R root:nut /etc/nut
# (so that nut has read-only permissions, this seems to be the default I got from another server)

And now it's working as before!
Code:
$ sudo /usr/sbin/upsd -F -DDDDDDDDD
Network UPS Tools upsd 2.8.1
   0.000000    fopen /run/nut/upsd.pid: No such file or directory
   0.000006    Could not find PID file '/run/nut/upsd.pid' to see if previous upsd instance is already running!
   0.000145    [D3] listen_add: added 127.0.0.1:3493
   0.000235    [D1] debug level is '9'
   0.000242    [D3] setuptcp: try to bind to 127.0.0.1 port 3493
   0.000268    listening on 127.0.0.1 port 3493
   0.006495    [D1] Succeeded to become_user(nut): now UID=111 GID=118
   0.006507    [D1] chdired into statepath /run/nut for driver sockets
   0.006614    [D2] sstate_connect: preparing UNIX socket nutdrv_qx-UPS-NAME
   0.006712    Connected to UPS [UPS-NAME]: nutdrv_qx-UPS-NAME
   0.006722    Found 1 UPS defined in ups.conf
   0.007064    [D2] user_add_action: adding 'login' for upsmon
   0.007073    [D2] user_add_action: adding 'master' for upsmon
   0.007077    [D2] user_add_action: adding 'fsd' for upsmon
   0.007086    Running as foreground process, not saving a PID file
   0.007091    upsnotify: notify about state 2 with libsystemd: was requested, but not running as a service unit now, will not spam more about it
   0.007098    upsnotify: failed to notify about state 2: no notification tech defined, will not spam more about it
   0.007102    upsnotify: logged the systemd watchdog situation once, will not spam more about it
   0.007108    [D2] mainloop: polling 2 filedescriptors
   0.007145    [D2] mainloop: polling 2 filedescriptors
   0.007172    [D2] mainloop: polling 2 filedescriptors
   0.007198    [D2] mainloop: polling 2 filedescriptors
   0.007211    [D3] UPS [UPS-NAME]: data is NOT STALE now
   0.007216    [D3] UPS [UPS-NAME]: dump is done
   0.007221    [D2] mainloop: polling 2 filedescriptors
   0.235900    [D2] mainloop: polling 2 filedescriptors
   0.466105    [D2] mainloop: polling 2 filedescriptors


$ sudo service nut-server restart
$ sudo service nut-client restart
$ sudo service nut-monitor restart

$ sudo upsc UPS-NAME
Init SSL without certificate database
battery.charge: 0
battery.voltage: 2.28
battery.voltage.high: 78.00
battery.voltage.low: 62.40
battery.voltage.nominal: 72.0
device.type: ups
driver.debug: 0
driver.flag.allow_killpower: 0
driver.name: nutdrv_qx
driver.parameter.pollfreq: 30
driver.parameter.pollinterval: 2
driver.parameter.port: /dev/ttyUSB0
driver.parameter.synchronous: auto
driver.state: quiet
driver.version: 2.8.1
driver.version.data: Megatec 0.07
driver.version.internal: 0.36
driver.version.usb: libusb-1.0.28 (API: 0x100010a)
input.current.nominal: 13.0
input.frequency: 60.0
input.frequency.nominal: 60
input.voltage: 223.7
input.voltage.fault: 222.0
input.voltage.nominal: 220
output.voltage: 219.9
ups.beeper.status: enabled
ups.delay.shutdown: 30
ups.delay.start: 180
ups.firmware: V082B000D0
ups.load: 18
ups.status: OL
ups.temperature: 30.0
ups.type: online

We'll keep monitoring it for a few more days to validate, but I think everything is working as before. Just the battery level reading is wrong now, but this is probably as software/configuration issue, I'll take a look at it now.
I'm just curious whether this is a bug or intended behavior. I noticed that in a new installation of Nut on a server running the same old Debian 12 version, the LISTEN 127.0.0.1 3493 line is present in the default configuration file (maybe I just forgot to copy it).

Thank you everyone for your time!

Best regards,

Felipe Carneiro
 
Last edited: