Simon Wilson
2022-Dec-01 03:14 UTC
[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
----- Message from Bill Gee <bgee at campercaver.net> ---------
Date: Wed, 30 Nov 2022 19:26:46 -0600
From: Bill Gee <bgee at campercaver.net>
Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
To: nut-upsuser at alioth-lists.debian.net
> Hi Simon -
>
> I ran through the steps you gave below. To quote Gilbert&Sullivan
> ... "Modified Rapture!" I suppose I should try a reboot to make
> sure everything starts properly.
Not yet with the reboot. Baby steps... :) you have a driver running
from the service file! Celebrations are in order.
Did you need to add the environment drop-in file? At which step did it work?
> But first, there is a problem with upsc. Also nut-server complains
> that it cannot connect to the device.
Ok, that's next... your comments are wrong way around :) nut-server
not starting is why upsc doesn't give you anything.
>
> /run/nut exists and contains two files.
>
> Here are some outputs:
>
> =====================================> [root at mythtv ~]# journalctl -u
nut-driver at cyberpower.service -f
> Nov 30 19:00:20 mythtv.billgee.local systemd[1]: Starting
> nut-driver at cyberpower.service - Network UPS Tools - device driver
> for NUT device 'cyberpower'...
> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]:
> /usr/lib/tmpfiles.d/nut-client.conf:2: Line references path below
> legacy directory /var/run/, updating /var/run/nut ? /run/nut; please
> update the tmpfiles.d/ drop-in file accordingly.
That line is the "noise" error I mentioned. Edit
/usr/lib/tmpfiles.d/nut-client.conf to read /run/nut, not /var/run/nut
> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]:
> /usr/lib/tmpfiles.d/nut-client.conf:3: Line references path below
> legacy directory /var/run/, updating /var/run/nut ? /run/nut; please
> update the tmpfiles.d/ drop-in file accordingly.
Ditto, although you probably don't need line 3 in the file anyway.
> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> Using subdriver: CyberPower HID 0.6
> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> Network UPS Tools - Generic HID driver 0.47 (2.8.0)
> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> USB communication driver (libusb 1.0) 0.43
> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> cps_adjust_battery_scale: battery readings will be scaled by 2/3
> Nov 30 19:00:21 mythtv.billgee.local usbhid-ups[28769]: Startup successful
> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28691]:
> Network UPS Tools - UPS driver controller 2.8.0
> Nov 30 19:00:21 mythtv.billgee.local systemd[1]: Started
> nut-driver at cyberpower.service - Network UPS Tools - device driver
> for NUT device 'cyberpower'.
>
> [root at mythtv ups]# ll /run/nut
> total 4
> srw-rw---- 1 nut nut 0 Nov 30 19:00 usbhid-ups-cyberpower
> -rw-r--r-- 1 nut nut 6 Nov 30 19:00 usbhid-ups-cyberpower.pid
>
>
> [root at mythtv ups]# systemctl --no-pager --full status nut-server
> ? nut-server.service - Network UPS Tools - power devices information server
> Loaded: loaded (/usr/lib/systemd/system/nut-server.service;
> enabled; preset: disabled)
> Active: active (running) since Wed 2022-11-30 19:06:53 CST; 13min ago
> Main PID: 28918 (upsd)
> Tasks: 1 (limit: 9482)
> Memory: 736.0K
> CPU: 20ms
> CGroup: /system.slice/nut-server.service
> ??28918 /usr/sbin/upsd -F
>
> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: /var/run is
> world readable
> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: /var/run is world
readable
> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Can't connect to
> UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Can't
> connect to UPS [cyberpower] (usbhid-ups-cyberpower): Connection
> refused
> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Running as
> foreground process, not saving a PID file
> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Running as
> foreground process, not saving a PID file
> Nov 30 19:11:53 mythtv.billgee.local nut-server[28918]: Can't
> connect to UPS [cyberpower] (usbhid-ups-cyberpower): Connection
> refused
> Nov 30 19:11:53 mythtv.billgee.local upsd[28918]: Can't connect to
> UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
> Nov 30 19:16:53 mythtv.billgee.local nut-server[28918]: Can't
> connect to UPS [cyberpower] (usbhid-ups-cyberpower): Connection
> refused
> Nov 30 19:16:53 mythtv.billgee.local upsd[28918]: Can't connect to
> UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
>
> [root at mythtv ups]# ps ax | grep ups
> 768 ? Ss 0:00 /usr/sbin/cupsd -l
> 773 ? Ss 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of
> 10-100 startups
> 28769 ? Ss 0:00 /usr/sbin/usbhid-ups -a cyberpower
> 28918 ? Ss 0:00 /usr/sbin/upsd -F
> 28929 pts/1 S+ 0:00 grep --color=auto ups
>
> [root at mythtv ups]# upsc cyberpower at localhost
> Error: Driver not connected
upsc won't work without nut-server running, so this is expected based
on the above failure to start nut-server.
>
>
So... next.
Fix nut-client.conf contents, and make sure that you can start /
restart the driver as needed with no errors. Set
nut-driver at cyberpower.service to enabled for autostart, so with ONLY
the enumerator services and nut-driver at cyberpower.service enabled, you
should see something like the following for 'systemctl list-unit-files
| grep -i nut':
[root at emp80 ups]# systemctl list-unit-files | grep -i nut
nut-driver-enumerator.path enabled
nut-driver-enumerator.service enabled
nut-driver at .service
indirect
nut-monitor.service
disabled
nut-server.service
disabled
nut-driver.target
disabled
nut.target
disabled
Stop any running nut processes, and reboot. On reboot the only thing
that should autostart is nut-driver at cyberpower.service (from the
'indirect' call via nut-driver at .service). upsc will still not work.
Monitor the driver for a while 'journalctl -u
nut-driver at cyberpower.service -f' and make sure it is stable and stays
connected - google searches show some flakiness with some cyberpower
UPSs.
Once you are confident that the driver is reliable, starting OK and
staying up then move on to nut-server.
I'll check in this evening and we can do some more digging on that.
Simon
>
> ==============> Bill Gee
>
> On 11/30/22 07:21, Simon Wilson via Nut-upsuser wrote:
>> Comments inline.
>>
>> ----- Message from Bill Gee <bgee at campercaver.net> ---------
>> ?? Date: Wed, 30 Nov 2022 06:04:14 -0600
>> ?? From: Bill Gee <bgee at campercaver.net>
>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8
upgrade
>> ???? To: nut-upsuser at alioth-lists.debian.net
>>
>>
>>> Hi Simon --
>>>
>>> Yes, I am pretty sure this is the RedHat packaging problem.? I
>>> sure hope they get it squared away.? I have only one system using
>>> nut and that is because all my other systems have APC battery
>>> backup and run apcupsd. Apcupsd may be old, grey and unmaintained,
>>> but it Just Works.
>>>
>>> You mention that the STATEPATH line in upsd.conf will override
>>> other settings.? It does not appear to be the case for me.? The
>>> only way I could get the driver to run was by setting
>>> NUT_STATEPATH on the command line.? Perhaps that is an issue with
>>> the driver and not nut-server?
>>>
>>> In answer to your questions:
>>>
>>> 1) /usr/lib/systemd/system/nut-driver at .service exists.? I have
>>> made no changes to it so far.? Here are the contents,
>>> unfortunately line-wrapped by Thunderbird.
>>>
>>> ===============================>>> [root at mythtv
system]# grep -v '^#' nut-driver at .service
>>> [Unit]
>>> Description=Network UPS Tools - device driver for %I
>>> After=local-fs.target
>>>
>>>
>>> PartOf=nut-driver.target
>>>
>>>
>>> [Service]
>>> EnvironmentFile=-/etc/ups/nut.conf
>>> SyslogIdentifier=%N
>>> ExecStartPre=-/usr/bin/systemd-tmpfiles --create
>>> /usr/lib/tmpfiles.d/nut-client.conf
>>> ExecStart=/bin/sh -c
>>> 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
>>> --get-device-for-service %i`" && [ -n
"$NUTDEV" ] || { echo
>>> "FATAL: Could not find a NUT device section for service unit
%i"
>>> >&2 ; exit 1 ; } ; /usr/sbin/upsdrvctl start
"$NUTDEV"'
>>> ExecStop=/bin/sh -c
>>> 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
>>> --get-device-for-service %i`" && [ -n
"$NUTDEV" ] || { echo
>>> "FATAL: Could not find a NUT device section for service unit
%i"
>>> >&2 ; exit 1 ; } ; /usr/sbin/upsdrvctl stop
"$NUTDEV"'
>>> StartLimitInterval=0
>>> Restart=always
>>> RestartSec=15s
>>> Type=forking
>>>
>>> [Install]
>>> WantedBy=nut-driver.target
>>> ==================================>>
>> OK, so that's the same as mine. It's ExecStartPre task is to
create
>> the pid folder from your answer to the third (unasked) question :)
>> which is that outlined in /usr/lib/tmpfiles.d/nut-client.conf
>>
>> You have /var/run/nut 0770 root nut - so systemd should ensure that
exists.
>>
>> By the way, having it with "/var/run/nut" will trigger a
'noise'
>> error about the "/var" path - change it to just be /run/nut
in
>> nut-client.conf.
>>
>> As a test, what happens if you:
>>
>> - make sure nut.conf has MODE=standalone
>> - make sure ALL nut services are stopped, i.e. 'ps -ax | grep
ups'
>> should give you only the grep process as an answer
>> - delete /run/nut folder (it will get re-created automatically)
>> - take /etc/ups/upsd.conf back to have commented out STATEPATH as
>> distributed in the package
>> - run "systemctl enable nut-driver-enumerator.path
>> nut-driver-enumerator.service --now" - this will enable and start
>> the services that monitor ups.conf for changes and then write the
>> actual driver service file; the second one also runs early in boot
>> and ensures that the service file exists and is correct.
>> - run 'nut-scanner -U' and copy its output into ups.conf
instead of
>> your current definition with name heading [cyberpower], save and
>> exit: this will trigger the above enumerators to run and re-do the
>> nut-driver at cyberpower.service file
>>
>> Based on an out of the box install, you have at this point done
>> enough that the driver should run (*should*!!!!)
>>
>> - run "journalctl -u nut-driver at cyberpower.service -f" in
one
>> terminal while you run "systemctl start
>> nut-driver at cyberpower.service" in another - what does
journalctl
>> output?
>>
>> Assuming it does not start (based on what you have said below),
>> show the messages.
>>
>> If it still does not start as configured above, but you \can/ run
>> /usr/sbin/usbhid-ups with your environment variables specified like
>> you had done before, and it *does* run, then do the following steps
>> to create a systemd drop-in file for the variable, but make the
>> steps use /run/nut instead of /var/run/nut:
>> https://bugzilla.redhat.com/show_bug.cgi?id=2127269#c8? (comment 8,
>> formatted for ease of reading). You want to get back to the
>> RH/Fedora default of using /run/nut, not /var/state/ups
>>
>> ? 1. uncomment the "STATEPATH /var/run/nut" as already
mentioned
>> ? 2. create: /etc/systemd/system/nut-driver at .service.d/environ.conf
>> ?? with these two lines:
>>
>> ??? [Service]
>> ??? Environment=NUT_STATEPATH=/var/run/nut
>>
>> ? 3. and finally do: systemctl daemon-reload
>>
>> ...then try and run systemctl start nut-driver at cyberpower.service
>> again, while monitoring journalctl.
>>
>>
>> If that does not work - then I'm out of ideas at this point lol...
:-D
>>
>> 'set' has nothing BTW on my working system related to nut.
>>
>>>
>>> 2) In /etc/ups/upsd.conf, the original STATEPATH line is
>>>
>>> STATEPATH /var/run/nut
>>>
>>> Right now the original line is commented and I added another line
>>> to point at /var/state/ups.
>>>
>>> 3) You only asked two questions, but I sense a third might be
>>> important.? Originally the system had
>>> /usr/lib/tmpfiles.d/nut-common.conf.? I have modified that file
>>> and no longer have the original.? I copied that file to
>>> nut-client.conf, and both have the same contents:
>>>
>>> ======================>>> # State file (e.g. upsd to
driver) and pidfile location for NUT:
>>> D /var/run/nut 0770 root nut - -
>>> X /var/run/nut
>>> =======================>>>
>>> 4) And one more unasked question!? :-)? When I look at the
>>> environment variables on the system, I see this:
>>>
>>> =======================>>> [root at mythtv tmpfiles.d]#
set | grep -i nut
>>> _=/etc/ups/nut.conf
>>> =======================>>>
>>>
>>>
>>> Bill Gee
>>>
>>> On 11/30/22 01:20, Simon Wilson via Nut-upsuser wrote:
>>>> ----- Message from Bill Gee <bgee at campercaver.net>
---------
>>>> ?? Date: Tue, 29 Nov 2022 19:25:19 -0600
>>>> ?? From: Bill Gee <bgee at campercaver.net>
>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 ->
2.8 upgrade
>>>> ???? To: Jim Klimov <jimklimov+nut at gmail.com>
>>>> ???? Cc: Arnaud Quette via Nut-upsuser
>>>> <nut-upsuser at alioth-lists.debian.net>
>>>>
>>>>
>>>>> I got it to run, but what a mess ...
>>>>>
>>>>> Yes, I am running systemctl daemon-reload and systemctl
restart
>>>>> nut-server after each change I make.
>>>>>
>>>>
>>>> Hi Bill,
>>>>
>>>> Drivers and upsd share defaults (see 'man nutupsdrv').
>>>>
>>>> Your original error message ("writepid: fopen
>>>> /var/run/usbhid-ups-cyberpower.pid: Permission denied")
would
>>>> seem to indicate, same as the Red Hat bug, that your
driver's
>>>> default pid path is /var/run.
>>>>
>>>> The driver by default uses STATEPATH (which can be over-ridden
in
>>>> upsd.conf) to store pid files. The driver .service file is
>>>> supposed to make sure that path exists by running the
>>>> ExecStartPre line, which gets its instructions from the
>>>> referenced ".conf" file from /usr/lib/tmpfiles.d. The
.service
>>>> file then calls 'upsdrvctl start' to start your
usbhid-ups
>>>> driver, as defined in ups.conf. Those all need to align...
>>>>
>>>> 2 x questions:
>>>>
>>>> 1. Without its comments, what are the active lines (as
installed,
>>>> without any changes) in
>>>> /usr/lib/systemd/system/nut-driver at .service (or wherever
that
>>>> service file is located on your system)?
>>>> 2. in your upsd.conf (also as installed, without any changes),
>>>> what is the commented out STATEPATH you later mention
uncommenting?
>>>>
>>>>> I created /usr/lib/tmpfiles.d/nut-client.conf?? The owner
is
>>>>> root:root and permissions are 0644.? The contents are
>>>>>
>>>>> # State file (e.g. upsd to driver) and pidfile location for
NUT:
>>>>> D /var/run/nut 0770 root nut - -
>>>>> X /var/run/nut
>>>>>
>>>>> I uncommented the STATEPATH line in /etc/ups/upsd.conf.
>>>>>
>>>>> I created a directory /var/state/ups, set to 777
permissions.
>>>>> Changed the STATEPATH line in upsd.conf.? No success.
>>>>>
>>>>> I looked at /usr/lib/systemd/system/nut-driver at .service
but
>>>>> could not see any changes to be made.? The bug report at
RedHat
>>>>> mentions that a file identified in ExecStartPre does not
exist,
>>>>> but I could not duplicate.
>>>>>
>>>>> I tried running this as root:
>>>>>
>>>>> NUT_STATEPATH=/var/state/ups NUT_ALTPIDPATH=/var/state/ups
>>>>> /usr/sbin/usbhid-ups -u nut -g nut -s cyberpower -x
port=auto
>>>>>
>>>>> And it works.? I tried it with only one or the other of the
two
>>>>> environment variables, but did not work.? It has to have
both.
>>>>>
>>>>> ==============>>>>> Bill Gee
>>>>>
>>>
>>> _______________________________________________
>>> Nut-upsuser mailing list
>>> Nut-upsuser at alioth-lists.debian.net
>>>
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
>>
>>
>> ----- End message from Bill Gee <bgee at campercaver.net> -----
>>
>>
>>
>
> _______________________________________________
> Nut-upsuser mailing list
> Nut-upsuser at alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
----- End message from Bill Gee <bgee at campercaver.net> -----
--
Simon Wilson
M: 0400 12 11 16
Hi Simon -
I modified /usr/lib/tmpfiles.d/nut-client to use /run instead of
/var/run. I checked the startup status of the nut services.
================[root at mythtv ~]# systemctl list-unit-files | grep -i nut
nut-driver-enumerator.path
enabled disabled
nut-driver-enumerator.service
enabled disabled
nut-driver at .service
indirect disabled
nut-monitor.service
disabled disabled
nut-server.service
enabled disabled
nut-driver.target
disabled disabled
nut.target
disabled disabled
=========================
I did a shutdown/reboot on the system. The usbhid driver loaded without
errors and did not complain about /var/run. /run/nut exists and
contains the expected two files.
nut-server also started since it is set to "enabled", but failed to
connect to the driver. It complains about "no such file or
directory".
What file is it looking for? I ran journalctl on it but got nothing
more than what systemctl status reports.
==========================[root at mythtv ~]# systemctl status nut-driver at
cyberpower
? nut-driver at cyberpower.service - Network UPS Tools - device driver for
NUT device 'cyberpower'
Loaded: loaded (/usr/lib/systemd/system/nut-driver at .service;
enabled; preset: disabled)
Drop-In: /etc/systemd/system/nut-driver at .service.d
??environ.conf
/etc/systemd/system/nut-driver at cyberpower.service.d
??nut-driver-enumerator-generated-checksum.conf,
nut-driver-enumerator-generated.conf
Active: active (running) since Thu 2022-12-01 05:56:04 CST; 9min ago
Process: 712 ExecStartPre=/usr/bin/systemd-tmpfiles --create
/usr/lib/tmpfiles.d/nut-client.conf (code=exited, stat>
Process: 719 ExecStart=/bin/sh -c
NUTDEV="`/usr/libexec/nut-driver-enumerator.sh --get-device-for-service
cyberpowe>
Main PID: 791 (usbhid-ups)
Tasks: 1 (limit: 9482)
Memory: 2.9M
CPU: 113ms
CGroup:
/system.slice/system-nut\x2ddriver.slice/nut-driver at cyberpower.service
??791 /usr/sbin/usbhid-ups -a cyberpower
Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: Using
subdriver: CyberPower HID 0.6
Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: Network
UPS Tools - Generic HID driver 0.47 (2.8.0)
Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: USB
communication driver (libusb 1.0) 0.43
Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]:
cps_adjust_battery_scale: battery readings will be sca>
Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[719]: Network
UPS Tools - UPS driver controller 2.8.0
Dec 01 05:56:04 mythtv.billgee.local usbhid-ups[791]: Startup successful
[root at mythtv ~]# systemctl status nut-server
? nut-server.service - Network UPS Tools - power devices information server
Loaded: loaded (/usr/lib/systemd/system/nut-server.service;
enabled; preset: disabled)
Active: active (running) since Thu 2022-12-01 05:56:07 CST; 9min ago
Main PID: 809 (upsd)
Tasks: 1 (limit: 9482)
Memory: 1000.0K
CPU: 15ms
CGroup: /system.slice/nut-server.service
??809 /usr/sbin/upsd -F
Dec 01 05:56:08 mythtv.billgee.local upsd[809]: listening on ::1 port 3493
Dec 01 05:56:08 mythtv.billgee.local upsd[809]: listening on 127.0.0.1
port 3493
Dec 01 05:56:08 mythtv.billgee.local nut-server[809]: /var/run is world
readable
Dec 01 05:56:08 mythtv.billgee.local nut-server[809]: Can't connect to
UPS [cyberpower] (usbhid-ups-cyberpower): No suc>
Dec 01 05:56:08 mythtv.billgee.local upsd[809]: /var/run is world readable
Dec 01 05:56:08 mythtv.billgee.local upsd[809]: Can't connect to UPS
[cyberpower] (usbhid-ups-cyberpower): No such file>
Dec 01 05:56:10 mythtv.billgee.local nut-server[809]: Running as
foreground process, not saving a PID file
Dec 01 05:56:10 mythtv.billgee.local upsd[809]: Running as foreground
process, not saving a PID file
Dec 01 06:01:08 mythtv.billgee.local nut-server[809]: Can't connect to
UPS [cyberpower] (usbhid-ups-cyberpower): No suc>
Dec 01 06:01:08 mythtv.billgee.local upsd[809]: Can't connect to UPS
[cyberpower] (usbhid-ups-cyberpower): No such file>
===============================
==============Bill Gee
On 11/30/22 21:14, Simon Wilson via Nut-upsuser wrote:> ----- Message from Bill Gee <bgee at campercaver.net> ---------
> ?? Date: Wed, 30 Nov 2022 19:26:46 -0600
> ?? From: Bill Gee <bgee at campercaver.net>
> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
> ???? To: nut-upsuser at alioth-lists.debian.net
>
>
>> Hi Simon -
>>
>> I ran through the steps you gave below.? To quote Gilbert&Sullivan
...
>> "Modified Rapture!"? I suppose I should try a reboot to make
sure
>> everything starts properly.
>
> Not yet with the reboot. Baby steps... :) you have a driver running from
> the service file! Celebrations are in order.
>
> Did you need to add the environment drop-in file? At which step did it
> work?
>
>> But first, there is a problem with upsc. Also nut-server complains
>> that it cannot connect to the device.
>
> Ok, that's next... your comments are wrong way around :) nut-server not
> starting is why upsc doesn't give you anything.
>
>>
>> /run/nut exists and contains two files.
>>
>> Here are some outputs:
>>
>> =====================================>> [root at mythtv ~]#
journalctl -u nut-driver at cyberpower.service -f
>> Nov 30 19:00:20 mythtv.billgee.local systemd[1]: Starting
>> nut-driver at cyberpower.service - Network UPS Tools - device driver
for
>> NUT device 'cyberpower'...
>> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]:
>> /usr/lib/tmpfiles.d/nut-client.conf:2: Line references path below
>> legacy directory /var/run/, updating /var/run/nut ? /run/nut; please
>> update the tmpfiles.d/ drop-in file accordingly.
>
> That line is the "noise" error I mentioned. Edit
> /usr/lib/tmpfiles.d/nut-client.conf to read /run/nut, not /var/run/nut
>
>> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]:
>> /usr/lib/tmpfiles.d/nut-client.conf:3: Line references path below
>> legacy directory /var/run/, updating /var/run/nut ? /run/nut; please
>> update the tmpfiles.d/ drop-in file accordingly.
>
> Ditto, although you probably don't need line 3 in the file anyway.
>
>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
>> Using subdriver: CyberPower HID 0.6
>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
>> Network UPS Tools - Generic HID driver 0.47 (2.8.0)
>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
USB
>> communication driver (libusb 1.0) 0.43
>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
>> cps_adjust_battery_scale: battery readings will be scaled by 2/3
>> Nov 30 19:00:21 mythtv.billgee.local usbhid-ups[28769]: Startup
>> successful
>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28691]:
>> Network UPS Tools - UPS driver controller 2.8.0
>> Nov 30 19:00:21 mythtv.billgee.local systemd[1]: Started
>> nut-driver at cyberpower.service - Network UPS Tools - device driver
for
>> NUT device 'cyberpower'.
>>
>> [root at mythtv ups]# ll /run/nut
>> total 4
>> srw-rw---- 1 nut nut 0 Nov 30 19:00 usbhid-ups-cyberpower
>> -rw-r--r-- 1 nut nut 6 Nov 30 19:00 usbhid-ups-cyberpower.pid
>>
>>
>> [root at mythtv ups]# systemctl --no-pager --full status nut-server
>> ? nut-server.service - Network UPS Tools - power devices information
>> server
>> ???? Loaded: loaded (/usr/lib/systemd/system/nut-server.service;
>> enabled; preset: disabled)
>> ???? Active: active (running) since Wed 2022-11-30 19:06:53 CST; 13min
>> ago
>> ?? Main PID: 28918 (upsd)
>> ????? Tasks: 1 (limit: 9482)
>> ???? Memory: 736.0K
>> ??????? CPU: 20ms
>> ???? CGroup: /system.slice/nut-server.service
>> ???????????? ??28918 /usr/sbin/upsd -F
>>
>> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: /var/run is
>> world readable
>> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: /var/run is world
>> readable
>> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Can't connect to
UPS
>> [cyberpower] (usbhid-ups-cyberpower): Connection refused
>> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Can't
connect
>> to UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
>> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Running as
>> foreground process, not saving a PID file
>> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Running as
>> foreground process, not saving a PID file
>> Nov 30 19:11:53 mythtv.billgee.local nut-server[28918]: Can't
connect
>> to UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
>> Nov 30 19:11:53 mythtv.billgee.local upsd[28918]: Can't connect to
UPS
>> [cyberpower] (usbhid-ups-cyberpower): Connection refused
>> Nov 30 19:16:53 mythtv.billgee.local nut-server[28918]: Can't
connect
>> to UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
>> Nov 30 19:16:53 mythtv.billgee.local upsd[28918]: Can't connect to
UPS
>> [cyberpower] (usbhid-ups-cyberpower): Connection refused
>>
>> [root at mythtv ups]# ps ax | grep ups
>> ??? 768 ???????? Ss???? 0:00 /usr/sbin/cupsd -l
>> ??? 773 ???????? Ss???? 0:00 sshd: /usr/sbin/sshd -D [listener] 0 of
>> 10-100 startups
>> ? 28769 ???????? Ss???? 0:00 /usr/sbin/usbhid-ups -a cyberpower
>> ? 28918 ???????? Ss???? 0:00 /usr/sbin/upsd -F
>> ? 28929 pts/1??? S+???? 0:00 grep --color=auto ups
>>
>> [root at mythtv ups]# upsc cyberpower at localhost
>> Error: Driver not connected
>
> upsc won't work without nut-server running, so this is expected based
on
> the above failure to start nut-server.
>
>>
>>
>
> So... next.
>
> Fix nut-client.conf contents, and make sure that you can start / restart
> the driver as needed with no errors. Set nut-driver at cyberpower.service
> to enabled for autostart, so with ONLY the enumerator services and
> nut-driver at cyberpower.service enabled, you should see something like the
> following for 'systemctl list-unit-files | grep -i nut':
>
> [root at emp80 ups]# systemctl list-unit-files | grep -i nut
> nut-driver-enumerator.path
> enabled
> nut-driver-enumerator.service
> enabled
> nut-driver at .service
> indirect
> nut-monitor.service
> disabled
> nut-server.service
> disabled
> nut-driver.target
> disabled
> nut.target
> disabled
>
> Stop any running nut processes, and reboot. On reboot the only thing
> that should autostart is nut-driver at cyberpower.service (from the
> 'indirect' call via nut-driver at .service). upsc will still not
work.
>
> Monitor the driver for a while 'journalctl -u
> nut-driver at cyberpower.service -f' and make sure it is stable and
stays
> connected - google searches show some flakiness with some cyberpower UPSs.
>
> Once you are confident that the driver is reliable, starting OK and
> staying up then move on to nut-server.
>
> I'll check in this evening and we can do some more digging on that.
>
> Simon
>
>>
>> ==============>> Bill Gee
>>
>> On 11/30/22 07:21, Simon Wilson via Nut-upsuser wrote:
>>> Comments inline.
>>>
>>> ----- Message from Bill Gee <bgee at campercaver.net>
---------
>>> ?? Date: Wed, 30 Nov 2022 06:04:14 -0600
>>> ?? From: Bill Gee <bgee at campercaver.net>
>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8
upgrade
>>> ???? To: nut-upsuser at alioth-lists.debian.net
>>>
>>>
>>>> Hi Simon --
>>>>
>>>> Yes, I am pretty sure this is the RedHat packaging problem.? I
sure
>>>> hope they get it squared away.? I have only one system using
nut and
>>>> that is because all my other systems have APC battery backup
and run
>>>> apcupsd. Apcupsd may be old, grey and unmaintained, but it Just
Works.
>>>>
>>>> You mention that the STATEPATH line in upsd.conf will override
other
>>>> settings.? It does not appear to be the case for me.? The only
way I
>>>> could get the driver to run was by setting NUT_STATEPATH on the
>>>> command line.? Perhaps that is an issue with the driver and not
>>>> nut-server?
>>>>
>>>> In answer to your questions:
>>>>
>>>> 1) /usr/lib/systemd/system/nut-driver at .service exists.? I
have made
>>>> no changes to it so far.? Here are the contents, unfortunately
>>>> line-wrapped by Thunderbird.
>>>>
>>>> ===============================>>>> [root at mythtv
system]# grep -v '^#' nut-driver at .service
>>>> [Unit]
>>>> Description=Network UPS Tools - device driver for %I
>>>> After=local-fs.target
>>>>
>>>>
>>>> PartOf=nut-driver.target
>>>>
>>>>
>>>> [Service]
>>>> EnvironmentFile=-/etc/ups/nut.conf
>>>> SyslogIdentifier=%N
>>>> ExecStartPre=-/usr/bin/systemd-tmpfiles --create
>>>> /usr/lib/tmpfiles.d/nut-client.conf
>>>> ExecStart=/bin/sh -c
'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
>>>> --get-device-for-service %i`" && [ -n
"$NUTDEV" ] || { echo "FATAL:
>>>> Could not find a NUT device section for service unit %i"
>&2 ; exit
>>>> 1 ; } ; /usr/sbin/upsdrvctl start "$NUTDEV"'
>>>> ExecStop=/bin/sh -c
'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
>>>> --get-device-for-service %i`" && [ -n
"$NUTDEV" ] || { echo "FATAL:
>>>> Could not find a NUT device section for service unit %i"
>&2 ; exit
>>>> 1 ; } ; /usr/sbin/upsdrvctl stop "$NUTDEV"'
>>>> StartLimitInterval=0
>>>> Restart=always
>>>> RestartSec=15s
>>>> Type=forking
>>>>
>>>> [Install]
>>>> WantedBy=nut-driver.target
>>>> ==================================>>>
>>> OK, so that's the same as mine. It's ExecStartPre task is
to create
>>> the pid folder from your answer to the third (unasked) question :)
>>> which is that outlined in /usr/lib/tmpfiles.d/nut-client.conf
>>>
>>> You have /var/run/nut 0770 root nut - so systemd should ensure that
>>> exists.
>>>
>>> By the way, having it with "/var/run/nut" will trigger a
'noise'
>>> error about the "/var" path - change it to just be
/run/nut in
>>> nut-client.conf.
>>>
>>> As a test, what happens if you:
>>>
>>> - make sure nut.conf has MODE=standalone
>>> - make sure ALL nut services are stopped, i.e. 'ps -ax | grep
ups'
>>> should give you only the grep process as an answer
>>> - delete /run/nut folder (it will get re-created automatically)
>>> - take /etc/ups/upsd.conf back to have commented out STATEPATH as
>>> distributed in the package
>>> - run "systemctl enable nut-driver-enumerator.path
>>> nut-driver-enumerator.service --now" - this will enable and
start the
>>> services that monitor ups.conf for changes and then write the
actual
>>> driver service file; the second one also runs early in boot and
>>> ensures that the service file exists and is correct.
>>> - run 'nut-scanner -U' and copy its output into ups.conf
instead of
>>> your current definition with name heading [cyberpower], save and
>>> exit: this will trigger the above enumerators to run and re-do the
>>> nut-driver at cyberpower.service file
>>>
>>> Based on an out of the box install, you have at this point done
>>> enough that the driver should run (*should*!!!!)
>>>
>>> - run "journalctl -u nut-driver at cyberpower.service -f"
in one
>>> terminal while you run "systemctl start
>>> nut-driver at cyberpower.service" in another - what does
journalctl output?
>>>
>>> Assuming it does not start (based on what you have said below),
show
>>> the messages.
>>>
>>> If it still does not start as configured above, but you \can/ run
>>> /usr/sbin/usbhid-ups with your environment variables specified like
>>> you had done before, and it *does* run, then do the following steps
>>> to create a systemd drop-in file for the variable, but make the
steps
>>> use /run/nut instead of /var/run/nut:
>>> https://bugzilla.redhat.com/show_bug.cgi?id=2127269#c8? (comment 8,
>>> formatted for ease of reading). You want to get back to the
RH/Fedora
>>> default of using /run/nut, not /var/state/ups
>>>
>>> ? 1. uncomment the "STATEPATH /var/run/nut" as already
mentioned
>>> ? 2. create: /etc/systemd/system/nut-driver at
.service.d/environ.conf
>>> ?? with these two lines:
>>>
>>> ??? [Service]
>>> ??? Environment=NUT_STATEPATH=/var/run/nut
>>>
>>> ? 3. and finally do: systemctl daemon-reload
>>>
>>> ...then try and run systemctl start nut-driver at
cyberpower.service
>>> again, while monitoring journalctl.
>>>
>>>
>>> If that does not work - then I'm out of ideas at this point
lol... :-D
>>>
>>> 'set' has nothing BTW on my working system related to nut.
>>>
>>>>
>>>> 2) In /etc/ups/upsd.conf, the original STATEPATH line is
>>>>
>>>> STATEPATH /var/run/nut
>>>>
>>>> Right now the original line is commented and I added another
line to
>>>> point at /var/state/ups.
>>>>
>>>> 3) You only asked two questions, but I sense a third might be
>>>> important.? Originally the system had
>>>> /usr/lib/tmpfiles.d/nut-common.conf.? I have modified that file
and
>>>> no longer have the original.? I copied that file to
nut-client.conf,
>>>> and both have the same contents:
>>>>
>>>> ======================>>>> # State file (e.g. upsd
to driver) and pidfile location for NUT:
>>>> D /var/run/nut 0770 root nut - -
>>>> X /var/run/nut
>>>> =======================>>>>
>>>> 4) And one more unasked question!? :-)? When I look at the
>>>> environment variables on the system, I see this:
>>>>
>>>> =======================>>>> [root at mythtv
tmpfiles.d]# set | grep -i nut
>>>> _=/etc/ups/nut.conf
>>>> =======================>>>>
>>>>
>>>>
>>>> Bill Gee
>>>>
>>>> On 11/30/22 01:20, Simon Wilson via Nut-upsuser wrote:
>>>>> ----- Message from Bill Gee <bgee at campercaver.net>
---------
>>>>> ?? Date: Tue, 29 Nov 2022 19:25:19 -0600
>>>>> ?? From: Bill Gee <bgee at campercaver.net>
>>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7
-> 2.8
>>>>> upgrade
>>>>> ???? To: Jim Klimov <jimklimov+nut at gmail.com>
>>>>> ???? Cc: Arnaud Quette via Nut-upsuser
>>>>> <nut-upsuser at alioth-lists.debian.net>
>>>>>
>>>>>
>>>>>> I got it to run, but what a mess ...
>>>>>>
>>>>>> Yes, I am running systemctl daemon-reload and systemctl
restart
>>>>>> nut-server after each change I make.
>>>>>>
>>>>>
>>>>> Hi Bill,
>>>>>
>>>>> Drivers and upsd share defaults (see 'man
nutupsdrv').
>>>>>
>>>>> Your original error message ("writepid: fopen
>>>>> /var/run/usbhid-ups-cyberpower.pid: Permission
denied") would seem
>>>>> to indicate, same as the Red Hat bug, that your
driver's default
>>>>> pid path is /var/run.
>>>>>
>>>>> The driver by default uses STATEPATH (which can be
over-ridden in
>>>>> upsd.conf) to store pid files. The driver .service file is
supposed
>>>>> to make sure that path exists by running the ExecStartPre
line,
>>>>> which gets its instructions from the referenced
".conf" file from
>>>>> /usr/lib/tmpfiles.d. The .service file then calls
'upsdrvctl start'
>>>>> to start your usbhid-ups driver, as defined in ups.conf.
Those all
>>>>> need to align...
>>>>>
>>>>> 2 x questions:
>>>>>
>>>>> 1. Without its comments, what are the active lines (as
installed,
>>>>> without any changes) in /usr/lib/systemd/system/nut-driver
at .service
>>>>> (or wherever that service file is located on your system)?
>>>>> 2. in your upsd.conf (also as installed, without any
changes), what
>>>>> is the commented out STATEPATH you later mention
uncommenting?
>>>>>
>>>>>> I created /usr/lib/tmpfiles.d/nut-client.conf?? The
owner is
>>>>>> root:root and permissions are 0644.? The contents are
>>>>>>
>>>>>> # State file (e.g. upsd to driver) and pidfile location
for NUT:
>>>>>> D /var/run/nut 0770 root nut - -
>>>>>> X /var/run/nut
>>>>>>
>>>>>> I uncommented the STATEPATH line in /etc/ups/upsd.conf.
>>>>>>
>>>>>> I created a directory /var/state/ups, set to 777
permissions.
>>>>>> Changed the STATEPATH line in upsd.conf.? No success.
>>>>>>
>>>>>> I looked at /usr/lib/systemd/system/nut-driver at
.service but could
>>>>>> not see any changes to be made.? The bug report at
RedHat mentions
>>>>>> that a file identified in ExecStartPre does not exist,
but I could
>>>>>> not duplicate.
>>>>>>
>>>>>> I tried running this as root:
>>>>>>
>>>>>> NUT_STATEPATH=/var/state/ups
NUT_ALTPIDPATH=/var/state/ups
>>>>>> /usr/sbin/usbhid-ups -u nut -g nut -s cyberpower -x
port=auto
>>>>>>
>>>>>> And it works.? I tried it with only one or the other of
the two
>>>>>> environment variables, but did not work.? It has to
have both.
>>>>>>
>>>>>> ==============>>>>>> Bill Gee
>>>>>>
>>>>
>>>> _______________________________________________
>>>> Nut-upsuser mailing list
>>>> Nut-upsuser at alioth-lists.debian.net
>>>>
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
>>>
>>>
>>> ----- End message from Bill Gee <bgee at campercaver.net>
-----
>>>
>>>
>>>
>>
>> _______________________________________________
>> Nut-upsuser mailing list
>> Nut-upsuser at alioth-lists.debian.net
>> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
>
>
> ----- End message from Bill Gee <bgee at campercaver.net> -----
>
>
>